//updating missile explosion effects with smoke trial public void MissileFiredExplosions(Vector3 position, Vector3 velocity, BBN_Game.Objects.StaticObject parent) { //create new projectile every time a missile is fired projectiles.Add(new Projectile(explosionParticles, explosionSmokeParticles, projectileTrailParticles, position, velocity, parent)); }
/// <summary> /// Updates the projectile. /// </summary> public bool Update(GameTime gameTime, Vector3 pos, Vector3 vel, float dist, BBN_Game.Objects.StaticObject parent) { if (parent.Equals(Parent)) { float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds; // Simple projectile physics. //position += velocity * elapsedTime; //velocity.Y -= elapsedTime * gravity; //age += elapsedTime; position = pos; velocity = vel; // Update the particle emitter, which will create our particle trail. trailEmitter.Update(gameTime, position); // If enough time has passed, explode! Note how we pass our velocity // in to the AddParticle method: this lets the explosion be influenced // by the speed and direction of the projectile which created it. if (dist <= 0) //age > projectileLifespan { // for (int i = 0; i < numExplosionParticles; i++) // explosionParticles.AddParticle(position, velocity); // //for (int i = 0; i < numExplosionSmokeParticles; i++) // // explosionSmokeParticles.AddParticle(position, velocity); return(false); } } return(true); }
/// <summary> /// Constructs a new projectile. /// </summary> public Projectile(ParticleSystem explosionParticles, ParticleSystem explosionSmokeParticles, ParticleSystem projectileTrailParticles, Vector3 pos, Vector3 vel, BBN_Game.Objects.StaticObject parent) { this.explosionParticles = explosionParticles; this.explosionSmokeParticles = explosionSmokeParticles; position = pos; velocity = vel; Parent = parent; //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 ParticleEmitter(projectileTrailParticles, trailParticlesPerSecond, position); }
/// <summary> /// Constructs a new projectile. /// </summary> public Projectile(ParticleSystem explosionParticles, ParticleSystem explosionSmokeParticles, ParticleSystem projectileTrailParticles, Vector3 pos, Vector3 vel, BBN_Game.Objects.StaticObject parent) { this.explosionParticles = explosionParticles; this.explosionSmokeParticles = explosionSmokeParticles; position = pos; velocity = vel; Parent = parent; //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 ParticleEmitter(projectileTrailParticles, trailParticlesPerSecond, position); }
//updates the list of active projectiles public void UpdateProjectiles(GameTime gameTime, Vector3 pos, Vector3 vel, float dist, BBN_Game.Objects.StaticObject parent) { int i = 0; while (i < projectiles.Count) { if (!projectiles[i].Update(gameTime, pos, vel, dist, parent)) { projectiles.RemoveAt(i);//remove projectiles at end of their life } else { i++;//advance to next projectile } } }