public override void AffectParticles( ParticleSystem system, float timeElapsed )
{
// loop through the particles
for ( int i = 0; i < system.Particles.Count; i++ )
{
Particle p = (Particle)system.Particles[ i ];
float lifeTime = p.totalTimeToLive;
float particleTime = 1.0f - ( p.timeToLive / lifeTime );
if ( particleTime <= timeAdj[ 0 ] )
{
p.Color = colorAdj[ 0 ];
}
else if ( particleTime >= timeAdj[ MAX_STAGES - 1 ] )
{
p.Color = colorAdj[ MAX_STAGES - 1 ];
}
else
{
for ( int k = 0; k < MAX_STAGES - 1; k++ )
{
if ( particleTime >= timeAdj[ k ] && particleTime < timeAdj[ k + 1 ] )
{
particleTime -= timeAdj[ k ];
particleTime /= ( timeAdj[ k + 1 ] - timeAdj[ k ] );
p.Color.r = ( ( colorAdj[ k + 1 ].r * particleTime ) + ( colorAdj[ k ].r * ( 1.0f - particleTime ) ) );
p.Color.g = ( ( colorAdj[ k + 1 ].g * particleTime ) + ( colorAdj[ k ].g * ( 1.0f - particleTime ) ) );
p.Color.b = ( ( colorAdj[ k + 1 ].b * particleTime ) + ( colorAdj[ k ].b * ( 1.0f - particleTime ) ) );
p.Color.a = ( ( colorAdj[ k + 1 ].a * particleTime ) + ( colorAdj[ k ].a * ( 1.0f - particleTime ) ) );
break;
}
}
}
}
}