From 1bae44c39bad826ef3b8a6fb457bc648d286a7ab Mon Sep 17 00:00:00 2001 From: nashmuhandes Date: Sat, 8 Apr 2023 06:55:32 +0800 Subject: [PATCH] Stop rotating the models if the game is actually paused. --- src/r_data/models.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/r_data/models.cpp b/src/r_data/models.cpp index ab632b34f8..23cfb0893b 100644 --- a/src/r_data/models.cpp +++ b/src/r_data/models.cpp @@ -43,6 +43,8 @@ #include "i_time.h" #include "texturemanager.h" #include "modelrenderer.h" +#include "i_interface.h" +#include "p_tick.h" #ifdef _MSC_VER @@ -51,6 +53,7 @@ CVAR(Bool, gl_interpolate_model_frames, true, CVAR_ARCHIVE) EXTERN_CVAR (Bool, r_drawvoxels) +float pauseTimeOffset = .0f; extern TDeletingArray Voxels; extern TDeletingArray VoxelDefs; @@ -103,9 +106,23 @@ void RenderModel(FModelRenderer *renderer, float x, float y, float z, FSpriteMod if (smf->flags & MDL_ROTATING) { + bool isPaused = paused || P_CheckTickerPaused(); + float timeFloat; + if (isPaused) + { + if (pauseTimeOffset == .0f) + pauseTimeOffset = (I_GetTime() + I_GetTimeFrac()); + timeFloat = pauseTimeOffset; + } + else + { + pauseTimeOffset = .0f; + timeFloat = (I_GetTime() + I_GetTimeFrac()); + } + if (smf->rotationSpeed > 0.0000000001 || smf->rotationSpeed < -0.0000000001) { - double turns = (I_GetTime() + I_GetTimeFrac()) / (200.0 / smf->rotationSpeed); + double turns = timeFloat / (200.0 / smf->rotationSpeed); turns -= floor(turns); rotateOffset = turns * 360.0; }