/// <summary> /// Constructs a new particle emitter object. /// </summary> public XParticleEmitter(ref XMain X, XParticleSystem particleSystem, float particlesPerSecond, Vector3 initialPosition) : base(ref X) { this.particleSystem = particleSystem; timeBetweenParticles = 1.0f / particlesPerSecond; previousPosition = initialPosition; }
/// <summary> /// Constructs a new projectile. /// </summary> public XProjectile(ref XMain X, XParticleSystem explosionParticles, XParticleSystem explosionSmokeParticles, XParticleSystem projectileTrailParticles) : base(ref X) { this.explosionParticles = explosionParticles; this.explosionSmokeParticles = explosionSmokeParticles; // Start at the origin, firing in a random (but roughly upward) direction. position = Vector3.Zero; velocity.X = (float)(random.NextDouble() - 0.5) * sidewaysVelocityRange; velocity.Y = (float)(random.NextDouble() + 0.5) * verticalVelocityRange; velocity.Z = (float)(random.NextDouble() - 0.5) * sidewaysVelocityRange; // Use the particle emitter helper to output our trail particles. trailEmitter = new XParticleEmitter(ref X, projectileTrailParticles, trailParticlesPerSecond, position); }