public override void LogicUpdate(GameTime time, float t)
{
// Track entity
if (trackedEntity != null)
{
this.position = trackedEntity.position;
this.heading = trackedEntity.heading;
}
// Add new
if (particles.Count < maxNumberOfParticles)
{
foreach (ParticleSource source in particleSources)
{
Particle p = source.CreateParticle(time, t, this);
if (p != null) particles.Add(p);
}
}
// Update
foreach (Particle p in particles)
{
p.Update(t, this);
}
// Cull dead
particles.RemoveAll(p => p.IsDead());
}