private void SpawnParticles(Point p, int count) { for (int i = 0; i < count; i++) { var offX = -25 + (float)Random.NextDouble() * 50; var offY = -25 + (float)Random.NextDouble() * 50; var dir = Vector2.Normalize(new Vector2(offX, offY)) * 4; Particle particle; var r = Random.Next(1, 4); if (r == 1) { particle = new ParticleTriangle(p.X + offX, p.Y + offY, dir.X, dir.Y, Random.Next(15, 25), 8 + (float)Random.NextDouble() * 24) { Acceleration = 0.9f }; } else if (r == 2) { particle = new ParticleSquare(p.X + offX, p.Y + offY, dir.X, dir.Y, Random.Next(15, 25), 8 + (float)Random.NextDouble() * 24) { Acceleration = 0.9f }; } else { particle = new ParticleCircle(p.X + offX, p.Y + offY, dir.X, dir.Y, Random.Next(15, 25), 4 + (float)Random.NextDouble() * 20) { Acceleration = 0.9f }; } _particleManager.AddParticle(particle); } }
private void SpawnFireParticles(float x, float y, int count) { for (int i = 0; i < count; i++) { var offX = -25 + (float)Random.NextDouble() * 50; var offY = -25 + (float)Random.NextDouble() * 50; var dir = Vector2.Normalize(new Vector2(offX, offY)); var size = 8 + (float)Random.NextDouble() * 24; var particle = new ParticleSquare(x + offX, y + (float)Math.Sqrt(size * size + size * size), dir.X, -Math.Abs(dir.Y * 2f), Random.Next(20, 40), size) { Acceleration = 1f }; _particleManager.AddParticle(particle); } }