int Engine::Run() { if (!valid) return -1; if (quit == true) { Console::Error()<<("A component of Dynacoe has requested early termination of the instance")<< Console::End;; return -2; } Console::OverlayMessageMode(Console::MessageMode::Disabled); Console::Info() << "Dynacoe " << Version() << "\n\n"; Console::Info() << "Johnathan Corkery, 2018\nhttps://jcorks.github.io/Dynacoe/\n_________________________\n\nRegistered modules:\n\n"; for(int i = 0; i < modules.size(); ++i) { Backend * b; Console::Info() << "- " << modules[i]->GetName().c_str() << ": "; if ((b = modules[i]->GetBackend())) { Console::Info() << b->Name() << " [" << b->Version() << "]"; } else { Console::Info() << "[Default]"; } Console::Info() << "\n"; } Console::Info() << "\n"; Console::OverlayMessageMode(Console::MessageMode::Standard); while (!(quit)) { if (frameTime.GetTimeSince() >= 1000) { frameTime.Reset(); diagnostics.drawTimeMS = drawTime.GetTimeSince() / (float)frameCount; diagnostics.stepTimeMS = runTime.GetTimeSince() / (float)frameCount; diagnostics.systemTimeMS = sysTime.GetTimeSince() / (float)frameCount; diagnostics.engineRealTimeMS = engineTime.GetTimeSince() / (float) frameCount; //if (lastDrawTime >4) cout << lastDrawTime << endl; diagnostics.currentFPS = frameCount; frameCount = 0; sysTime.Set(); drawTime.Set(); runTime.Set(); debugTime.Set(); engineTime.Set(); } update(); render(); engineTime.Pause(); if (GetMaxFPS() >= 0) { Engine::Wait(GetMaxFPS()); } else { return -3; } engineTime.Resume(); drawTime.Pause(); runTime.Pause(); debugTime.Pause(); frameCount++; } return 0; }