//----------------------------------------------------------------------- void SphereSurfaceEmitter::_initParticleDirection(Particle* particle) { if (mAutoDirection) { // The value of the direction vector that has been set does not have a meaning for // the sphere surface emitter. Radian angle; _generateAngle(angle); if (angle != Radian(0)) { particle->direction = mRandomVector.randomDeviant(angle, mUpVector); particle->originalDirection = particle->direction; } else { particle->direction = mRandomVector; particle->originalDirection = particle->direction; } } else { // Use the standard way ParticleEmitter::_initParticleDirection(particle); } }
//----------------------------------------------------------------------- void CircleEmitter::_initParticleDirection(Particle* particle) { if (mAutoDirection) { // The value of the direction vector that has been set does not have a meaning for // the circle emitter. Radian angle; _generateAngle(angle); if (angle != Radian(0)) { particle->direction = (mOrientation * Vector3(mX, 0, mZ) ).randomDeviant(angle, mUpVector); particle->originalDirection = particle->direction; } else { particle->direction = Vector3(mX, 0, mZ); particle->direction = mOrientation * Vector3(mX, 0, mZ); } } else { // Use the standard way ParticleEmitter::_initParticleDirection(particle); } }
//----------------------------------------------------------------------- void ParticleEmitter::_initParticleDirection(Particle* particle) { // Use the default way of initialising the particle direction Radian angle; _generateAngle(angle); if (angle != Radian(0)) { particle->direction = mParticleDirection.randomDeviant(angle, mUpVector); } else { particle->direction = mParticleDirection; } particle->originalDirection = particle->direction; particle->originalDirectionLength = particle->direction.length(); }
//----------------------------------------------------------------------- void LineEmitter::_initParticleDirection(Particle* particle) { if (mAutoDirection) { Radian angle; _generateAngle(angle); if (angle != Radian(0)) { particle->direction = mPerpendicular.randomDeviant(angle, mUpVector); particle->originalDirection = particle->direction; } else { particle->direction = mPerpendicular; particle->originalDirection = particle->direction; } } else { // Use the standard way ParticleEmitter::_initParticleDirection(particle); } }