Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }