Only interpolate shadowcasters if they exist

This commit is contained in:
Eidolon 2022-11-12 15:14:04 -06:00
parent 88667400ee
commit e32b8a41e5

View file

@ -5300,7 +5300,12 @@ static void HWR_ProjectSprite(mobj_t *thing)
if (thing->renderflags & RF_SHADOWEFFECTS)
{
mobj_t *caster = thing->target;
if (caster && !P_MobjWasRemoved(caster))
{
interpmobjstate_t casterinterp = {};
fixed_t groundz;
fixed_t floordiff;
if (R_UsingFrameInterpolation() && !paused)
{
@ -5311,10 +5316,8 @@ static void HWR_ProjectSprite(mobj_t *thing)
R_InterpolateMobjState(caster, FRACUNIT, &casterinterp);
}
if (caster && !P_MobjWasRemoved(caster))
{
fixed_t groundz = R_GetShadowZ(thing, NULL);
fixed_t floordiff = abs(((thing->eflags & MFE_VERTICALFLIP) ? caster->height : 0) + casterinterp.z - groundz);
groundz = R_GetShadowZ(thing, NULL);
floordiff = abs(((thing->eflags & MFE_VERTICALFLIP) ? caster->height : 0) + casterinterp.z - groundz);
shadowheight = FIXED_TO_FLOAT(floordiff);
shadowscale = FIXED_TO_FLOAT(FixedMul(FRACUNIT - floordiff/640, casterinterp.scale));