private void AddExplosionParticle(Vector2 explosionPos, float size, float maxAge, GameTime gameTime) { ParticleData particle = new ParticleData(); particle.OriginalPosition = explosionPos; particle.Position = particle.OriginalPosition; particle.BirthTime = (float)gameTime.TotalGameTime.TotalMilliseconds; particle.MaxAge = maxAge; particle.Scaling = .25f; particle.ModColor = Color.Red; Random rand = new Random(42); //Gen a random direction float particleDistance = (float)rand.NextDouble() * size; Vector2 displacement = new Vector2(particleDistance, 0); float angle = (float)rand.Next(360).ToRadians(); displacement = Vector2.Transform(displacement, Matrix.CreateRotationZ(angle)); particle.Direction = displacement; particle.Accelaration = 3.0f * particle.Direction; particleList.Add(particle); }
private void DrawExplosion() { for (int i = 0; i < particleList.Count; i++) { ParticleData particle = particleList[i]; spriteBatch.Draw(explosionTexture, particle.Position, null, particle.ModColor, i, new Vector2(256, 256), particle.Scaling, SpriteEffects.None, 1); } }