void TriV::Engine::Core::TriVEngine::initiateEngineLoop() { std::cout << "ENGINE: Initiating Engine Loop..." << std::endl; while (!exitRequested) { frameDelta = engineClock.GetFrameDeltaSeconds(); frameAccumulator += frameDelta; if(frameAccumulator >= 1.0f) { framesPerSecond = engineClock.GetFrameCount() / frameAccumulator; std::cout << " FPS: " << framesPerSecond << " | Frame: " << frameDelta << "s | Render: " << engineClock.RenderAverage() << "ms | Update: " << engineClock.UpdateAverage() << "ms | Physics: " << engineClock.PhysicsAverage() << "ms" << std::endl; frameAccumulator = 0.0f; engineClock.Reset(); } engineClock.StartPhysicsTimer(); tickPhysics(); engineClock.StopPhysicsTimer(); engineClock.StartUpdateTimer(); tick(); engineClock.StopUpdateTimer(); engineClock.StartRenderTimer(); render(); engineClock.StopRenderTimer(); } shutdownEngine(); }
void tick(Sim & sim) { sim.time += 1; if ((sim.time % 10) == 0) { tickPumps(sim); } tickPhysics(sim); tickAgents(sim); if ((sim.time % 1000) == 0) //increase this if game feels unresponsive to cell changes { updateCellsByTerrain(sim); } }