* Sample.Sprites: Added player rotation support.
* Sample.Sprites: Improved controls.
* Rotating a sprite no longer causes a SEGFAULT.
* Added Center properties to Canvases and Sprites.
* Rewrote the timing routine to be more accurate and more stable.
* The Stopwatch is now used instead of SDL_GetTicks, as the former is
significantly more accurate.
* OS-specific delay routines are now used where possible.
- Currently, only POSIX platforms support this (using nanosleep).
Other platforms will fall back to SDL_Delay.
- Improved the SDL_Delay method to take fractional times into account
as much as possible.
* BREAKING CHANGES:
- Changed SdlWindow's Start() function to use hertz instead of
milliseconds, as that's likely going to be more intuitive for games.
- Changed SdlWindow's VideoUpdateTicks and GameUpdateTicks properties
to be VideoUpdateRate and GameUpdateRate, respectively. These also
reports the rate in hertz rather than milliseconds.
- The game loop now passes a float (delta) to OnUpdate to indicate the
expected amount of time that has passed between update calls.
* Updated the sample projects to accommodate the aforementioned breaking
changes. :)
* An arbitrary number of background layers can now be created and deleted
using AddLayer and RemoveLayer.
* The SdlWindow's Background object now points to Layer 0, which cannot be
deleted. This should ensure that no code has been broken by this.
* A basic sample project has been added to demonstrate this new feature.
* Sprites now use world space coordinates by default. This behavior can be
changed using the CoordinateSystem property.
* Exposed effective size (sprite size with scaling) and drawn size
properties to the Sprite object.
* Added a CameraView rectangle to the SdlWindow to control what is shown in
the world space view.
* Added some arithmetic functions to the Vector2<T> class.
* Sample.Sprites: Rewrote the view windowing code. It actually works
correctly now. :)
* Sample.Sprites: Changed player movement code so that they can no longer
fly off the edges of the screen.
* Updated NuGet package information.
* Canvases can now be color shifted and made translucent.
* Added missing XMLDocs.
* Added a function to restore the GetCanvasPointer function pointer
to its default value if the application decides to hand control of
the pixel array back to the Canvas.
* Canvas objects now support a few different blending modes.
* Canvas.HasTexture now has a private setter.
* Updated, corrected, and filled in missing XMLDocs.
* Added some "fancy" alpha blending stuff in Sample.Sprites.
* Removed System.Numerics.Vectors dependency. Implemented basic
Vector2<T> type to replace it.
* ScalingQuality can now be changed for each canvas independently,
as well as for the rendering target texture.
* Point type is now based on the new Vector2<T> generic.
* GetCanvasPointer() is now a Canvas function pointer. This is a
breaking change, but it should allow any Canvas-derived object
to be fed an arbitrary ARGB surface if the implementer chooses
to take that approach.
* Canvas and Sprite textures are created in a more consistent way.
* The background Canvas now uses the same functions that Sprites
use for texture creation and updates.
* Added a public UpdateTexture() function so that implementers can
manually update sprites if necessary. This should not be used
too often as it can lead to performance issues.
* The SpriteList now initializes Sprites using the stanard Canvas
initialization routines.
* Implemented two moveable "players" in Sample.Sprites.
* Sprites can actually be drawn! Alpha and blending modes are not
supported at the moment.
* Background canvas is now decoupled from the window. It can now be
sized independently of the window.
* Canvases/Sprites now have their own textures that must be
initialized with the renderer prior to them being used. This is
all handled by DotSDL.
* A SpriteList class has been created to maintain collections of
Sprites, replacing the old List<Sprite> system. This was required
to ensure that the Sprite textures are properly allocated and
freed during creation/destruction.
* Background clipping now functions as expected. The background
Canvas can now be cropped and scrolled at will.
* Background rendering has changed from directly blitting the canvas
onto a texture to using an intermediate target texture.
* Updated the Sample.Sprites project to test/demonstrate the new
Canvas features. Project is still incomplete.
* The SdlWindow canvas is now exposed as the Background property.
* OnDraw is no longer tied to GetCanvasPointer() and is now called
directly by BaseDraw before drawing starts.
* OnDraw no longer passes a ref to the background, since that's
always available now. Applications that use DotSDL will have to
be modified to accommodate this.
* The background of the window can now be resized and its clipping
rectangle can be changed (though it's not currently used in the
draw routine.
* Sample projects have been updated to accomodate the changes.
* Sprite drawing has been implemented but is still untested.
* The SdlPoint/SdlRect objects in the Point/Rectangle classes
are now exposed to DotSDL for plotting purposes.
* Added some rotation center support (not fully realized).
* Sprites can now be initialized with the clipping rectangle.
* Removed RenderFlip in favor of DotSDL's FlipDirection. The
enums were were effective identical.
* Started working on Sample.Sprites.
* Replaced homegrown Vector2 class with the accelerated one from
System.Numerics.
* Added new Sprite initializers to take advantage of the new
ZOrder field. Changed Point data types to Vector2 where
appropriate.
* Began working on a Sprites sample project.
* The power state is currently exposed via a property. Events
(firing on state changes, alarms at certain percentages, etc)
will come later.
* A simple sample project (only outputs to console so far) is
included.
* .NET Framework sample projects have been removed, as they were
causing issues in Linux.
* .NET Framework samples replaced with .NET Core equivalents.
* Projects now target either .NET Standard 2.0 or .NET Core 2.0.
* Library name was trimmed down to appease .NET Core's native
library loader.
* Library and new sample projects were successfully tested in
Gentoo Linux under .NET Core 2.0.