void PULinearForceAffector::updatePUAffector( PUParticle3D *particle, float /*deltaTime*/ )
{
    //for (auto iter : _particleSystem->getParticles())
    {
        //PUParticle3D *particle = iter;
        // Affect the direction and take the specialisation into account
        if (_forceApplication == FA_ADD)
        {
            particle->direction += _scaledVector * calculateAffectSpecialisationFactor(particle);
        }
        else
        {
            particle->direction = (particle->direction + _forceVector) / 2;
        }
    }

}
void PUGravityAffector::updatePUAffector( PUParticle3D *particle, float deltaTime )
{
    //for (auto iter : _particleSystem->getParticles())
    {
        //PUParticle3D *particle = iter;
        // Applied scaling in V1.3.1
        /** Applying Newton's law of universal gravitation.	*/
        Vec3 distance = _derivedPosition - particle->position;
        float length = distance.lengthSquared();
        float scaleVelocity = 1.0f;
        //if (mParentTechnique)
        {
            scaleVelocity = (static_cast<PUParticleSystem3D *>(_particleSystem))->getParticleSystemScaleVelocity();
        }
        if (length > 0/* && mParentTechnique*/)
        {
            //Real force = (mGravity * particle->mass * mass) / length;
            float force = (scaleVelocity * _gravity * particle->mass * _mass) / length;
            particle->direction += force * distance * deltaTime * calculateAffectSpecialisationFactor(particle);
        }
    }
}