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.