Axiom.ParticleFX.ColorInterpolatorAffector.AffectParticles C# (CSharp) Method

AffectParticles() public method

public AffectParticles ( ParticleSystem system, float timeElapsed ) : void
system ParticleSystem
timeElapsed float
return void
		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;
						}
					}
				}
			}
		}