From d718ccb4bac76dccd22d0e076f2e544e9f47577d Mon Sep 17 00:00:00 2001 From: Eidolon Date: Mon, 31 Oct 2022 20:23:49 -0500 Subject: [PATCH] Use precip interp if gl sprite is for precip --- src/hardware/hw_main.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 800f0b188..8ed8cf4fc 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -3805,7 +3805,34 @@ static void HWR_RotateSpritePolyToAim(gl_vissprite_t *spr, FOutVector *wallVerts && spr && spr->mobj && !R_ThingIsPaperSprite(spr->mobj) && wallVerts) { - float basey = FIXED_TO_FLOAT(spr->mobj->z); + // uncapped/interpolation + interpmobjstate_t interp = {0}; + + // do interpolation + if (R_UsingFrameInterpolation() && !paused) + { + if (spr->precip) + { + R_InterpolatePrecipMobjState((precipmobj_t *)spr->mobj, rendertimefrac, &interp); + } + else + { + R_InterpolateMobjState(spr->mobj, rendertimefrac, &interp); + } + } + else + { + if (spr->precip) + { + R_InterpolatePrecipMobjState((precipmobj_t *)spr->mobj, FRACUNIT, &interp); + } + else + { + R_InterpolateMobjState(spr->mobj, FRACUNIT, &interp); + } + } + + float basey = FIXED_TO_FLOAT(interp.z); float lowy = wallVerts[0].y; if (!precip && P_MobjFlip(spr->mobj) == -1) // precip doesn't have eflags so they can't flip {