// custom code goes here, in derived class
 // called for each particle, every frame, by emitter, if enabled
 public abstract void Update(Particle2D particle, float elapsed);
 // called for each particle, every frame, by emitter, if enabled
 public override void Update(Particle2D particle, float elapsed)
 {
     Vector2 v2 = particle.Movement;
     v2.Y += m_Gravity * elapsed;
     particle.Movement = v2;
 }