Stoney
05-01-2012, 11:58 PM
It has been about a month since the last release of Elysion. Version 1.1 is primarily a bug fix and performance release, it still supports FreePascal 2.4.x and Turbo Delphi (possibly Delphi 7 as well).
The most important features are sprite sheet classes (well, you could animate sprite sheets before this change, but this required using a lot of code), which have been designed after Flashpunk's SpriteMap classes, let me give you guys an example:
uses
...
ElysionSpriteSheet,
...
//Declare MySpriteSheet as TelSpriteSheet where you need to use it
// In the constructor of the scene add:
MySpriteSheet := TelSpriteSheet.Create;
MySpriteSheet.LoadFromFile('myspritesheet.png');
MySpriteSheet.FrameSize := makeSize(128, 128);
MySpriteSheet.Frame := 0; //< Sets the frame to zero (This needs to be called if the frame size has been changed)
// The sprite sheet is now loaded and the size of a frame is set to 128x128 pixels.
// Now you only need to play the sprite sheet, for example
// in the Update procedure of a scene or in an event handler callback
MySpriteSheet.Play();
// Plays the complete sprite sheet. The only parameter is an integer which
// is the length of the animation in ms. It's set to 1000 (= 1 s) by default
MySpriteSheet.PlayFrames([0, 3, 5, 7, 11, 17, 23]);
// Plays only those selected frames. The second parameter
// is the length of the animation (set to 1000 by default)
MySpriteSheet.PlayFrames(4, 16);
// Plays all frames from 4 to 16. The third optional parameter
// is the animation's length once more, set to 1000 by default
// Other ways to play a sprite sheet
MySpriteSheet.PlayRow(2, 2000);
// Plays the third row of the sprite sheet (Counting begins at 0)
// with the length of 2s (Second parameter optional)
MySpriteSheet.PlayColumn(3, 4000);
// Plays the forth column of the sprite sheet (Counting begins at 0)
// with the length of 4s (Second parameter optional)
Other changes include some slight performance improvements, improvements to per pixel collision on 64-bit systems, improvements to the texture loader and removed the X11 dependency on Mac OS X.
As always, you can grab the release over on Github (https://github.com/freezedev/elysion). If you are starting out with Elysion, please take a look at the wiki (https://github.com/freezedev/elysion/wiki), especially the Getting Started (https://github.com/freezedev/elysion/wiki/Setting-up-our-development-environment) part.
Direct download link: https://github.com/freezedev/elysion/zipball/V1.1
The full changelog is here:
* Marked intermediate GUI as deprecated (Please use TelNode descendants and add them to other nodes, layers or scenes)
+ Added support for sprite sheets (TelSpriteSheet)
* Fixed an issue where animators don't have their end value when the animation finishes
+ Added WaitUntilFinished property to TelAnimator and TelSpriteSheet (If set to true, the animation cannot be played again until it has been finished)
* Small performance optimizations (#59)
* Saves screenshots and log at working path (#58)
* Fixed an issue where pixel collisions leads to a crash on 64-bit systems (#63)
* Fixed an issue where rounded rectangles are not being drawn (#64)
* Removed X11 linking dependency on Mac OS X
* Updated Vampyre dependency to latest Mercurial version (11-Dec-20)
* TelSize has now Single values instead of Integer
+ Added first draft of pluggable provider system (for graphics, audio, etc.)
* Improved texture loader: Pixel data (for pixel collision) will only be loaded if needed -> Faster loading times
- Removed ResourceMap unit (as it will be renamed and restructured)
- Removed SFont unit due to it being GPL licensed
The most important features are sprite sheet classes (well, you could animate sprite sheets before this change, but this required using a lot of code), which have been designed after Flashpunk's SpriteMap classes, let me give you guys an example:
uses
...
ElysionSpriteSheet,
...
//Declare MySpriteSheet as TelSpriteSheet where you need to use it
// In the constructor of the scene add:
MySpriteSheet := TelSpriteSheet.Create;
MySpriteSheet.LoadFromFile('myspritesheet.png');
MySpriteSheet.FrameSize := makeSize(128, 128);
MySpriteSheet.Frame := 0; //< Sets the frame to zero (This needs to be called if the frame size has been changed)
// The sprite sheet is now loaded and the size of a frame is set to 128x128 pixels.
// Now you only need to play the sprite sheet, for example
// in the Update procedure of a scene or in an event handler callback
MySpriteSheet.Play();
// Plays the complete sprite sheet. The only parameter is an integer which
// is the length of the animation in ms. It's set to 1000 (= 1 s) by default
MySpriteSheet.PlayFrames([0, 3, 5, 7, 11, 17, 23]);
// Plays only those selected frames. The second parameter
// is the length of the animation (set to 1000 by default)
MySpriteSheet.PlayFrames(4, 16);
// Plays all frames from 4 to 16. The third optional parameter
// is the animation's length once more, set to 1000 by default
// Other ways to play a sprite sheet
MySpriteSheet.PlayRow(2, 2000);
// Plays the third row of the sprite sheet (Counting begins at 0)
// with the length of 2s (Second parameter optional)
MySpriteSheet.PlayColumn(3, 4000);
// Plays the forth column of the sprite sheet (Counting begins at 0)
// with the length of 4s (Second parameter optional)
Other changes include some slight performance improvements, improvements to per pixel collision on 64-bit systems, improvements to the texture loader and removed the X11 dependency on Mac OS X.
As always, you can grab the release over on Github (https://github.com/freezedev/elysion). If you are starting out with Elysion, please take a look at the wiki (https://github.com/freezedev/elysion/wiki), especially the Getting Started (https://github.com/freezedev/elysion/wiki/Setting-up-our-development-environment) part.
Direct download link: https://github.com/freezedev/elysion/zipball/V1.1
The full changelog is here:
* Marked intermediate GUI as deprecated (Please use TelNode descendants and add them to other nodes, layers or scenes)
+ Added support for sprite sheets (TelSpriteSheet)
* Fixed an issue where animators don't have their end value when the animation finishes
+ Added WaitUntilFinished property to TelAnimator and TelSpriteSheet (If set to true, the animation cannot be played again until it has been finished)
* Small performance optimizations (#59)
* Saves screenshots and log at working path (#58)
* Fixed an issue where pixel collisions leads to a crash on 64-bit systems (#63)
* Fixed an issue where rounded rectangles are not being drawn (#64)
* Removed X11 linking dependency on Mac OS X
* Updated Vampyre dependency to latest Mercurial version (11-Dec-20)
* TelSize has now Single values instead of Integer
+ Added first draft of pluggable provider system (for graphics, audio, etc.)
* Improved texture loader: Pixel data (for pixel collision) will only be loaded if needed -> Faster loading times
- Removed ResourceMap unit (as it will be renamed and restructured)
- Removed SFont unit due to it being GPL licensed