public void Loop() { LoopResultStates.Clear(); // update input. controller.Loop(this); // position and angle memory. ox = x; oy = y; odx = dx; ody = dy; oa = a; oda = da; // overridable control and friction physics. LoopControlPhysics(); LoopFrictionPhysics(); LoopCollisionPhysics(); // advance position. x += dx; y += dy; oa = a % 360 + oa - a; a = a % 360 + da; }