From 02900c8fa5e5d0b54a5a0ac55be16a4dfaa7ea84 Mon Sep 17 00:00:00 2001 From: obligaron Date: Sun, 29 Aug 2021 20:18:35 +0200 Subject: [PATCH] Demo: Fix rendering jittering --- Source/engine/demomode.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Source/engine/demomode.cpp b/Source/engine/demomode.cpp index da2f54319..36a50c22a 100644 --- a/Source/engine/demomode.cpp +++ b/Source/engine/demomode.cpp @@ -173,19 +173,21 @@ bool GetRunGameLoop(bool &drawGame, bool &processInput) demoMsg dmsg = Demo_Message_Queue.front(); if (dmsg.type == DemoMsgType::Message) app_fatal("Unexpected Message"); - // disable additonal rendering to speedup replay - drawGame = dmsg.type == DemoMsgType::GameTick; - if (!Timedemo) { + if (Timedemo) { + // disable additonal rendering to speedup replay + drawGame = dmsg.type == DemoMsgType::GameTick; + } else { int currentTickCount = SDL_GetTicks(); int ticksElapsed = currentTickCount - DemoModeLastTick; bool tickDue = ticksElapsed >= gnTickDelay; + drawGame = false; if (tickDue) { if (dmsg.type == DemoMsgType::GameTick) { DemoModeLastTick = currentTickCount; } } else { float progressToNextGameTick = clamp((float)ticksElapsed / (float)gnTickDelay, 0.F, 1.F); - if (dmsg.progressToNextGameTick > progressToNextGameTick) { + if (dmsg.type == DemoMsgType::GameTick || dmsg.progressToNextGameTick > progressToNextGameTick) { // we are ahead of the replay => add a additional rendering for smoothness gfProgressToNextGameTick = progressToNextGameTick; processInput = false;