Axiom.ParticleFX.DeflectorPlaneAffector.AffectParticles C# (CSharp) Méthode

AffectParticles() public méthode

public AffectParticles ( ParticleSystem system, float timeElapsed ) : void
system ParticleSystem
timeElapsed float
Résultat void
		public override void AffectParticles( ParticleSystem system, float timeElapsed )
		{
			// precalculate distance of plane from origin
			float planeDistance = -_planeNormal.Dot( _planePoint ) / Utility.Sqrt( _planeNormal.Dot( _planeNormal ) );
			Vector3 directionPart;

			foreach ( Particle pi in system.Particles )
			{
				Vector3 direction = pi.Direction * timeElapsed;
				if ( _planeNormal.Dot( pi.Position + direction ) + planeDistance <= 0.0f )
				{
					float a = _planeNormal.Dot( pi.Position ) + planeDistance;
					if ( a > 0.0 )
					{
						// for intersection point
						directionPart = direction * ( -a / direction.Dot( _planeNormal ) );
						// set new position
						pi.Position = ( pi.Position + ( directionPart ) ) + ( ( ( directionPart ) - direction ) * _bounce );

						// reflect direction vector
						pi.Direction = ( pi.Direction - ( 2.0f * pi.Direction.Dot( _planeNormal ) * _planeNormal ) ) * _bounce;
					}
				}
			}
		}