A ParticleSystem object allows you to place in space and control at runtime the properties of an existing ParticleNetwork Asset.
To understand how the system works; the connected ParticleNetwork will dictate how each particle will behave and the particle system (the object) will control wherein space particles will be emitted.
By using this approach a particle system will have to choose a SystemType based on the way the particle network will be used; this system type will allow you to either share, localize or duplicate the ParticleNetwork Particles, behaviors and properties.
There are basically three ways the connected ParticleNetwork can be used by an active particle system. kDiscrete
; which will create a full copy of the network and force the particle system to run a full update independently.
kTemplate
which simply reuses the existing particle network as it is for the current system; particles are updated once per frame and positioned in space for each system using it. As a result, this type allows randomness only at a particle level on a particle system basis.
And finally, kInstance
where the particle's data are completely shared (updated once per frame reused at multiple locations for each system using the network); as shared implies all particles will act exactly the same (but will still be relative to the particle system object transformation the network is connected to).
See Also
Name | Description |
---|---|
object | Parent Object where the ParticleSystem structure is maintained. |
particlenetwork | Active ParticleNetwork connected to the active ParticleSystem. |
Name | Description |
---|---|
auto_delete | Automatically remove the ParticleSystem Object if all particles are destroyed. |
state | The active playback State of the ParticleSystem. |
system_type | The current SystemType used by the active ParticleSystem. |
Name | Description |
---|---|
SetParticleNetwork | Connect an existing ParticleNetwork to the active ParticleSystem. |
SetMaterial | Specify which Material to use when rendering the active ParticleSystem on a specific RenderLayer. |
CopyMaterials | Helper function that copy the Material settings from one RenderLayer cap to another. |
GetMaterial | Retrieve a specific Material reference assigned to an existing Material configuration. |
GetActiveParticleCount | Retrieve the current amount of particles emitted by the ParticleSystem that are in motion (alive). |
GetParticlesAt | Retrieve a specific Particles array for a specific ParticleEmitter using its index as key. |
Play | Active the current ParticleSystem. |
Pause | Temporary stop updating the active ParticleSystem. |
Stop | Stop updating the active ParticleSystem. |
Update | Temporary stop updating the active ParticleSystem. |
Events available when an Object is a ParticleSystem.
Callbacks | Description |
---|---|
OnPlay | Occurs when the particle system Play function is called. |
OnResume | Occurs when ParticleSystem have been previously paused and the Play function is called again to resume the playback. |
OnPause | Triggered when the Pause function is called. |
OnStop | Triggered when the ParticleSystem stops playing (no more active particles) or the function Stop is called either internally or by the user. |
OnDraw | This event is triggered just before the ParticleSystem is ready to draw. |
OnDisplay | Triggered right after the ParticleSystem draw calls have been sent. |
Available types of ParticleSystem.
kInstance
: Particles are updated once per frame for all ParticleSystem that are using a particular ParticleNetwork.kTemplate
: All particles will look and behave the same as defined in the ParticleNetwork and will be updated once per frame. This type is allowing randomness among multiple ParticleSystem using the same ParticleNetwork.kDiscrete
: Creates an independent variation of the ParticleNetwork connected to the ParticleSystem. Using this type of system you can locally alter the original attributes of the ParticleNetwork without affecting the Asset itself.kDiscrete
ParticleSystem all changes made to the ParticleNetwork after affectation will not be taken in consideration until it is re-assigned to the ParticleSystem.
|