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); } } }
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); } }