public void Update(GameTime gameTime) { EmissionPoint = EmitterLocation; TTL.Update(gameTime.ElapsedGameTime); if (!Started) { Started = true; OnStart(this); } if (!TTL.IsComplete && Particles.Count < Max) { Emit(gameTime); } foreach (var m in Modifiers.Where(p => !p.IsPattern)) { m.Update(gameTime, this); } for (var particle = 0; particle < Particles.Count; particle++) { Particles[particle].Update(gameTime); if (!Particles[particle].TTL.IsComplete) { continue; } Particles.RemoveAt(particle); particle--; } if (Ended || !TTL.IsComplete) { return; } Ended = true; OnEnd(this); }