Ejemplo n.º 1
0
        protected override void Update()
        {
            emitTimer -= Time.SecScaled;
            if (emitTimer <= 0)
            {
                emitTimer = Rand.Float(EmitRateMin, EmitRateMax);

                int count = Rand.Int(SprayCountMin, SprayCountMax);
                for (int i = 0; i < count; i++)
                {
                    var particle = Particle.Get();

                    particle.Position = Object.WorldPosition;

                    var adjSprayAngle = VectorOps.AddAngleDegrees(EmitDirection, Rand.Float(-SprayAngleVarianceDegrees / 2, SprayAngleVarianceDegrees / 2));
                    particle.Velocity = adjSprayAngle.Scale(Rand.Float(MinSpeed, MaxSpeed));

                    particle.Color     = Color;
                    particle.Lifespan  = Rand.Float(MinLifespan, MaxLifespan);
                    particle.DrawLayer = DrawLayer;

                    Pigeon.World.ParticleRegistry.Register(particle);
                }
            }
        }
Ejemplo n.º 2
0
        public void Burst(Point position)
        {
            for (int i = 0; i < SprayCount; i++)
            {
                var particle = Particle.Get();

                particle.Position = position;

                var adjSprayAngle = VectorOps.AddAngleDegrees(SprayDir, Rand.Float(-SprayAngleVarianceDegrees, SprayAngleVarianceDegrees));
                particle.Velocity = adjSprayAngle.Scale(Rand.Float(MinSpeed, MaxSpeed));

                particle.Color     = Color;
                particle.Lifespan  = Rand.Float(MinLifespan, MaxLifespan);
                particle.DrawLayer = DrawLayer;

                Pigeon.World.ParticleRegistry.Register(particle);
            }
        }