IDPSFParticleSystem
NOTE: This is automatically set when the SetEffectAndTechnique(string, string) function is called.
NOTE: This is automatically set when the SetEffectAndTechnique() and SetTechnique() functions are called.
NOTE: This is automatically set when the SetTexture() function is called.
NOTE: This is just a pointer to one of the ParticleEmitters in the Emitters ParticleEmitterCollection.
NOTE: If you set this to a ParticleEmitter that is not in the Emitters collection, it will be added to it.
During the particle system Update() this Emitter property is updated to point to the ParticleEmitter in the Emitters collection that is being updated.
Each particle system Update() will loop through all Emitters in this collection and add their new particles to this particle system.
During the particle system Update() the Emitter property is updated to point to the ParticleEmitter in this collection that is being updated.
NOTE: Setting this to false causes the Update() function to not update anything.
NOTE: Each Particle System is automatically assigned a unique ID when it is instantiated.
If inheriting from DrawableGameComponent, the Particle Systems are automatically added to the given Game object's Components and the Update() and Draw() functions are automatically called by the Game object when it updates and draws the rest of its Components. If the Update() and Draw() functions are called by the user anyways, they will exit without performing any operations, so it is suggested to include them anyways to make switching between inheriting and not inheriting from DrawableGameComponent seamless; just be aware that the updates and draws are actually being performed when the Game object is told to update and draw (i.e. when base.Update() and base.Draw() are called), not when these functions are being called.
1.0 = normal speed, 0.5 = half speed, 2.0 = double speed.
This is provided as a way of speeding up / slowing down the simulation to have it look as desired, without having to rescale all of the particle velocities, etc. This allows you to use the exact same particle system class to create two particle systems, and then have one run slower or faster than the other, creating two different effects. If you then wanted to speed up or slow down both effects (i.e. particle systems), you could adjust the SimulationSpeed property on both particle systems without having to worry about adjusting this property at all to get the effects back to normal speed; just reset the SimulationSpeed property you changed back to 1.0.
NOTE: If a negative value is specified, the Internal Simulation Speed is set to zero (pauses the simulation; has the same effect as Enabled = false).
NOTE: The Automatic Memory Manager will never allocate space for more Particles than this.
NOTE: This value must be greater than or equal to zero.
NOTE: This value must be greater than or equal to zero.
NOTE: Even if this many particles aren't used, the space for this many Particles is still allocated in memory.
NOTE: This Particle System's properties will only clone the Manager's properties if the Manager's properties are Enabled. For example, the Manager's SimulationSpeed will only be copied to this Particle System if the Manager's SimulationSpeedIsEnabled property is true.
NOTE: This value is automatically set to the last Particle System Manager this Particle System is added to.
This should be disabled before building a release version of your application.
Note: Performance profiling is not available on the Reach profile, so this will always return False on the Reach profile.
Returns 0 if Performance Profiling is not Enabled.
Returns 0 if Performance Profiling is not Enabled.
1.0 = normal speed, 0.5 = half speed, 2.0 = double speed.
NOTE: If a negative value is specified, the Speed Scale is set to zero (pauses the simulation; has same effect as Enabled = false).
NOTE: If this is not a Sprite particle system, this will return null.
NOTE: These settings only have effect if this is a Sprite particle system.
NOTE: Because a particle system may contain other particle systems, this is a virtual function that may be overridden to return the NumberOfActiveParticles for both this particle system and any child particle systems that are contained within this one.
NOTE: By default this just returns this particle system's NumberOfActiveParticles.
NOTE: Because a particle system may contain other particle systems, this is a virtual function that may be overridden to return the NumberOfParticlesAllocatedInMemory for both this particle system and any child particle systems that are contained within this one.
NOTE: By default this just returns this particle system's NumberOfParticlesAllocatedInMemory.
NOTE: Because a particle system may contain other particle systems, this is a virtual function that may be overridden to return the NumberOfParticlesBeingDrawn for both this particle system and any child particle systems that are contained within this one.
NOTE: By default this just returns this particle system's NumberOfParticlesBeingDrawn.
NOTE: Specifying a value of zero (default) will cause the Particle System to be Updated every time the Update() function is called (i.e. as often as possible).
NOTE: If the Update() function is not called often enough to keep up with this specified Update rate, the Update function updates the Particle Systems as often as possible.
If false, the particle system will use its own SpriteBatch to draw its particles.
If true, then you must call SpriteBatch.Begin() before calling ParticleSystem.Draw() to draw the particle system, and then call SpriteBatch.End() when done drawing the particle system, where the SpriteBatch referred to here is the one you passed into the InitializeSpriteParticleSystem() function.
NOTE: This property only applies to Sprite particle systems.
NOTE: Setting this to false causes the Draw() function to not draw anything.
NOTE: If inheriting from DrawableGameComponent and this is called, the Particle System will be drawn twice per frame; once when it is called here, and again when automatically called by the Game object. If not inheriting from DrawableGameComponent, this acts the same as calling Draw().
NOTE: If this type of particle system requires a Texture, this function will attempt to load the Texture specified by the DeserializationTexturePath property. If it is unable to load a texture, a DPSFArgumentNullException will be thrown, so this function should be wrapped in a try block, and when a DPSFArgumentNullException is caught then the particle system's texture should be manually set.
NOTE: This will attempt to load the Effect and Technique specified by the DeserializationEffectPath and DeserializationTechniqueName properties. If either of these are null, the DPSFDefaultEffect will be used, and the default Technique for this type of particle system will be loaded.
Updating the Particle System involves executing the Particle System Events, updating all Active Particles according to the Particle Events, and adding new Particles according to the Emitter settings.
NOTE: If inheriting from DrawableGameComponent and this is called, the Particle System will be updated twice per frame; once when it is called here, and again when automatically called by the Game object. If not inheriting from DrawableGameComponent, this acts the same as calling Update().