void IUpdateable.Update(TimeSpan elapsedInFrame) { FrameStartPosition.Set(ObjectToMove.Position); foreach (var force in Forces) { if (force.Active) { MotionPerSecond = force.AdjustMotionPerSecond(elapsedInFrame, MotionPerSecond); } } FrameVelocity = CalcFrameVelocity(elapsedInFrame); ObjectToMove.Position.Center = ObjectToMove.Position.Center.Translate(FrameVelocity); if (MotionPerSecond.X != 0 || MotionPerSecond.Y != 0) { LastNonZeroMotion = MotionPerSecond; } }
/// <summary> /// Translates both the current and frame start positions /// </summary> /// <param name="adjustment"></param> public void CorrectPosition(Vector2 adjustment) { ObjectToMove.Position.Translate(adjustment); FrameStartPosition.Translate(adjustment); }