1This shows in which order input handling, physics computations and
2other kart related items are updated in each frame.
3
4main_loop:
5    getDT()                              : Determine nexts DT --> simulation
6                                           is [T, T+DT] with T=now.
7    RewindManager::addNextTimeStep()     : Adds a default TimeStepInfo entry to the
8                                           RewindQueue which will store events for the
9					   current time step (e.g. key presses, and
10					   network data).
11    irr_driver::update()                 : Rendering and input handling.
12        Controller::action()             : Store user action in m_controls of
13	                                   kart. Clients send event to server.
14    RaceEventManager::update()           : A thin wrapper around world used in networked
15                                           races.
16        RewindManager::playEventsTill()  : Plays all events in [T, T+DT]: copies unhandled
17	                                   network events that must be handled at the
18 					   current time to the current TimeStepInfo. Can do
19					   complete rewind and replay till T is reached again!
20    World::updateWorld()
21        RewindManager::update()          : Store current state on server if necessary and
22	                                   broadcast it to clients.
23	Karts::update()
24	     Moveable::update()          : Copy physics data from bullet to STK.
25	     updateSpeed()               : Get physics speed and set it in kart.
26	     Controller::update()        : Set kart steering based on user/AI input.
27	     Slipstream::update()        : call Kart::handleZipper if required.
28	     updatePhysics()
29	         HandleStartBoost        : Trigger boost if required.
30		 updateEnginePower...()  : Sets engine power/brakes for bullet vehicle.
31		 Skidding::update()      : Update skidding values (which will
32		                           affect steering).
33		 setSteering             : Sets the bullet steering based on
34		                           kart's current steering.
35		 updateSliding()         : Test for sliding which can reduce the wheels
36		                           friction/grip, causing the physics to slide.
37		 MaxSpeed::update()      : Cap speed of kart if kart is too fast.
38            !physicsafter                : !Print debug values
39	Physics::update()                : Time step bullet as often as necessary. This is
40					   using the steering etc information set above.
41    ProtocolManager::update()            : Synchronous protocol updates.
42    World::updateTime()                  : Increase time from T to T+DT.