From f72aa63f363554e76e8a4240e7e529b3e9f5201e Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 14 Aug 2023 01:00:11 -0700 Subject: [PATCH] Interpolate view, even when paused Fixes slideshow movement with demo freecam while paused. Does not appear to jitter like texture scrollers do. --- src/d_main.cpp | 3 +++ src/r_main.cpp | 3 ++- src/r_main.h | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index 0fc9f36f1..8133900b8 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -907,11 +907,14 @@ void D_SRB2Loop(void) { rendertimefrac = FRACUNIT; } + + rendertimefrac_unpaused = g_time.timefrac; } else { renderdeltatics = realtics * FRACUNIT; rendertimefrac = FRACUNIT; + rendertimefrac_unpaused = FRACUNIT; } if ((interp || doDisplay) && !frameskip) diff --git a/src/r_main.cpp b/src/r_main.cpp index 8adb6ab5e..867cc950d 100644 --- a/src/r_main.cpp +++ b/src/r_main.cpp @@ -89,6 +89,7 @@ mobj_t *r_viewmobj; int r_splitscreen; fixed_t rendertimefrac; +fixed_t rendertimefrac_unpaused; fixed_t renderdeltatics; boolean renderisnewtic; @@ -1215,7 +1216,7 @@ R_SetupCommonFrame else newview->sector = R_PointInSubsector(newview->x, newview->y)->sector; - R_InterpolateView(rendertimefrac); + R_InterpolateView(rendertimefrac_unpaused); } static void R_SetupAimingFrame(int s) diff --git a/src/r_main.h b/src/r_main.h index 762095bff..c3dd7a5b4 100644 --- a/src/r_main.h +++ b/src/r_main.h @@ -39,6 +39,8 @@ extern size_t validcount, linecount, loopcount, framecount; // The fraction of a tic being drawn (for interpolation between two tics) extern fixed_t rendertimefrac; +// Same as rendertimefrac but not suspended when the game is paused +extern fixed_t rendertimefrac_unpaused; // Evaluated delta tics for this frame (how many tics since the last frame) extern fixed_t renderdeltatics; // The current render is a new logical tic