Version 0.2.1
AgateLib 0.2.1 Release Notes
======================================
AgateLib applications should run under Linux now. I have successfully tested them using the Mono VMWare SuSE image on my computer. Unfortunately, this is the limit to my ability to test on Linux at the moment. The serious development of an OpenGL driver is postponed until the next version of Tao, so hardware support under Linux will not be available until then. Windows platform-specific P/Invoke methods have been moved to the AgateWindows.dll assembly. This was required for Linux support. Using AgateWindows.dll should provide a speed-up and greater memory efficiency by providing access to PeekMessage and high-resolution timers. This benefit may be negligible; more testing needs to be done. The source code has been restructured a bit.
In the version 0.2.2 the System.Drawing replacement structures Color, Point, PointF, Rectangle, RectangleF, Size, SizeF will be moved to the ERY.AgateLib.Geometry namespace. You can prepare for this by adding a using statement for this namespace now. This change will help prevent naming conflicts which occur when mixing Windows.Forms components with AgateLib. This should not be an issue for game applications, but it is an issue for tools. The resource classes ResourceManager and Resource have been moved to the ERY.AgateLib.Resources namespace. Display.DeltaTime will now never return zero, so it's safe to divide by it. However, due to the nature of this hack, if a high resolution platform-dependent timer is unavailable (such as the one in AgateWindows), this will cap your framerate at whatever the resolution of System.Environment.GetTickCount() is. On my test machine, this is 64 fps.
Known Issues:
* No hardware acceleration support in Mono.
* Playing .mid files as music won't play more than one. In the future, the implementation will probably switch to FMOD instead of DirectX.AudioVideoPlayback.
Changes:
* Restructured storage for registered drivers in Registrar class to allow easier addition of new types of drivers.
* Added platform specific drivers to provide P/Invoke methods to increase speed and memory efficiency.
* Agate applications should run under Linux with a proper Mono installation now.
* Added debug messages when non-cross-platform paths are used, in particular when the backslash (\) is used as a path separator.
* Organized some of the source code in different directories.
* Registrar.Initialize is now internal instead of public. If you are calling it, use Core.Initialize instead.
* Added a hack to make sure the Display.DeltaTime never returns zero.
* Fixed a Sprite bug where if a Clone'd sprite was Dispose'd, the shared surface data would also be disposed. Now SpriteFrames are reference counted to resolve this.
* Fixed a bug in Sound and Music objects where they might not respond to StopAllSounds/Music.