示例#1
0
        private static Particle GenerateNewParticle(ParticlesStyle style)
        {
            Texture2D texture  = textures[RandomNumbersHelper.ReturnRandomNumber(textures.Count)];
            Vector2   position = EmitterLocation;
            Vector2   velocity = new Vector2(
                1f * (float)(RandomNumbersHelper.ReturnRandomDouble() * 2 - 1),
                1f * (float)(RandomNumbersHelper.ReturnRandomDouble() * 2 - 1));
            float angle           = 0;
            float angularVelocity = 0.1f * (float)(RandomNumbersHelper.ReturnRandomDouble() * 2 - 1);
            Color color;
            float size = (float)RandomNumbersHelper.ReturnRandomDouble();
            int   ttl  = 5 + RandomNumbersHelper.ReturnRandomNumber(20);

            switch (style)
            {
            case ParticlesStyle.ATTACK:
                color     = Color.DarkRed;
                position += new Vector2(Constants.TILESIZE / 2, Constants.TILESIZE / 2);
                size      = size / 2;
                break;

            default:
                color = new Color(
                    (float)RandomNumbersHelper.ReturnRandomDouble(),
                    (float)RandomNumbersHelper.ReturnRandomDouble(),
                    (float)RandomNumbersHelper.ReturnRandomDouble());
                break;
            }

            return(new Particle(texture, position, velocity, angle, angularVelocity, color, size, ttl));
        }
示例#2
0
 public static void NewParticleStreamAt(int ammount, Vector2 position, ParticlesStyle style)
 {
     SetPosition(position);
     for (int i = 0; i < ammount; i++)
     {
         particles.Add(GenerateNewParticle(style));
     }
 }