r_things.cpp: Fix highresscale for custom skins interacting badly with Linkdraw on the player (bubble shield, etc)

This commit is contained in:
toaster 2025-08-22 20:44:58 +01:00 committed by NepDisk
parent 2baf834265
commit 2686503602

View file

@ -1012,10 +1012,6 @@ static void R_DrawVisSprite(vissprite_t *vis)
frac = vis->startfrac;
windowtop = windowbottom = sprbotscreen = INT32_MAX;
skin_t *myskin = ((skin_t *)vis->mobj->skin);
if (!(vis->cut & SC_PRECIP) && (vis->mobj->skin) && myskin->highresscale != FRACUNIT)
this_scale = FixedMul(this_scale, myskin->highresscale);
if (this_scale <= 0)
this_scale = 1;
@ -1506,8 +1502,6 @@ static void R_ProjectDropShadow(
shadow->gzt = groundz + patch->height * shadowyscale / 2;
shadow->gz = shadow->gzt - patch->height * shadowyscale;
shadow->texturemid = FixedMul(interp.scale, FixedDiv(shadow->gzt - viewz, shadowyscale));
if (thing->skin && ((skin_t *)thing->skin)->highresscale != FRACUNIT)
shadow->texturemid = FixedMul(shadow->texturemid, ((skin_t *)thing->skin)->highresscale);
shadow->scalestep = 0;
shadow->shear.tan = shadowskew; // repurposed variable
@ -1756,6 +1750,8 @@ static void R_ProjectSprite(mobj_t *thing)
R_InterpolateMobjState(interptarg, R_GetTimeFrac(RTF_LEVEL), &interp);
this_scale = interp.scale;
if (thing->skin && ((skin_t *)thing->skin)->highresscale != FRACUNIT)
this_scale = FixedMul(this_scale, ((skin_t *)thing->skin)->highresscale);
// sprite offset
interp.x += thing->sprxoff;
@ -1877,9 +1873,6 @@ static void R_ProjectSprite(mobj_t *thing)
I_Assert(lump < max_spritelumps);
if (thing->skin && ((skin_t *)thing->skin)->highresscale != FRACUNIT)
this_scale = FixedMul(this_scale, ((skin_t *)thing->skin)->highresscale);
spr_width = spritecachedinfo[lump].width;
spr_height = spritecachedinfo[lump].height;
spr_offset = spritecachedinfo[lump].offset;
@ -2373,7 +2366,7 @@ static void R_ProjectSprite(mobj_t *thing)
vis->xscale = FixedMul(spritexscale, xscale); //SoM: 4/17/2000
vis->scale = FixedMul(spriteyscale, yscale); //<<detailshift;
vis->thingscale = interp.scale;
vis->thingscale = this_scale;
vis->spritexscale = spritexscale;
vis->spriteyscale = spriteyscale;