/// <summary> /// Moves the raindrop to a new position according to the gravity. /// </summary> public bool Animate(RainyDay rainyday, CanvasDrawingSession context) { if (terminate) { return false; } var stopped = rainyday.Gravity(context, this); if (!stopped) { rainyday.Trail(context, this); } if (rainyday.EnableCollisions) { var collisions = rainyday.Matrix.Update(this, stopped); if (collisions != null) { rainyday.Collision(context, this, collisions); } } return !stopped || terminate; }