void IUpdateable.Update(TimeSpan elapsedInFrame) { FrameStartPosition = ObjectToMove.Position.Copy(); foreach (var adjuster in MotionAdjusters) { adjuster.Update(ObjectToMove, MotionVector); } foreach (var multiplier in MotionMultipliers) { MotionVector.X.TargetScale = multiplier.GetTargetMod(); MotionVector.X.DeltaScale = multiplier.GetDeltaMod(); MotionVector.Y.TargetScale = multiplier.GetTargetMod(); MotionVector.Y.DeltaScale = multiplier.GetDeltaMod(); } MotionVector.Adjust(elapsedInFrame); var motion = CurrentMotionPerSecond; FrameVelocity = CurrentMotionPerSecond.Scale(elapsedInFrame.TotalSeconds); ObjectToMove.Position.Translate(FrameVelocity); }