inline void run() { SSVU_ASSERT(gameEngine != nullptr); while(gameEngine->isRunning()) { if(mustRecreate) recreateWindow(); renderWindow.setActive(true); this->clear(); gameEngine->refreshTimer(); auto tempMs(HRClock::now()); { runEvents(); gameEngine->runUpdate(); } msUpdate = std::chrono::duration_cast<FTDuration>( HRClock::now() - tempMs) .count(); tempMs = HRClock::now(); { gameEngine->runDraw(); renderWindow.display(); } msDraw = std::chrono::duration_cast<FTDuration>( HRClock::now() - tempMs) .count(); gameEngine->runFPS(); } }
GameWindow::GameWindow(const string& mTitle, TimerBase& mTimer, unsigned int mScreenWidth, unsigned int mScreenHeight, int mPixelMultiplier, bool mFullscreen) : title{mTitle}, width{mScreenWidth}, height{mScreenHeight}, pixelMultiplier{mPixelMultiplier}, fullscreen{mFullscreen}, timer(mTimer) { recreateWindow(); }