diff --git a/src/d_clisrv.c b/src/d_clisrv.c index e28eb8447..8cefed899 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -66,6 +66,7 @@ #include "music.h" #include "k_bans.h" #include "sanitize.h" +#include "r_fps.h" // cl loading screen #include "v_video.h" @@ -6045,6 +6046,8 @@ boolean TryRunTics(tic_t realtics) if (ticking) { + boolean tickInterp = true; + // run the count * tics while (neededtic > gametic) { @@ -6073,7 +6076,17 @@ boolean TryRunTics(tic_t realtics) P_PostLoadLevel(); } - G_Ticker((gametic % NEWTICRATERATIO) == 0); + boolean run = (gametic % NEWTICRATERATIO) == 0; + + if (run && tickInterp) + { + // Update old view state BEFORE ticking so resetting + // the old interpolation state from game logic works. + R_UpdateViewInterpolation(); + tickInterp = false; // do not update again in sped-up tics + } + + G_Ticker(run); } if (Playing() && netgame && (gametic % TICRATE == 0)) diff --git a/src/p_tick.c b/src/p_tick.c index b550310f9..ed89f563b 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -852,13 +852,6 @@ void P_Ticker(boolean run) } } - if (run) - { - // Update old view state BEFORE ticking so resetting - // the old interpolation state from game logic works. - R_UpdateViewInterpolation(); - } - if (objectplacing) { if (OP_FreezeObjectplace())