//-----------------------------------------------------------------------
inline void GravityAffector::_affect(ParticleTechnique* particleTechnique, Particle* particle, Ogre::Real timeElapsed)
{
    /** Applying Newton's law of universal gravitation.	*/
    Ogre::Vector3 distance = mDerivedPosition - particle->position;
    Ogre::Real length = distance.squaredLength();
    if (length > 0)
    {
        Ogre::Real force = (mGravity * particle->mass * mass) / length;
        particle->direction += force * distance * timeElapsed * _calculateAffectSpecialisationFactor(particle);
    }
}
	//-----------------------------------------------------------------------
	void LinearForceAffector::_affect(ParticleTechnique* particleTechnique, Particle* particle, Real timeElapsed)
	{
		// Affect the direction and take the specialisation into account
		if (mForceApplication == FA_ADD)
		{
			particle->direction += mScaledVector * _calculateAffectSpecialisationFactor(particle);
		}
		else
		{
			particle->direction = (particle->direction + mForceVector) / 2;
		}
	}