TimelineFX Alpha Version

Latest Update Alpha 25d (26.03.2024): New Insights and Author Notes + Mac Version. C++ library is now available on (not for use yet, still under heavy development!) github here!

Mac version: Open the dmg file that you download from here and drag the TFXEditor into the Applications folder. When you run the app it will create a TFXEditor folder in your users folder that contains some sample effects files to play with.

If you would like to contribute to the development of TimelineFX then please donate, all donations greatly received and 100% go towards development of TimelineFX, just click the donate button below, Thank You!

See the latest changes below for all changes!

Complete rewrite of the TimelineFX Editor is now available with this Alpha Version

TimelineFX is now 3D! (2D still an option though)

This new rewrite will eventually replace the old version, but currently this alpha is still in heavy development. Despite that, it has surpassed the previous version with new features including the ability to create 3D effects as well as 2d effects.

Some initial main differences in this new version:

  • 3D effects can now be created. Just toggle 3d flag under effect options.
  • 3D effects have added pitch, yaw and roll for effect/emitter angles and emission angle too.
  • Area emitters in 3D now have depth options.
  • 3D sprites are billboards that can either face the camera at all times or have free alignment. They can also align towards motion, initial emission or align with the emitter angle.
  • Particles can optionally be ordered by distance to camera.
  • Emission type (area, line, ellipse or point) are now per emitter. Before they were per effect. This change makes it much easier to have different emission types in the same effect.
  • UI is fully dockable and resizable allowing you to re-arrange the layout as you wish.
  • For users on high DPI monitors, you’ll find font scaling under Settings > Font Scale
  • Importing shapes with more than one frame of animation is a lot more intuitive
  • Editing the first node on the graph is much easier now as they can be changed using a Drag widget. Easier if you only need to change that rather than have to go into the graph to do so.
  • The Shapes tab works a lot better with animated shapes showing all the frames as you hover over them.
  • Particles draw a lot more efficiently then before, but there’s still lots of optimising to do here.
  • There’s a new Intensity attribute, allowing for easy vibrant particles. It works like a Multiple x2 blend mode except that the multiple is variable and you can change the intensity overtime.
  • Improved background settings for the preview window.
  • Much improved seamless texture preview.
  • Now uses Simplex Noise algoritm for much better motion randomness effects
  • Blend modes are now an overtime attribute you can use a graph (Blendfactor) to control. Values on the graph that are closer to 0 result in an additive blend and values closer to 1 result in an alpha blend. Instead of Opacity graph you now have Intensity instead which allows you to go over 1 resulting in brighter colours. Values closer to 0 fade the particle out.
  • Added new Delay Spawning property for emitters so it’s much easier to delay when an emitter starts to spawn particle
  • 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.

The original version is still for sale as it helps support development for the new version, and it will remain the more stable version for now, plus it also has a lot for effects available – the new version will not be able to load old effects files as they’re incompatible (I may do some kind of converter in the future). The new version will be free and instead I’ll be selling premium effects packs (there will be free effects also available still!) of which I’ll be offering discounts to anyone who purchased the original version.

This version is currently Windows only. Mac will come at a later date but isn’t a priority just yet.

Please give this version a test and let us know any bugs or other issues you find on the forums, or email alpha@rigzsoft.co.uk

Current version: Alpha 25d. For the latest changes see below. Installation instructions: Download the zip file, and extract somewhere suitable on your PC/Mac. Then simply run TFXEdtior.exe/app.

Latest Changes

What’s new in TimelineFX Editor Alpha version?
* Added new insights tab which is an autogenerated documentation for each effect and emitter.
* Added new author notes tab where the author of effects can add their own notes about each effect and emitter.
* Fixed issue when single loop amount is > 1 and the sprite data tab is used. The emitter was being expired too early before particles had actually finished.
* Centering of the the emitter handles for cylinder emission types works correctly now.
* Billboard option now showing properly on drop down.
* Effects now reset properly when changing some properties.
* Image pop up with shapes now wider with more columns.

* Fixed a render crash on some nvidia cards that run on Vendor drivers provided by Dell.

* New help section with documentation on how to use all parts of the editor.
* Added an about popup when the editor is started.
* Slightly increase the default font size and added more font scaling options.
* Fixed some potential rendering issues with the GUI on AMD cards
* Added button to access emitter size graph from the emission type property section.
* Align to Vector no longer shows if Free Align or Align to Camera is selected.
* Fixed an issue with noise and 2d emitters.
* Fixed issues with previewing history when the versions alternate between 2d and 3d effect types.
* Fixed a bug on graphs when a node is deleted that has a curve on the next node.
* Fixed tooltip text for size attribute.
* Removed the zoom options from the settings menu, they can just be accessed on the preview tab.
* Removed the optimisation settings as they’re not really relevant any more.
* Draw outlines work again.
* Fixed issues with sprite data when emitters are on other layers.
* Recording rate on sprite data tab works as intended again.

* Reworked effect and emitter properties and attributes so that they are now all in one place, easier to navigate and also searchable by keyword.
* You can now click and drag these new groups and sections of previews for more easy copying certain properties between effects and emitters.
* Fixed a crash with large sub emitters
* Fixed a crash when the attributes window was squeezed too small
* You can add a variation amount to apply to single spawn particles
* You can now hold shift and uniformly resize an emitter area with the resize button.
* Updated the tooltips for sizes.
* Camera movement in 3d is more smoother now when strafing.
* Fixed the handle position for 3d and fixed the button that sets the handle to the centre position.
* Internally removed references to global frame rate.
* Fixed a crash when trying to click drag a global effect to itself.
* You can now click an OK button to dismiss notifications.
* Added a bold font to make titles stand out more clearly.
* Pasting text in an input box with CTRL + V no longer also pastes an effect or emitter if there’s one in the clipboard.
* Built with the latest version of Dear ImGui.
* Fixed an issue with particle stretch when sprite data is looped.
* Fixed a crash when switching an effect to 2d while the sprite data tab is open.

* Much more stability with multithreading when loading effects
* Fixed a crash when matching frame length to loop length
* Fixed issues when trying to draw in age order for 3d effects
* Sprite data camera which shares the same camera as the preview tab, now updates if you manually adjust the camera settings.
* Fixed issues when trying to tab between angle drag floats.
* Fixed an issue where the initial position of the sprite data instance was wrong.
* Sprite data tab no updates properly if the tab size changes.
* Modal windows should all now be properly centred in the window.
* Import window now gets it’s focus set when importing.
* Fixed crash when selecting the sprite data tab while trying to preview an import effect.
* Fixed issue with sprite shapes drawing incorrectly on the sprite tab.
* Sprite tab now has it’s bounding boxes calculated for each frame. This data is exported as well.
* Editor and library now compile with GCC/Clang compilers as well, so it’s actually building on Mac now.

* Crash fix for AMD cards since the refactor of the renderer
* Re-enabled SSE, it was unintentionally left on AVX so older machines would have not been able to run it.
* Better memory pool management for images on the GPU.

* Optimisations made to the library so that more speed gained from multithreaded processing.
* Memory allocator added to to library for much cleaner memory management (huge reduction in mallocs).
* Fixed frame size issues on the animation tab.
* Fixed some issues with deleting nodes on the graphs.
* Fixed a crash when changing single/amount properties with the sprite data tab open.
* Fixed a bug with changing sync refresh rate and view ports becoming distorted.
* Amount spawned is more accurate now when delta update time option is set.
* You can now move the effect position on the sprite data tab when no interpolation option is set.
* 2d zoom amount now applies to the sprite data tab.
* Seamless animation is now fixed for any effects that had stretched particles.
* Better handling for fixed update when the FPS becomes very low.
* Fixed crash when loading a library with the animation or sprite data tab open.
* Fixed masked drawing on the sprite sheet tab where the wrong shapes were being drawn.
* Checkered background will no longer draw on the animation tab if it’s not set in the options.
* The zoom and pan buttons on the graph work a lot better now.
* Improved how curve nodes on graphs get clamped to the edges of the graph.

* This build of TimelineFX includes a rewrite of the render used to render the editor: Zest Pocket Renderer
* Fixed issue with single spawn amount not spawning enough particles.
* Update mode wasn’t saving properly in the config.
* Fixed floor height not being adjustable for 3d effects.
* Use background image working more effectively now.
* Background image scale y now saves properly to the configuration file.
* You can now alter the tint of the background image separately to the checkered/empty background colour.
* Preset effect previews have a fixed background colour separate to the preview tab background colour.
* Effects with a single loop amount above 1 now interpolate smoothly when the particle age gets reset back to 0.
* Graphs that are greyed have a more clearer tool tip describing why they’re greyed out.
* New effect libraries are no longer dirty by default so the save confirmation won’t pop up anymore unless you actually make changes.
* Controlling the 3d camera view is now a lot smoother.
* New mouse sensitivity setting for controlling the camera in 3d, in the camera settings of the preview tabs.

* New sprite data tab that lets you setup effects to export the sprite data for playback directly using either CPU or GPU interpolation (via a compute shader)
* Big optimisation in the library for how ordered particles are managed.
* Fixed some bugs around how memory is managed.
* Layer property now has +/- signs for a bit more usability
* New button to auto set the spawn amount based on area grid sizes
* Library has much better consolidated code so 2d and 3d functions can be updated by the same function where possible.
* Refresh button on sprite tabs now greyed out if there’s nothing to update.
* Fixed a crash after deleting a sub effect in some situations.
* Set a maximum on the number of frames allowed for a particle shape (256)
* Solved an issue with particles not interpolating correctly when traversing a line and wrapping to the start of the line in loop mode.
* Removed offset into frame option when camera is in isometric mode.
* Added option on sprite tabs to match the frame length to the loop length of the effect or emitter (whichever is highest).
* Fixed some issues around shapes and also improved how the default shape is handled: If the default shape is not used in any emitters then it’s not included in the save file, otherwise it is.
* Added a small icon next to the colour ramp that shows how the colour will animate overtime.
* The actual name of the shape used is displayed in the properties instead of default shape.
* Added a new Update mode which will match the refresh rate and basically update using delta time rather then fixed step. Known issue: amount spawned is currently incorrect for this mode.
* Fixed some rendering validation issues on the sprite sheet tab.
* Z value of emitter and effect handles now display on the history tab.
* Fixed bug when undoing the deletion of sub emitters/effects.

* Under the hood optimisations made in the TimelineFX library, SIMD is now fully utilised to update particles.
* Fixed positioning an effect on the animation tab in 3d with the mouse pointer.
* Camera pop up options on preview tab no longer closes when an effect expires.
* Added options to always draw the effect masked on animation tab.
* New option on animation tab to auto set the length of the effect if the effect is finite.
* Fixed issues from having the animation and preview tab visible at the same time.
* Pausing shows a notification to make it more obvious when that the preview tab is actually paused when no particles are showing.
* Fixed issues with animation seed not being deterministic because of multithreading.
* Added new auto play option to replay the effect as soon as the number of particles reaches 0.
* Improved how multithreading handles the work queue from getting filled up.
* Changing the frame rate now updates the preview effect immediately.
* Graphs now maintains focus when previous history is reverted.
* Cancelling save as no longer incorrectly shows the saved message.
* Relative position is now auto set when traverse line is set to true.
* Camera settings for orthographic are now separate.
* Fixed a bug relating to minimising the App.
* Fixed crash when pressing right/left cursor button and no effect is selected.
* Velocity is now properly updated at spawn for smoother trajectories.
* Cloning and pasting now inserts effect directly below the current effect you have selected.
* Renamed shape animation frame rate to frames per second so it’s a bit clearer.
* Add texture filtering as a new option in the settings menu.
* Changing emitter transform graphs now create history.
* When adding an emitter or sub effect to an emitter or effect, only the relevant presets (2d or 3d) will be accessible so it’s a bit easier to navigate.
* Curve nodes are now clamped to the graph edge when moving a node.
* Fixed stability issues when loading a library in a separate thread.
* Changed the way stretch works in 2d similar to the way it does in 3d. Essentially it now doesn’t matter what the angle of the sprite is, the stretch will be applied indepentantly.
* Changed how weight attribute works. Rather then store weight acceleration as a variable frame by frame where if the weight overtime graph was set to 1 it would just keep adding how heavy a particle is each frame, it now takes the value on the graph and apply the weight linearly. So now if you want the particles to accelerate downwards overtime such create a graph that curves overtime (such as the circle ascend preset). Example effects have been updated to take into account this change.

* Global amount now scales emitter amounts as it should.
* Spawn randomly now works properly with grids.
* Fixed some issues with translation graphs.
* Fixed a crash when importing old eff files.
* Fixed some bad values in properties after importing eff files.
* Loop count is now ignored for single particle emitters.
* Added a base noise offset property to the effect options.
* Fixed a crash when aligning to vector.
* Velocity adjuster now affects noise turbulence.
* Can no longer inadvertently pause when renaming effects and emitters.
* Animation playback no longer speeds up after having a file dialog open.
* Preset preview now shows properly after deleting shapes.
* Fixed the aspect ratio of shape thumbnails on the shapes tab.
* Added a way to copy and paste emitter properties between each other.
* Changing the image handle now updates preview as you do it.
* 3d preset noise in preview now working again.
* Fixed an issue with particles spawning out of place on relative line emitters that move about a lot.
* Changing line edge traversal properties now updates preview properly.
* Added some image property details to the shape thumbnail tooltip.
* The shape icons in the treeview now have the correct aspect ratio.
* History now has correct entry when changing the emitter layer property.

* TimelineFX library got a big optimisation update including multithreading.
* On the first run of TimelineFX the number of threads to use will be based on the total cores available.
* Angle transform graphs now named properly.
* Multiple crash bugs fixed.
* Added over 165 tests for every feature of TimelineFX to help catch bugs and improve stability for all future versions of TimelineFX.
* Added string for history when changing align to camera and vector.
* Matching the end node to start value on the graphs now correctly adjusts the curve as well
* Changed the icon for Effect Properties
* Opacity Graph renamed to Blendfactor
* Improved UX for changing emitters when the graph tab is open.
* Added some tooltips for the tool bar options on the Animation Tab.
* Fixed issue when saving and animation to multiple files and the file path has more then 1 “.”.
* Adding a sub effect no longer converts to 3d when it shouldn’t.

* Fixed a crash bug when trying to edit the new transform angle graphs.

* Added translation graphs for emitters and effects so that you can move and offset the effects/emitters overtime
* Some graphs that have x, y and z values (translation, roll/pitch/yaw, sizes) now let you edit all 3 at the same time on one graph.
* Organised the attributes lists for effects and emitters so it’s a bit clearer and added transform graphs into their own lists.
* Renamed Global Attributes to Effect Attributes
* Updated preset effects with the new emission types.
* Fixed a crash when preview tab is resized to 0.
* Fixed an issue when inserting a node onto the graph which has a lot of nodes.
* Right mouse camera look now only works when the preview window is hovered.
* Fixed an issue with looped emitters where particles were disappearing.
* Fixed a crash when cloning an emitter inside a folder.
* Add “Match value to first node” option to the graph node context menu.
* Added bounding box for icosphere emitters for drawing outlines.
* Outlines are no longer drawn when an emitter has no particles.
* Fixed a couple of crash bugs relating to restoring deleted effects.
* Fixed bug when exiting the program and clicking close window would leave it unresponsive.
* Improve style of some buttons that were missed in the last update.
* Shapes tab arranges shapes into rows more effectively now.

* Added new emission types: Isoshpere and Cylinder.
* Added a hue adjuster that lets you adjust the hue of the whole effect or just individual emitters.
* Added a .eff file converter so that files from the old version of TimelineFX can now be loaded.
* Added grid spawn random, to spawn particles randomly on a grid for area, ellipse, cylinder and isosphere emission types.
* New option for area effects to allow open ended areas.
* Fixed a spawning when spawning on a grid in clockwise/anti clockwise directions.
* Fixed the loading dialogue box being in the top left of the window.
* Fixed issue with seamless wrapping when recording extra frames.
* History for area effect emission types now has x,y and y in the label.
* Added button that allows you to set the emitter offset to the center (when center is not checked).
* Arrow keys no longer navigate effects when an input dialog has focus.
* Fixed angle settings show Align to Camera twice.
* Converting to 3d now resets the animation position.
* Improved the look of some buttons.
* Initial values of random/specify angle options pitch and yaw now set.
* Fixed alignment issue in 3d when x and y coordinates are 0.
* Fixed alignment issue in 3d with align with initial emission and the emitter has been rotated.
* Fixed issue with inward emission direction for 2d effects.
* Crash fix caused when default shape is not in shape list.
* Fixed issue with initial velocity being incorrect at spawn.
* Status bar now properly shows the name of effect when previewing an imported effect library effect.
* .tfx_r (recovery files) no longer show in the recently opened list.

* Dear ImGui library was updated to the latest version to keep with the times.
* Added preset layouts which you can find under Settings > Layouts
* Improved the way windows resize when the application window changes size.
* If the animation window and the preview are both in view at the same time only the one that has focus will update.

* Large refactor and optimisations of the way particles are updated.
* A lot of various crash bug fixes.
* Each effect now has it’s own preview camera settings in 3D.
* Isometric view now saves properly on animation tab.
* Fixed some bugs relating to converting effects and emitters from 2d to 3d.
* Fixed more issues relating to timing.
* File now marked as unsaved when dragging the emitter size.
* Arrow library navigation now back at the proper sensitivity.
* Changed traverse edge to traverse line.
* Clicking mouse in isometric mode now places effect that the correct place.
* Added order by age effect property. There is now Order by age, depth or unordered if none are selected.
* Fixed crash when saving a file that has no path.
* More optimised memory usage.
* Previewing an import effect has a default camera applied in 3d.
* Fixed some issues with auto-playing effect in some edge cases.
* Fixed issues when changing sync refresh rate – may still be some issues though.
* History now added when pasting a sub effect.
* History now added when selecting a colour preset.
* Fixed S curve graph preset when applying to any graph that isn’t overtime.
* Fixed issues when adding a 2d emitter to a 3d effect.
* Non uniform emitters should work properly now.

* Fixed a number of crash bugs.
* 3D effects now possible. Added a large number of new effect, emitter properties and attributes.
* New camera options for 3D in both preview and animation tab.
* Much improved spawn calculation so that particles spawn and position more consistantly overtime.
* Emitters that are set to relative position and line traversal emitters will position spawned particles correctly when interpolating between the emitter’s last position.
* Graphs now properly compile after being pasted.
* Space bar now kills the preview effect.
* Some drag float widgets that were not taking manually entered figures will work now.
* Render interpolation is much smoother now.
* Preset effects have been updated for new features.
* Record extra frames options is now hidden if loop animation is not selected.
* Draw outlines is now an option if you need to see area line and ellipse extents.
* Added zoom slider to preview camera options for 2d effects.
* Global opacity should actually do something now.
* Window size and layout is remembered more reliably now.
* Loop maker on graph no longer shows on effect graphs if only emitter has a loop.
* Effect loop lenght no longer show decimal places.
* The image handle ring under shape properties no longer shows through other tabs that are rendered on top.
* Starting a new import when the import window is already open will no longer crash.
* Amount variation if more random now.
* Animation tab playback will now play at the correct speed depending on the current update rate under settings.

* 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).

* Removed the effect list in a child window for now.
* Fixed a vulkan validation issue relating to the animation tab
* Fixed issue with effect libraries that contained imported effects.
* Improved how velocity makes particles align when they have Align selected in properties.
* Added new Emission angle type on the properties tab. This will make the particle align on emission only and not stay aligned as the particle changes direction thereafter.
* Put emitter size onto the emitter tab for easier access. You can still change the emitter size overtime using the graphs under attributes.
* Moved option to only play the selected emitter onto the Settings menu.
* Setting that changes the updates per second now works correctly.
* When loop length has a value on the properties tab it will now make the sine/square wave generator set it’s width to that length.
* Global zoom attribute now works a lot better and also renamed it to Overal Scale.
* Replaced the current motion randomness algorithm with Simplex Noise algorithm. This means there are additional attributes available – Noise Offset, Noise Resolution, Velocity Turbulance and Direction Turbulance.
* Option to sync refresh rate now properly applies on start up according to whatever setting was saved last.

* Fixed some issues with auto fitting animations on the animation tab for frame sizes that are not square.
* Effect list now in a child window so that the filter doesn’t scroll with the effects.
* Removed the Show Emitter Positions setting which wasn’t helping much.
* Emitter offsets on the properties tab will reflect immediately after updating.
* Fixed a bug when curve is enabled for a node on the graph, the commit in the history tab would have the incorrect initial curve positions.
* Added extra note about the save state of the effect library on the tab tool tip.

* Fixed a bug with the shape pop up on the properties tab when there were few shapes to view.
* Fixed a bug when deleting shapes would sometimes make them save incorrectly.
* Fixed a bug when importing animated shapes that are not powers of 2.
* Implemented an effect library importer – allows you to import all, or click an drag individual effects, folders and emitters. You can also import shapes individually as well.
* Left curve of the first node on a graph is now hidden.
* Fixed a bug causing libraries not to save properly after using remove unused shapes.
* Fixed a crash bug in the renderer to do with memory alignment, possibly only affecting older GPUs.

* Fixed an issue with the animation tab where the edge in the preview would bleed to the other side at certain zoom levels.
* Change the spin overtime attribute to be 1 by default.
* You can now copy graph groups in one go (Global, property etc.) from one effect to another.
* Colour overtime can now also be copied/pasted.
* Folders can now be created to make it easier to organise effects in a library.
* New option that lets you copy a sub effect out into the library.
* Added a warning if you are working with a recovery file.
* New click and drag behaviours for effects emitters and folders. These can now all be clicked an dragged to change the order and copy/move into other effects/folders.
* Added an “Are you sure” request when opening a new file without changes being saved.
* Added a new line to graphs indicating where the effect or emitter loops if it does so.
* Fixed a bug with entering values manually for graph nodes.
* Added a context menu for the library window that lets you add a new folder or effect.
* Added a new text filter for the library tab to filter effects by name.
* Fixed a bug with selected graph nodes hanging about when you switch graphs.
* Shapes that are converted to white now save that way in the save file.
* When you check the convert to white checkbox when importing a shape it will now update the preview.
* Generate Sine and Square waves now use drag floats and should be a lot more easy to use now.

* Lot’s of stability updates to hopefully improve performance and crash bugs.
* Emitters and effects now remember the graph they were editing.
* Fixed an issue with cloning emitters not renaming properly.
* Fixed an issue with pasting an emitter into a sub effect.
* Added the shape name that the emitter is using on the properties tab.
* Name of currently playing effect now shows in status bar, including if you’re previewing a history item.
* Option to only play selected emitter now works correctly.
* Navigating the library with arrow keys has been improved when navigating sub effects and emitters.
* Updated to latest version of ImGui.
* Saving library properly updates the tab label now.
* You can no longer import the same shape name twice to stop any conflict issues.
* Loading a new shape from the shape popup on the properties tab now also applies the shape at the same time.
* Effect will now keep looping properly after making a property change.
* Fixed a crash when particles exceed the limit.
* Improved tool tips to show when spin won’t make a difference because Align to direction is set.
* Option to fill ellipses now exists, plus areas can also only draw on edges as well.
* Grid emission properties now hide if grid emission is not selected.
* Fixed crash bugs when restoring effects from the bin.
* Added all Add effect/emitter type menus to the shape tab context menu
* Spin dials in the attribute list now animate to show spin speed.
* Increased the amount that you can zoom out on the graphs.
* Added 2 new buttons the graphs that allow you to click and drag to zoom and pan.
* Added copy and paste for graphs. You can also click and drag the copy button onto another emitter in the library list to quickly copy a graph.
* Added notifications that can pop up in the bottom right of the window to alert to various things.
* New emitters now have Random Angle 360 set by default.
* The graph node context menu is now more reliable (sometimes it would disappear before you moved your mouse over it).
* Graph wave creators don’t use log power for sliders anymore – still needs tweaking though.
* Added auto save recovery file incase the program crashes. Will auto load if the program failed to close properly.
* Added new .tfx format to remove the dependency on zip files in the c++ library, zip files can still be used in the editor though.
* Fixed bug when cancelling save as dialog kept the popup modal on screen.
* Increased the timeout time that emitters would use to remove themselves from the particle manager when spawned particles were 0.
* Moved the image handle coords to below the image for more useability.

* Graphs now have options to set presets, including generating sine and square waves.
* There’s now a tool tip that shows the full path of the effect library when you hover over the tab title.
* Fixed a crash relating to graphs and generally made them more stable overal.
* Spawning particles between positions is now more smoother, especially noticable with trail type effects.
* Fixed a bug where switching emitters could result in invalid graphs being selected.
* Undoing back to the initial commit keeps focus on the graph if that was the change being undone.
* Added Trail Preview Mode to settings menu. This makes the effect move about the screen automatically which can be useful when designing trail type effects.

* There are now preset Gradients and colours for the color overtime color picker.
* Simple preset effects to quickly get started with a new effect. These are available when you add a new effect or emitter to the library.
* Fixed a bug where clicking export animation didn’t do anything on the first click.
* Arrow keys can now be used to navigate the effect library.
* Fixed an occasional crash when cloning an effect.
* Fixed a crash when opening a library that has no shapes.
* Changed the default shape (when no shapes are available) to a flare type shape so that the preset effect previews look a bit better.

* Fixed a graphics bug where particles would just draw on top of each other on some graphics cards.
* Altered a compiler option for more compatibility.

* Proper seamless texture preview when the seamless option is checked in the animation tab
* Graph removed to prevent crash when loading an effect library.
* Fixed crash when clearing unused shapes.
* Save as now removes the dirty flag (*) from library name.
* Property tab now has default focus when opening the editor.
* Issue with line emitter’s length corrected.
* Seamless wrapping issue on some effects fixed (due to none centered emitter handles)
* Clone now uses Vn for the copy names
* Fixed bug with moving the order of subeffects and emitters.
* Cloning emitters in sub effects now clone properly within the sub effect, not the root effect.
* Name of exported animation now defaults to the name of the effect in the library being exported.
* Clicking any of the options on the animation no longer closes the popup after updating the effect.
* Fixed crash after creating a new effect library and importing a shape.
* Fixed issue with the colour gradient where it was hard to edit the first colour on the graph.
* Cloning effects after creating a new library was not properly creating a separate effect.
* Fixed a crash when adding an emitter.
* Frame and frame sizes on the import shape popup no longer allows the values to go to 0.
* History now auto scrolls to the most recent change.
* Looped animations for exporting now works better when single spawning emitters are present.
* (library change) – Replaced random number generator with a much faster one.
* Angle changes in history now show as degrees not radians for convenience.
* Toolbar icons now have tooltips.
* History list optimised to only draw the visible items.

* Added direction overtime which was missing
* Fixed crash when trying to open file that doesn’t exist
* Loading library from file menu now shows please wait modal
* Changing emitter properties wasn’t properly updating the effect preview.

* Rewrote the gradient editor for colour overtime so it’s more easy to use now.
* Fixed a crash bug when editing graphs due to the new undo implementation.
* Fixed an issue with sub effects not being updated in properly if they had size variation.
* Graph is reset after opening a new library
* Fixed crash when clearing unused shapes
* Save As now properly removes the dirty flag
* Property tab now has default focus

* History tab implemented for undo and effect revisions so you can easily go back on recent changes.
* Revisions can be saved as a separate effect.
* Copying effects now appends v1,v2,v3 and so on with subsequent copies.
* Added Direction Overtime graph which was missing.
* Deleted effects are now saved under Edit menu > Recently Deleted Effects in case you need to get them back. Undo will also restore the last deleted effect as long as the delete was the last action.
* Graph curves for angles now properly adjust for radians (the display is in degrees but the actual value for angles is stored in radians).
* Graph data is now more efficiently stored.

* Initial release