From 3320faec8cebecb124882d38c7ec0ad37b79340a 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.c | 3 +++ src/r_main.c | 3 ++- src/r_main.h | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/d_main.c b/src/d_main.c index cade52936..bc042c57c 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -886,11 +886,14 @@ void D_SRB2Loop(void) { rendertimefrac = FRACUNIT; } + + rendertimefrac_unpaused = g_time.timefrac; } else { renderdeltatics = realtics * FRACUNIT; rendertimefrac = FRACUNIT; + rendertimefrac_unpaused = FRACUNIT; } if (interp || doDisplay) diff --git a/src/r_main.c b/src/r_main.c index 107e6684b..6cf539574 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -81,6 +81,7 @@ mobj_t *r_viewmobj; int r_splitscreen; fixed_t rendertimefrac; +fixed_t rendertimefrac_unpaused; fixed_t renderdeltatics; boolean renderisnewtic; @@ -1227,7 +1228,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 dcd496cfb..0f5560308 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