From 8fb939df7999a4f73535fc7fed6afa2c95768fe9 Mon Sep 17 00:00:00 2001
From: Sally Coolatta <tehrealsalt@gmail.com>
Date: Fri, 24 Dec 2021 11:30:19 -0500
Subject: [PATCH] Add functions to handle interpolation

Much less code duplication
---
 src/r_fps.c | 20 ++++++++++++++++++++
 src/r_fps.h |  4 ++++
 2 files changed, 24 insertions(+)

diff --git a/src/r_fps.c b/src/r_fps.c
index 819df03258..863e9613a4 100644
--- a/src/r_fps.c
+++ b/src/r_fps.c
@@ -177,6 +177,26 @@ void R_SetViewContext(enum viewcontext_e _viewcontext)
 	}
 }
 
+fixed_t R_InterpolateFixed(fixed_t from, fixed_t to)
+{
+	if (cv_frameinterpolation.value == 0)
+	{
+		return to;
+	}
+
+	return (R_LerpFixed(from, to, rendertimefrac));
+}
+
+angle_t R_InterpolateAngle(angle_t from, angle_t to)
+{
+	if (cv_frameinterpolation.value == 0)
+	{
+		return to;
+	}
+
+	return (R_LerpAngle(from, to, rendertimefrac));
+}
+
 void R_InterpolateMobjState(mobj_t *mobj, fixed_t frac, interpmobjstate_t *out)
 {
 	out->x = R_LerpFixed(mobj->old_x, mobj->x, frac);
diff --git a/src/r_fps.h b/src/r_fps.h
index 0e10cf5e66..aa6213ae34 100644
--- a/src/r_fps.h
+++ b/src/r_fps.h
@@ -99,6 +99,10 @@ void R_UpdateViewInterpolation(void);
 void R_ResetViewInterpolation(void);
 // Set the current view context (the viewvars pointed to by newview)
 void R_SetViewContext(enum viewcontext_e _viewcontext);
+
+fixed_t R_InterpolateFixed(fixed_t from, fixed_t to);
+angle_t R_InterpolateAngle(angle_t from, angle_t to);
+
 // Evaluate the interpolated mobj state for the given mobj
 void R_InterpolateMobjState(mobj_t *mobj, fixed_t frac, interpmobjstate_t *out);
 // Evaluate the interpolated mobj state for the given precipmobj
-- 
GitLab