From a67432a415bea5ea42cb5adf05588c9f13a6611a Mon Sep 17 00:00:00 2001
From: Eidolon <furyhunter600@gmail.com>
Date: Sat, 23 Apr 2022 12:49:54 -0500
Subject: [PATCH] Add mobj interpolator on load netgame

---
 src/p_mobj.c  | 4 ++--
 src/p_mobj.h  | 2 ++
 src/p_saveg.c | 2 ++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/p_mobj.c b/src/p_mobj.c
index 6c9dc59af2..cda1c3cf79 100644
--- a/src/p_mobj.c
+++ b/src/p_mobj.c
@@ -48,7 +48,7 @@ static size_t interpolated_mobjs_capacity = 0;
 
 // NOTE: This will NOT check that the mobj has already been added, for perf
 // reasons.
-static void AddInterpolatedMobj(mobj_t *mobj)
+void P_AddMobjInterpolator(mobj_t *mobj)
 {
 	if (interpolated_mobjs_len >= interpolated_mobjs_capacity)
 	{
@@ -11010,7 +11010,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
 	if (CheckForReverseGravity && !(mobj->flags & MF_NOBLOCKMAP))
 		P_CheckGravity(mobj, false);
 
-	AddInterpolatedMobj(mobj);
+	P_AddMobjInterpolator(mobj);
 
 	return mobj;
 }
diff --git a/src/p_mobj.h b/src/p_mobj.h
index 5ba79e7179..9b5a215a2e 100644
--- a/src/p_mobj.h
+++ b/src/p_mobj.h
@@ -506,6 +506,8 @@ void P_EmeraldManager(void);
 
 // Initialize internal mobj interpolator list (e.g. during level loading)
 void P_InitMobjInterpolators(void);
+// Add interpolation state for the given mobj
+void P_AddMobjInterpolator(mobj_t *mobj);
 void P_UpdateMobjInterpolators(void);
 void P_ResetMobjInterpolationState(mobj_t *mobj);
 void P_ResetPrecipitationMobjInterpolationState(precipmobj_t *mobj);
diff --git a/src/p_saveg.c b/src/p_saveg.c
index 46b509d19c..eed5941988 100644
--- a/src/p_saveg.c
+++ b/src/p_saveg.c
@@ -2969,6 +2969,8 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
 
 	mobj->info = (mobjinfo_t *)next; // temporarily, set when leave this function
 
+	P_AddMobjInterpolator(mobj);
+
 	return &mobj->thinker;
 }
 
-- 
GitLab