From f7bc03ad61fa086766d927fe8d20a724a3beb84a Mon Sep 17 00:00:00 2001 From: Eidolon <furyhunter600@gmail.com> Date: Sun, 30 Oct 2022 23:14:11 -0500 Subject: [PATCH] Use interp position in GL billboarding --- src/hardware/hw_main.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index c8d2279736..18e276e849 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -3758,11 +3758,24 @@ 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) + { + R_InterpolateMobjState(spr->mobj, rendertimefrac, &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 { - basey = FIXED_TO_FLOAT(spr->mobj->z + spr->mobj->height); + basey = FIXED_TO_FLOAT(interp.z + spr->mobj->height); } // Rotate sprites to fully billboard with the camera // X, Y, AND Z need to be manipulated for the polys to rotate around the -- GitLab