From f86048afbfd624aa47f020d382cf55a334348ca2 Mon Sep 17 00:00:00 2001 From: Eidolon Date: Sun, 30 Oct 2022 23:03:47 -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 3091bdef5..cf9e69a00 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -3725,11 +3725,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