Пример #1
0
 public void FreezeParticle(Particle particle)
 {
     particle.IsFrozen = true;
     //frozenParticlesTMP.Add(particle);
     activeParticles.Remove(particle);
     frozenParticles.Add(particle);
 }
Пример #2
0
        public override void Fire()
        {
            List<Particle> particles = new List<Particle>();

            float Radius = 5;
            int count = 100;
            int maxParticleCount = 500;
            int activeParticles = ActiveParticleCount();

            if (count +  activeParticles > maxParticleCount)
                count = maxParticleCount - activeParticles;

            for (int i = 0; i < count; i++)
            {
                Particle particle = new Particle(this);
                particle.TTL = Runtime.GetRandom().Next(100,500);
                float rads = (float)(Runtime.GetRandom().NextDouble() * MathHelper.TwoPi);
                Vector2 offset = new Vector2((float)Math.Cos(rads) * Radius, (float)Math.Sin(rads) * Radius);
                Vector2 emitPosition = Vector2.Add(Position, offset);
                particle.X = emitPosition.X;
                particle.Y = emitPosition.Y;
                Vector2 vel = new Vector2(Runtime.GetRandom().Next(-50,50), Runtime.GetRandom().Next(-50,50));
                vel.Normalize();
                particle.Velocity = vel * Runtime.GetRandom().Next(85,185);
                particles.Add(particle);
            }

            this.activeParticles.AddRange(particles);
        }