After 7 Years, We Are Closed – Site Will Stay Online

Desuade Partigen 2

Desuade Partigen has an extensive set of features that are built heavily upon the Desuade Motion Package. Take a look at some of the technical specifications for the AS3 particle effect engine:

Overview

  • Particle/Emitter Controllers (advanced keyframe-sequencing)
  • Tweening or physics for every particle's property
  • Full Package XML-Serialization
  • Extensive set of Rendering and Pooling options
  • Highest-in-class performance and features
  • Fully documented AS3 API
  • Includes AS3 examples for Partigen and DMP
  • Advanced Debugging
  • Inheritance-based classes
  • Low base file size - 11k (standard component 33k)
  • Based upon the Desuade Motion Package architecture
  • Engine is Open Source, MIT Licensed, and free

Controllers

  • Advanced sequencing simulates timeline-based motion (similar to Flash CS4's Motion Editor)
  • Used for both emitter and particle properties
  • IDE features a point and click representation with drag and drop keyframes
  • Random ranges of values with 'spread'
  • KeyframeContainers that store unlimited keyframes (similar to standard timeline keyframes)
  • Allows for different eases from keyframe-to-keyframe
  • Relative length of tweens based on duration or particle life
  • More intuitive and similar to the way Flash is designed than other platforms
  • Inherited from the Desuade Motion Package - the highest performance-to-features motion engine ever designed
  • Generates (and is configurable by) XML

Emitters

  • Creates and holds configuration for particles
  • Can be created with either the IDE component or via ActionScript
  • Emitters can be manipulated and changed at runtime
  • Emits particles automatically at a given rate with 'eps' property
  • Can emit particles manually with 'emit()' method
  • Each emission can have a 'burst' multiplier
  • Emitters can use "prefetching" to start as if they've already been running
  • Angle and life properties that can be tweened and controlled
  • Manages particles with Controllers, Renderers, & Pools - MVC style
  • Start/stop controls
  • Generates (and is configurable by) XML

Particles

  • Created by and configured through emitters
  • Can be any display object or class you desire
  • PixelParticles for use with PixelRenderers
  • Particles can be grouped together to increase performance
  • Particles can be cachedAsBitmaps or blitted
  • BlendMode and filters can be dynamically applied
  • Unlimited amount of properties - only configure properties you use
  • Property values managed by ParticleControllers
  • The 'spread' property of Keyframes allows for organic, natural, and random effects
  • Particle objets are recycled in system memory automatically managed by Pools

Renderers

  • Handle the actual display of particles
  • StandardRenderer - displays particles in the same was as standard DisplayObjects
  • NullRenderer - no particles are displayed on the screen
  • BitmapRenderer - particles are displayed through a Bitmap
  • PixelRenderer - particles are single pixels that get shown on a Bitmap
  • BitmapCanvas - easily displays an output from a Bitmap/Pixel renderer on the stage
  • Bitmap-based renderers increases performance, and have built in blurring and trailing
  • Renderers automagically start/stop based on need, simplifying development and maximizing performance
  • Renderers can be shared across multiple Emitters

Pools

  • Handle the internal creation and storage of Particle objects in memory
  • BasicPool - uses object pooling to radically increase performance and memory efficiency
  • NullPool - this does no 'real' pooling and simply creates and destroys particles as needed
  • SweepPool - removes groups of Particle objects at a given interval
  • Can be shared across multiple Emitters

Requirements

  • ActionScript 3 (AS3 Only)
  • Adobe Flash Player 9/10/10.1 & Mobile
  • Adobe Flash CS3/CS4/CS5
  • Adobe Extension Manager
  • Mac OS X 10.4+
  • Windows XP, Vista, 7

AS3 Syntax Examples

//emitters
var my_em:Emitter = new Emitter();
my_em.particle = MyParticleClass;
my_em.eps = 5;
my_em.life = 1;
my_em.start();
var my_em2:Emitter = new Emitter();
my_em2.fromXML(my_em.toXML()).start();

//controllers
my_em.controllers.particle.addTween("x");
my_em.controllers.particle.x.keyframes.begin.value = 0;
my_em.controllers.particle.x.keyframes.add(new Keyframe(.5, 0, 'easeOutQuad', 500));
my_em.controllers.particle.x.keyframes.end.value = 300;

//renderers
var my_nrenderer:NullRenderer = new NullRenderer();
my_em.renderer = my_nrenderer;
my_second_em.renderer = my_nrenderer;

//pools
var my_spool:SweepPool = new SweepPool(Particle, 5000);
my_em.pool = my_spool;