From 163b10286f2e04d945e5fda9f6910b42b7442b71 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 12 Aug 2017 11:48:36 +0200 Subject: [PATCH] - Reset interpolation coordinates for all actors before the current thinking turn instead of at the start of each actor's own Tick function so that indirect actor movement gets properly interpolated. --- src/p_mobj.cpp | 4 ---- src/p_tick.cpp | 9 +++++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index c02490420..b49be43d8 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4069,10 +4069,6 @@ void AActor::Tick () return; } - // This is necessary to properly interpolate movement outside this function - // like from an ActorMover - ClearInterpolation(); - if (flags5 & MF5_NOINTERACTION) { // only do the minimally necessary things here to save time: diff --git a/src/p_tick.cpp b/src/p_tick.cpp index 78dfa9abb..820a4ff68 100644 --- a/src/p_tick.cpp +++ b/src/p_tick.cpp @@ -119,6 +119,15 @@ void P_Ticker (void) P_ResetSightCounters (false); R_ClearInterpolationPath(); + // Reset all actor interpolations for all actors before the current thinking turn so that indirect actor movement gets properly interpolated. + TThinkerIterator it; + AActor *ac; + + while ((ac = it.Next())) + { + ac->ClearInterpolation(); + } + // Since things will be moving, it's okay to interpolate them in the renderer. r_NoInterpolate = false;