New Alpha, New Features – blend factor, playback speed and more!

A lot of work has been done since the last update in March and most of it wasn’t directly related to the editor it was more with the TimelineFX library (available here on github). I really wanted a better solution for how effects are updated and drawn. The way that I was doing it was that you have a particle manager, and to this you add all effects, which then spawn all the particles and these are all updated by the particle manager. The problem with this is that all the particles are basically mashed together in the order that they’re drawn, so if you wanted to group the particles together by the effect that spawned them in order to choose which effects to draw, the order in which you want to draw effects, whether you want to draw or update the effect at all (because maybe it’s off screen) you couldn’t do that easily at all.

I’ve now replaced this with a system where each effect is its own particle manager that you can decide when to draw and update as you need. This should work out to be more optimised as well as emitters maintain their own list of particles to update and sprites are generated and maintained in the root effect so to draw them you just need to loop through the list of sprites in the effect. Still lots of improvements to be made but it’s much better then it was.

The editor also got some cool new updates:

Additive and Alpha Blend modes removed and replace with new Blendfactor graph

Timelinefx now makes full use of pre-multiplied alpha by using a Blendfactor graph instead of the normal additive/alpha blend options on the properties tab. What this means is that you can now transition from an additive blend into an alpha blend – great for fire into smoke effects. Controlling the opacity of a particle is now done entirely with the intensity graph. Check out the Fire Trail effect in the LibraryExamples.tfx file in the alpha as an example.

Adjust playback speed on the animation tab

This has been requested too many times but it’s finally in there now! Sometimes you want to be able to fit an animation into a shorter number of frames and now you can by adjusting the playback speed on the animation tab settings. Lower numbers result in a faster playback which means the animation finishes sooner/runs faster. Obviously the opposite is true for higher numbers.

QoL – Draw animation in masked magenta when moving/scaling

As in the screen shot above, there is also the option “Draw Masked When Moving/Scaling”. This just draws the effect in bright magenta whenever you move or scale the effect so you can clearly see how the effect is fitting into the frame.

Here’s the full list of changes in this update:

* Fixed bug with grid emission
* Tweaked noise algorithm for better looking results
* Fixed crash after import shape after clear unused shapes was used
* Animation frame offset now saves properly
* Opacity now set properly when the particle spawns
* Emitter size changes now update the preview as you change it
* Copying a sub effect to the library now properly clones the Global attribute graphs
* Deleting emitters now selects the next emitter in the list after deleting
* Default shape should no longer be saved with the library
* Fixed bug with only playing selected emitter
* Sub effects should no longer timeout when they shouldn’t
* Preset gradients now work properly with brightness values over 1
* Fixed bug where deleting emitters would not record it in the history so you couldn’t undo the delete.
* Removed blend modes. You now have Blendfactor as an Overtime Attribute. Values closer to 0 result in an additive blend, and values closer to 1 result in an alpha blend.
* Improved the quality of exported sprite sheets and fixed an issue with intensity values over 1.
* Added new Delay Spawning property for emitters so it’s much easier to delay when an emitter starts to spawn particles
* Added new playback speed property to animations so that you can now (finally!) make an effect play quick to fit it into fewer frames.
* Added option on animation tab to draw the effect in magenta to make it much easier to see how to fit the effect in the frame.
* Added multipliers to make it a bit easier to resize the animation frame.
* Added limit to the total size of a sprite sheet (currently 4096×4096).

Download the latest alpha version here!

What’s next?

So other then the usual bug fixes and improvements I’m very seriously considering adding a “z” factor and enable 3d effects where particles can travel in the z plain. I do get this requested a lot even if just for effects in isometric games and it really would be a big addition to TimelineFX so that will probably be a lot of what I work on over the next month or two. Lots of other things I’m considering as well but one thing at a time! Watch this space…