Particle Playground - Script Reference  3.0.1
Framework for controlling particles in the Unity Engine.
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events
Package ParticlePlayground

Classes

class  AnimationCurveExtensions
 Animation curve extensions.
 
class  CollisionCache
 The collision cache contains information of all particle collisions. More...
 
class  ManipulatorObjectC
 Holds information about a Manipulator Object. A Manipulator can both be Global and Local and will affect all particles within range. More...
 
class  ManipulatorParticle
 The Manipulator Particle class is a container for tracking particles in their particle system. When reaching a particle on a Manipulator the particle will convert to a PlaygroundEventParticle. More...
 
class  ManipulatorPropertyC
 Holds information for a Manipulator Object's different property abilities. More...
 
class  MathManipulatorProperty
 Holds information for a Math Manipulator. This can be used to apply extensive particle behaviors, such as positioning or changing sizes using sine, cosine or linear interpolation math. More...
 
class  MeshParticles
 
class  PaintObjectC
 Holds information about a Paint source. More...
 
class  PaintPositionC
 Constructor for a painted position. More...
 
class  ParticlePlaygroundTrail
 
class  ParticleProjectionC
 Holds information for Source Projection. More...
 
class  ParticleStateC
 Holds information about a State source. More...
 
struct  PlaybackParticle
 A Playback Particle is a struct for keeping information about one single particle in a Playground Recorder's recorded data. More...
 
class  PlaygroundAxisConstraintsC
 Hold information for axis constraints in X-, Y- and Z-values. These contraints are used to annihilate forces on set axis. More...
 
class  PlaygroundBrushC
 Holds information about a brush used for source painting. More...
 
class  PlaygroundC
 The PlaygroundC class is the Playground Manager which runs all Particle Playground systems and is containing all Global Manipulators. The Playground Manager acts as a wrapper class for common operations and contain functions for creating and altering particle systems. You will also find the global event delegates (particleEventBirth, particleEventDeath, particleEventCollision and particleEventTime) for any particle systems broadcasting events with "Send To Manager" enabled. More...
 
class  PlaygroundCache
 The Playground Cache contains all data for particles in built-in arrays. More...
 
class  PlaygroundColliderC
 Holds information for a Playground Collider (infinite collision plane). More...
 
class  PlaygroundCompression
 
class  PlaygroundEventC
 Holds information for a Playground Event. More...
 
class  PlaygroundEventParticle
 Holds information for a PlaygroundEventParticle. The Playground Event Particle contains detailed data upon an event and is sent towards any event listeners. More...
 
class  PlaygroundFollow
 
class  PlaygroundFollower
 Playground follower class. More...
 
class  PlaygroundGradientC
 Contains information for a color gradient. More...
 
class  PlaygroundMultiRecorder
 The Particle Playground Multi Recorder enables playback and scrubbing of multiple recorded synchronized particle systems. More...
 
class  PlaygroundParticlesC
 The PlaygroundParticlesC class is a Particle Playground system driven by the Playground Manager (PlaygroundC). A Particle Playground system contains settings and data for altering a Shuriken component. More...
 
class  PlaygroundQueue< T >
 The Playground Queue class is a self-managed thread pool which consumes actions sent into EnqueueTask(Action). More...
 
class  PlaygroundRecorder
 The Particle Playground Recorder enables playback and scrubbing of recorded particles. The method used is storing built-in particle arrays as keyframes, then interpolate between current keyframe and next upon playback. More...
 
class  PlaygroundSave
 Holds information for a particle system Snapshot. More...
 
class  PlaygroundTrails
 
class  PlaygroundTransformC
 Wrapper class for the Transform component. This is updated outside- and read inside the multithreaded environment. More...
 
class  RecordedFrame
 The RecordedFrame class contain information of a single frame of recorded particles for the Playground Recorder's recorded data. More...
 
class  SerializedFrame
 A serialized frame holds information about one recorded frame of particles. More...
 
class  SerializedParticle
 A serialized particle holds information for one single serializable particle inside a recorded frame for the Playground Recorder's recorded data. More...
 
class  SimplexNoise
 The Simplex Noise algorithm applied in Turbulence. More...
 
class  SkinnedWorldObject
 Holds information about a Skinned world object. Consider to NOT use Optimize Game Objects at the skinned mesh's Import Settings for best performance of extracting its vertices. More...
 
struct  TrailParticleInfo
 The trail particle info struct contains data about particles to be read by a Playground Trail. More...
 
class  TrailPoint
 
class  Vector3AnimationCurveC
 Holds AnimationCurves in X, Y and Z variables. More...
 
class  WorldObject
 Holds information about a World object. More...
 
class  WorldObjectBaseC
 Extended class for World Objects and Skinned World Objects. More...
 

Enumerations

enum  MANIPULATORTYPEC {
  MANIPULATORTYPEC.None, MANIPULATORTYPEC.Attractor, MANIPULATORTYPEC.AttractorGravitational, MANIPULATORTYPEC.Repellent,
  MANIPULATORTYPEC.Property, MANIPULATORTYPEC.Combined, MANIPULATORTYPEC.Vortex
}
 The type of Manipulator. More...
 
enum  MANIPULATORPROPERTYTYPEC {
  MANIPULATORPROPERTYTYPEC.None, MANIPULATORPROPERTYTYPEC.Color, MANIPULATORPROPERTYTYPEC.Velocity, MANIPULATORPROPERTYTYPEC.AdditiveVelocity,
  MANIPULATORPROPERTYTYPEC.Size, MANIPULATORPROPERTYTYPEC.Target, MANIPULATORPROPERTYTYPEC.Death, MANIPULATORPROPERTYTYPEC.Attractor,
  MANIPULATORPROPERTYTYPEC.Gravitational, MANIPULATORPROPERTYTYPEC.Repellent, MANIPULATORPROPERTYTYPEC.LifetimeColor, MANIPULATORPROPERTYTYPEC.Vortex,
  MANIPULATORPROPERTYTYPEC.MeshTarget, MANIPULATORPROPERTYTYPEC.SkinnedMeshTarget, MANIPULATORPROPERTYTYPEC.Turbulence, MANIPULATORPROPERTYTYPEC.StateTarget,
  MANIPULATORPROPERTYTYPEC.SplineTarget, MANIPULATORPROPERTYTYPEC.Math
}
 The type of Manipulator Property. More...
 
enum  MATHMANIPULATORTYPE {
  MATHMANIPULATORTYPE.Sin, MATHMANIPULATORTYPE.Cos, MATHMANIPULATORTYPE.Lerp, MATHMANIPULATORTYPE.Add,
  MATHMANIPULATORTYPE.Subtract
}
 The math operation to apply within a MathManipulatorProperty class. More...
 
enum  MATHMANIPULATORPROPERTY { MATHMANIPULATORPROPERTY.Size, MATHMANIPULATORPROPERTY.Rotation, MATHMANIPULATORPROPERTY.Velocity, MATHMANIPULATORPROPERTY.Position }
 The particle property to change within a MathManipulatorProperty class. More...
 
enum  MATHMANIPULATORCLAMP { MATHMANIPULATORCLAMP.None, MATHMANIPULATORCLAMP.ClampInValue, MATHMANIPULATORCLAMP.ClampOutValue }
 The clamping (minimum to maximum) value to apply within a MathManipulatorProperty class. More...
 
enum  MANIPULATORPROPERTYTRANSITIONC { MANIPULATORPROPERTYTRANSITIONC.None, MANIPULATORPROPERTYTRANSITIONC.Lerp, MANIPULATORPROPERTYTRANSITIONC.Linear }
 The type of Manipulator Property Transition. More...
 
enum  MANIPULATORSHAPEC { MANIPULATORSHAPEC.Sphere, MANIPULATORSHAPEC.Box, MANIPULATORSHAPEC.Infinite }
 The shape of a Manipulator. More...
 
enum  PLAYGROUNDORIGINC {
  TopLeft, TopCenter, TopRight, MiddleLeft,
  MiddleCenter, MiddleRight, BottomLeft, BottomCenter,
  BottomRight
}
 
enum  PIXELMODEC { PIXELMODEC.Bilinear, PIXELMODEC.Pixel32 }
 The mode to read pixels in. More...
 
enum  COLORSOURCEC { COLORSOURCEC.Source, COLORSOURCEC.LifetimeColor, COLORSOURCEC.LifetimeColors }
 The mode to set particles color source from. More...
 
enum  COLORMETHOD { Lifetime, ParticleArray }
 
enum  OVERFLOWMODEC { OVERFLOWMODEC.SourceTransform, OVERFLOWMODEC.World, OVERFLOWMODEC.SourcePoint }
 The mode to overflow particles with when using Overflow Offset. More...
 
enum  TRANSITIONTYPEC { TRANSITIONTYPEC.Linear, TRANSITIONTYPEC.EaseIn, TRANSITIONTYPEC.EaseOut }
 The type of transition used for Snapshots. More...
 
enum  INDIVIDUALTRANSITIONTYPEC { INDIVIDUALTRANSITIONTYPEC.Inherit, INDIVIDUALTRANSITIONTYPEC.Linear, INDIVIDUALTRANSITIONTYPEC.EaseIn, INDIVIDUALTRANSITIONTYPEC.EaseOut }
 The individual type of transition used for Snapshots. More...
 
enum  LERPTYPEC { PositionColor, Position, Color }
 The linear interpolition type used for Snapshots. More...
 
enum  SOURCEC {
  SOURCEC.State, SOURCEC.Transform, SOURCEC.WorldObject, SOURCEC.SkinnedWorldObject,
  SOURCEC.Script, SOURCEC.Paint, SOURCEC.Projection, SOURCEC.Spline
}
 The Source which particle birth positions will distribute from. More...
 
enum  SOURCEBIRTHMETHOD { BirthPositions, ParticlePositions }
 
enum  ScaleMethod { ScaleMethod.Local, ScaleMethod.Lossy }
 The scale method. This is mainly used for Playground Transforms and determines if local- or lossy scale should be used when setting a transform matrix. More...
 
enum  SORTINGC {
  SORTINGC.Scrambled, SORTINGC.ScrambledLinear, SORTINGC.Burst, SORTINGC.Linear,
  SORTINGC.Reversed, SORTINGC.NearestNeighbor, SORTINGC.NearestNeighborReversed, SORTINGC.Custom
}
 The lifetime sorting method. More...
 
enum  BRUSHDETAILC { BRUSHDETAILC.Perfect, BRUSHDETAILC.High, BRUSHDETAILC.Medium, BRUSHDETAILC.Low }
 The brush detail level. More...
 
enum  COLLISIONTYPEC { COLLISIONTYPEC.Physics3D, COLLISIONTYPEC.Physics2D }
 The collision method. More...
 
enum  VELOCITYBENDINGTYPEC { VELOCITYBENDINGTYPEC.SourcePosition, VELOCITYBENDINGTYPEC.ParticleDeltaPosition }
 The type of velocity bending. More...
 
enum  TARGETSORTINGC { Scrambled, Linear, Reversed }
 The method to sort targets. More...
 
enum  MASKSORTINGC { Linear, Reversed, Scrambled }
 The method to sort particle masking. More...
 
enum  NEARESTNEIGHBORORIGINMETHOD { NEARESTNEIGHBORORIGINMETHOD.SourcePoint, NEARESTNEIGHBORORIGINMETHOD.Vector3, NEARESTNEIGHBORORIGINMETHOD.Transform }
 The method to set the Lifetime Sorting: Nearest Neighbor/Reversed with. More...
 
enum  SPLINETARGETMETHOD { SPLINETARGETMETHOD.SplineTime, SPLINETARGETMETHOD.ParticleTime }
 The method to target a spline. More...
 
enum  MINMAXVECTOR3METHOD { Rectangular, RectangularLinear, Spherical, SphericalLinear }
 The shape of a minimum to maximum Vector3. More...
 
enum  EVENTTYPEC { Birth, Death, Collision, Time }
 The type of event. More...
 
enum  EVENTBROADCASTC { Target, EventListeners, Both }
 The type of event broadcast. More...
 
enum  EVENTINHERITANCEC { User, Particle, Source }
 The inheritance method for events. More...
 
enum  TURBULENCETYPE { TURBULENCETYPE.None, TURBULENCETYPE.Simplex, TURBULENCETYPE.Perlin }
 The type of turbulence algorithm to use. More...
 
enum  VALUEMETHOD { Constant, RandomBetweenTwoValues }
 The value method used for lifetime. More...
 
enum  ONDONE { ONDONE.Inactivate, ONDONE.Destroy }
 The method to call when a particle system has finished simulating. More...
 
enum  ThreadPoolMethod { ThreadPoolMethod.ThreadPool, ThreadPoolMethod.PlaygroundPool }
 The thread pool method determines which thread pooling should be used. ThreadPoolMethod.ThreadPool will use the .NET managed ThreadPool class (standard in Particle Playground in versions prior to 3). ThreadPoolMethod.PlaygroundPool will use the self-managed PlaygroundQueue which queues tasks on reused threads (standard in Particle Playground 3 and up). More...
 
enum  ThreadMethod { ThreadMethod.NoThreads, ThreadMethod.OnePerSystem, ThreadMethod.OneForAll, ThreadMethod.Automatic }
 Multithreading method. This determines how particle systems calculate over the CPU. Keep in mind each thread will generate memory garbage which will be collected at some point. Selecting ThreadMethod.NoThreads will make particle systems calculate on the main-thread. ThreadMethod.OnePerSystem will create one thread per particle system each frame. ThreadMethod.OneForAll will bundle all calculations into one single thread. ThreadMethod.Automatic will distribute all particle systems evenly bundled along available CPUs/cores. More...
 
enum  ThreadMethodLocal { ThreadMethodLocal.Inherit, ThreadMethodLocal.NoThreads, ThreadMethodLocal.OnePerSystem, ThreadMethodLocal.OneForAll }
 The multithreading method for a single particle system. Use this to bypass the selected PlaygroundC.threadMethod. ThreadMethodLocal.Inherit will let the particle system calculate as set by PlaygroundC.threadMethod. This is the default value. ThreadMethodLocal.NoThreads will make the particle system calculate on the main-thread. ThreadMethodLocal.OnePerSystem will create a new thread for this particle system. ThreadMethodLocal.OneForAll will create a bundled thread for all particle systems using this setting. More...
 
enum  ThreadMethodComponent { ThreadMethodComponent.InsideParticleCalculation, ThreadMethodComponent.OnePerSystem, ThreadMethodComponent.OneForAll }
 The multithreading method for a particle system component such as tubulence and skinned meshes. This determines how the components will calculate over the CPU. More...
 
enum  TrackingMethod { TrackingMethod.ManipulatorId, TrackingMethod.ParticleId }
 Tracking method determines how particles are compared within a Manipulator. This is used when tracking particles to determine if a particle exists within a Manipulator. Using Manipulator id is the fastest but may not work on overlapping Manipulators. Use this method if you have plenty of particles. Particle id will always return the correct compare, but requires a particle-to-particle lookup. Use this method if you have few particles with several Manipulators overlapping. More...
 
enum  FrameType { FrameType.Start, FrameType.Middle, FrameType.End }
 A frame type describes where in the total recording the recorded frame was made. More...
 
enum  TrailRenderMode { TrailRenderMode.Billboard, TrailRenderMode.Horizontal, TrailRenderMode.Vertical, TrailRenderMode.CustomRenderScale }
 The trail render mode determines how the trail will be rotated. Using billboard will rotate towards the assigned transform position, this is by default the main camera. Horizontal will rotate the points flat on X-Z axis. Vertical will rotate the points flat on X-Y axis. CustomRenderScale is a global world space normal which will multiply the scale on each axis. More...
 
enum  TrailColorMode { TrailColorMode.Lifetime, TrailColorMode.PointArray }
 The trail color mode determines how color should be distributed over a trail. More...
 
enum  TrailUvMode { TrailUvMode.Lifetime, TrailUvMode.PointArray }
 The trail uv mode determines how uv will be distributed over a trail. More...
 

Functions

delegate void OnPlaygroundParticle (PlaygroundEventParticle particle)
 Event delegate for sending a PlaygroundEventParticle to any event listeners. More...
 
delegate void OnPlaygroundFollower (PlaygroundFollower follower)
 Event delegate for sending a PlaygroundFollower to any event listeners. More...
 

Enumeration Type Documentation

The brush detail level.

Enumerator
Perfect 

Every pixel will be read (100% of existing texture pixels).

High 

Every second pixel will be read (50% of existing texture pixels).

Medium 

Every forth pixel will be read (25% of existing texture pixels).

Low 

Every sixth pixel will be read (16.6% of existing texture pixels).

The collision method.

Enumerator
Physics3D 

Uses Raycast to detect colliders in scene.

Physics2D 

Uses Raycast2D to detect colliders in scene.

The mode to set particles color source from.

Enumerator
Source 

Colors will extract from the source such as pixel- or painted color.

LifetimeColor 

Colors will extract from a color gradient over lifetime.

LifetimeColors 

Colors will extract from a list of color gradients over lifetime.

The type of event broadcast.

The inheritance method for events.

The type of event.

A frame type describes where in the total recording the recorded frame was made.

Enumerator
Start 

The frame was created at the start of recording.

Middle 

The frame was created at the middle of recording.

End 

The frame was created at the end of recording.

The individual type of transition used for Snapshots.

Enumerator
Inherit 

Inherit the transition type selected for all Snapshots using INDIVIDUALTRANSITIONTYPEC.Inherit.

Linear 

Transition with no easing.

EaseIn 

Transition with slow start - fast finish.

EaseOut 

Transition with fast start - slow finish.

The linear interpolition type used for Snapshots.

The type of Manipulator Property Transition.

Enumerator
None 

No transition of the property will occur.

Lerp 

Transition the property from current particle value to the Manipulator Property's effect using linear interpolation.

Linear 

Transition the property from current particle value to the Manipulator Property's effect using MoveTowards interpolation.

The type of Manipulator Property.

Enumerator
None 

No property will be affected. The Manipulator will still be able to track particles and send events.

Color 

Changes the color of particles within range.

Velocity 

Sets a static velocity of particles within range.

AdditiveVelocity 

Adds velocity over time of particles within range.

Size 

Changes size of particles within range.

Target 

Sets Transform targets for particles within range.

Death 

Sets particles to a sooner death.

Attractor 

Attract particles in a funnel shape. This is a main feature injected as a property so you can use it inside a Combined Manipulator.

Gravitational 

Attract particles with spherical gravitation. This is a main feature injected as a property so you can use it inside a Combined Manipulator.

Repellent 

Repel particles away from the Manipulator. This is a main feature injected as a property so you can use it inside a Combined Manipulator.

LifetimeColor 

Change the lifetime color of particles within range. This is a main feature injected as a property so you can use it inside a Combined Manipulator.

Vortex 

Apply forces with vortex-like features. Manipulator's rotation will determine the direction.

MeshTarget 

Sets a mesh vertices in the scene as target.

SkinnedMeshTarget 

Sets a skinned mesh vertices in the scene as target.

Turbulence 

Apply turbulence for particles within range.

StateTarget 

Sets a State in the scene as target.

SplineTarget 

Sets a Playground Spline in the scene as target.

Math 

Alters particle properties by common math operations.

The shape of a Manipulator.

Enumerator
Sphere 

Spherical shape where the Manipulator's size will determine its extents.

Box 

A bounding box shape where the Manipulator's bounds will determine its extents.

Infinite 

The size of the Manipulator will be infinite over the scene and affect all particles. This option is the most performant as particle distance/containment check won't be necessary.

The type of Manipulator.

Enumerator
None 

The Manipulator will remain passive. It will still be able to track particles and send events.

Attractor 

Attract particles in a funnel shape.

AttractorGravitational 

Attract particles with spherical gravitation.

Repellent 

Repel particles away from the Manipulator.

Property 

The Manipulator will alter chosen property of the affected particles.

Combined 

Combine properties into one Manipulator call.

Vortex 

Apply forces with vortex-like features. Manipulator's rotation will determine the direction.

The method to sort particle masking.

The clamping (minimum to maximum) value to apply within a MathManipulatorProperty class.

Enumerator
None 

No clamping will occur.

ClampInValue 

The particle in-data will be clamped, before any changes has been made.

ClampOutValue 

The particle out-data will be clamped, after the changes has been made.

The particle property to change within a MathManipulatorProperty class.

Enumerator
Size 

Particle size.

Rotation 

Particle rotation.

Velocity 

Particle velocity.

Position 

Particle position.

The math operation to apply within a MathManipulatorProperty class.

Enumerator
Sin 

Sine algorithm.

Cos 

Cosine algorithm.

Lerp 

Linear interpolation algorithm.

Add 

Addition.

Subtract 

Subtraction.

The shape of a minimum to maximum Vector3.

The method to set the Lifetime Sorting: Nearest Neighbor/Reversed with.

Enumerator
SourcePoint 

The origin will be set with an int of a generated source point.

Vector3 

The origin will be set by a Vector3 in world space.

Transform 

The origin will be set from a Transform's position in the scene.

The method to call when a particle system has finished simulating.

Enumerator
Inactivate 

The GameObject of the particle system will inactivate.

Destroy 

The GameObject of the particle system will be destroyed. This will only execute in Play-mode.

The mode to overflow particles with when using Overflow Offset.

Enumerator
SourceTransform 

Overflow in the direction of the set Source Transform.

World 

Overflow in world space direction.

SourcePoint 

Overflow with normal direction of Source's points.

The mode to read pixels in.

Enumerator
Bilinear 

Bilinear pixel filtering.

Pixel32 

Pixel32 pixel filtering.

The scale method. This is mainly used for Playground Transforms and determines if local- or lossy scale should be used when setting a transform matrix.

Enumerator
Local 

Use local scale.

Lossy 

Use lossy scale.

The lifetime sorting method.

Enumerator
Scrambled 

Sort particle emission randomly over their lifetime cycle.

ScrambledLinear 

Sort particle emission randomly over their lifetime cycle and ensure consistent rate.

Burst 

Sort particles to emit all at once.

Linear 

Sort particle emission alpha to omega in their Source structure.

Reversed 

Sort particle emission omega to alpha in their Source structure.

NearestNeighbor 

Sort particle emission with an origin and use alpha to omega distance.

NearestNeighborReversed 

Sort particle emission with an origin and use omega to alpha distance.

Custom 

Sort particle emission with an AnimationCurve. The X-axis represents the normalized lifetime cycle and Y-axis the normalized emission percentage.

The Source which particle birth positions will distribute from.

Enumerator
State 

Set birth positions from a mesh vertices or a texture's pixels. Use a Transform to be able to translate, rotate and scale your State.

Transform 

Set birth positions from a single transform.

WorldObject 

Set birth positions from a mesh vertices in the scene.

SkinnedWorldObject 

Set birth positions from a skinned mesh vertices in the scene.

Script 

Emission will be controlled by script using PlaygroundParticlesC.Emit().

Paint 

Set birth positions by painting onto colliders (2d/3d) in the scene.

Projection 

Project birth positions onto colliders (2d/3d) in the scene by using a texture. Note that this Source distribution is not multithreaded due to the non thread-safe Raycast method.

Spline 

Set birth positions from a Playground Spline.

The method to target a spline.

Enumerator
SplineTime 

Match each particle linearly within the particle array with the spline's normalized time.

ParticleTime 

Match each particle's lifetime with the normalized time of the spline.

The method to sort targets.

Multithreading method. This determines how particle systems calculate over the CPU. Keep in mind each thread will generate memory garbage which will be collected at some point. Selecting ThreadMethod.NoThreads will make particle systems calculate on the main-thread. ThreadMethod.OnePerSystem will create one thread per particle system each frame. ThreadMethod.OneForAll will bundle all calculations into one single thread. ThreadMethod.Automatic will distribute all particle systems evenly bundled along available CPUs/cores.

Enumerator
NoThreads 

No calculation threads will be created. This will in most cases have a negative impact on performance as Particle Playground will calculate along all other logic on the main-thread. Use this for debug purposes or if you know there's no multi- or hyperthreading possibilities on your target platform.

OnePerSystem 

One calculation thread per particle system will be created. Use this when having heavy particle systems in your scene. Note that this method will never bundle calculation calls unless specified in each individual particle system’s Particle Thread Method.

OneForAll 

One calculation thread for all particle systems will be created. Use this if you have other multithreaded logic which has higher performance priority than Particle Playground or your project demands strict use of garbage collection. Consider using ThreadMethod.Automatic for best performance.

Automatic 

Let calculation threads distribute evenly for all particle systems in your scene. This will bundle calculation calls to match the platform's SystemInfo.processorCount. This is the recommended and overall fastest method to calculate particle systems. Having fewer particle systems than processing units will create one thread per particle system. Having more particle systems than processing units will initiate thread bundling.

The multithreading method for a particle system component such as tubulence and skinned meshes. This determines how the components will calculate over the CPU.

Enumerator
InsideParticleCalculation 

The component will calculate inside the chosen particle system multithreading method.

OnePerSystem 

Each component will create a new calculation thread.

OneForAll 

All components of type will create a single bundled calculation thread.

The multithreading method for a single particle system. Use this to bypass the selected PlaygroundC.threadMethod. ThreadMethodLocal.Inherit will let the particle system calculate as set by PlaygroundC.threadMethod. This is the default value. ThreadMethodLocal.NoThreads will make the particle system calculate on the main-thread. ThreadMethodLocal.OnePerSystem will create a new thread for this particle system. ThreadMethodLocal.OneForAll will create a bundled thread for all particle systems using this setting.

Enumerator
Inherit 

Let the particle system calculate as set by ThreadMethod. This is the default value.

NoThreads 

The particle system will be calculated on the main-thread.

OnePerSystem 

Creates a new thread for this particle system.

OneForAll 

Bundle all particle systems using this setting into a single thread call.

The thread pool method determines which thread pooling should be used. ThreadPoolMethod.ThreadPool will use the .NET managed ThreadPool class (standard in Particle Playground in versions prior to 3). ThreadPoolMethod.PlaygroundPool will use the self-managed PlaygroundQueue which queues tasks on reused threads (standard in Particle Playground 3 and up).

Enumerator
ThreadPool 

Uses the .NET managed ThreadPool class (standard in Particle Playground in versions prior to 3).

PlaygroundPool 

Uses the self-managed PlaygroundQueue which queues tasks on reused threads (standard in Particle Playground 3 and up).

Tracking method determines how particles are compared within a Manipulator. This is used when tracking particles to determine if a particle exists within a Manipulator. Using Manipulator id is the fastest but may not work on overlapping Manipulators. Use this method if you have plenty of particles. Particle id will always return the correct compare, but requires a particle-to-particle lookup. Use this method if you have few particles with several Manipulators overlapping.

Enumerator
ManipulatorId 

Using Manipulator id is fast but may not work on overlapping Manipulators. Use this method if you have plenty of particles.

ParticleId 

Particle id will always return the correct compare, but requires a particle-to-particle lookup. Use this method if you have few particles with several Manipulators overlapping.

The trail color mode determines how color should be distributed over a trail.

Enumerator
Lifetime 

When using TrailColorMode.Lifetime the colors will be set depending on each point's normalized lifetime.

PointArray 

When using TrailColorMode.PointArray the colors will be set depending on all the points within the trail, where each point is a normalized value linearly towards the total points.

The trail render mode determines how the trail will be rotated. Using billboard will rotate towards the assigned transform position, this is by default the main camera. Horizontal will rotate the points flat on X-Z axis. Vertical will rotate the points flat on X-Y axis. CustomRenderScale is a global world space normal which will multiply the scale on each axis.

Enumerator
Billboard 

Rotate points towards assigned billboard transform.

Horizontal 

Rotate points flat X-Z.

Vertical 

Rotate points flat X-Y.

CustomRenderScale 

Creates a custom render rotation/scale.

The trail uv mode determines how uv will be distributed over a trail.

Enumerator
Lifetime 

When using TrailUvMode.Lifetime the uvs will be set depending on each point's normalized lifetime.

PointArray 

When using TrailUvMode.PointArray the uvs will be set depending on all the points within the trail, where each point is a normalized value linearly towards the total points.

The type of transition used for Snapshots.

Enumerator
Linear 

Transition with no easing.

EaseIn 

Transition with slow start - fast finish.

EaseOut 

Transition with fast start - slow finish.

The type of turbulence algorithm to use.

Enumerator
None 

No turbulence will apply.

Simplex 

Simplex noise will produce a natural branch pattern of turbulence.

Perlin 

Perlin noise will produce a confined wave-like pattern of turbulence.

The value method used for lifetime.

The type of velocity bending.

Enumerator
SourcePosition 

Bending will be calculated from each particle's birth position delta (previous and current frame).

ParticleDeltaPosition 

Bending will be calculated from each particle's position delta (previous and current frame).

Function Documentation

delegate void ParticlePlayground.OnPlaygroundFollower ( PlaygroundFollower  follower)

Event delegate for sending a PlaygroundFollower to any event listeners.

delegate void ParticlePlayground.OnPlaygroundParticle ( PlaygroundEventParticle  particle)

Event delegate for sending a PlaygroundEventParticle to any event listeners.