]> git.tdb.fi Git - libs/game.git/commitdiff
Ignore catch-up ticks in Renderer
authorMikko Rasa <tdb@tdb.fi>
Wed, 2 Apr 2025 11:20:46 +0000 (14:20 +0300)
committerMikko Rasa <tdb@tdb.fi>
Wed, 2 Apr 2025 11:20:46 +0000 (14:20 +0300)
If falling behind was caused by rendering (via vsync or just complex
frames) trying to render on every tick would just make the situation
worse.

Also render on partial ticks in case the desired output framerate is
higher than the reciprocal stepsize.

source/gameview/renderer.cpp
source/gameview/renderer.h

index ee247bf208cc44a6e6963467c783b05bf4e0402f..0d0dbdd20305849eed289fb50cbb2427536b01fa 100644 (file)
@@ -205,8 +205,11 @@ void Renderer::camera_changed(const Game::Events::CameraChanged &event)
                tracking_anchor = nullptr;
 }
 
-void Renderer::tick(Time::TimeDelta)
+void Renderer::tick(Time::TimeDelta dt, Time::TimeDelta backlog)
 {
+       if(dt>Time::zero && backlog>dt)
+               return;
+
        if(shadows_changed)
        {
                shadows_changed = false;
index d26e160c79afcf4199df1b9b42bc309943cfaa9f..211a0e96f93403f6bf92acbffe1fa3afd960a21a 100644 (file)
@@ -79,7 +79,8 @@ private:
        void camera_changed(const Game::Events::CameraChanged &);
 
 public:
-       void tick(Time::TimeDelta) override;
+       void tick(Time::TimeDelta dt) override { tick(dt, Time::zero); }
+       void tick(Time::TimeDelta dt, Time::TimeDelta backlog) override;
 };
 
 } // namespace Msp::GameView