protected override PointF GetEndPosition(MovementComp movement) => GetStartPosition(movement).Add(y: Size);
protected override void ReverseSpeed(MovementComp movementComp, float momentumConservationFactor) => movementComp.MultiplySpeed(factorX: momentumConservationFactor);
protected override PointF GetStartPosition(MovementComp movementComp) => new PointF(x: BounceLimit, y: Position.Y);