/// <summary>
/// Updates the Emitter's Position and Orientation according to its Velocities and Accelerations, and returns how many Particles should be emitted this frame.
/// </summary>
/// <param name="fElapsedTimeInSeconds">How long (in seconds) it has been since this function was called.</param>
/// <returns>Returns the number of Particles that should be emitted.</returns>
public int UpdateAndGetNumberOfParticlesToEmit(float fElapsedTimeInSeconds)
{
// Update the Emitter's Positional, Rotational, and Pivotal Data
PositionData.Update(fElapsedTimeInSeconds);
OrientationData.Update(fElapsedTimeInSeconds);
PivotPointData.Update(fElapsedTimeInSeconds);
// Calculate how many Particles should be generated
// If Particles should be emitted
int iNumberOfParticlesToEmit = 0;
if (_particlesPerSecond > 0.0f && Enabled)
{
// If the Emitter is emitting Particles Automatically
if (EmitParticlesAutomatically)
{
// Get how many Particles should be emitted
iNumberOfParticlesToEmit = CalculateHowManyParticlesToEmit(fElapsedTimeInSeconds);
}
// Else if Burst Particles should be emitted for a specific amount of Time
else if (_burstTimeInSeconds > 0.0f)
{
// Make sure we do not emit Particles for too long
float fModifiedElapsedTime = fElapsedTimeInSeconds;
if (fModifiedElapsedTime > _burstTimeInSeconds)
{
// Only emit Particles for as long as the Burst lasts
fModifiedElapsedTime = _burstTimeInSeconds;
}
// Get how many Particles should be emitted
iNumberOfParticlesToEmit = CalculateHowManyParticlesToEmit(fModifiedElapsedTime);
// Subtract the Elapsed Time from the Burst Time
BurstTime -= fModifiedElapsedTime;
}
// Else if a specific Number Of Burst Particles should be emitted
else if (_burstNumberOfParticles > 0)
{
// Get how many Particles should be emitted
iNumberOfParticlesToEmit = CalculateHowManyParticlesToEmit(fElapsedTimeInSeconds);
// If we are emitting too many Particles
if (iNumberOfParticlesToEmit > _burstNumberOfParticles)
{
iNumberOfParticlesToEmit = _burstNumberOfParticles;
}
// Subtract the Number Of Particles being Emitted from the Number Of Particles that still need to be Emitted
BurstParticles -= iNumberOfParticlesToEmit;
}
}
// Return how many Particles should be emitted
return(iNumberOfParticlesToEmit);
}