From 441b70022d8c594ae32cce4de745c63fb742db67 Mon Sep 17 00:00:00 2001 From: Xaser Acheron Date: Mon, 15 Nov 2021 01:52:49 -0600 Subject: [PATCH] apply weaponscale relative to baseline --- src/rendering/hwrenderer/scene/hw_weapon.cpp | 4 +++- src/rendering/swrenderer/things/r_playersprite.cpp | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/rendering/hwrenderer/scene/hw_weapon.cpp b/src/rendering/hwrenderer/scene/hw_weapon.cpp index a49f497c3e3..579c0e3b290 100644 --- a/src/rendering/hwrenderer/scene/hw_weapon.cpp +++ b/src/rendering/hwrenderer/scene/hw_weapon.cpp @@ -411,6 +411,7 @@ bool HUDSprite::GetWeaponRect(HWDrawInfo *di, DPSprite *psp, float sx, float sy, float tx; float scale; float scalex; + float ftextureadj; float ftexturemid; // decide which patch to use @@ -445,7 +446,8 @@ bool HUDSprite::GetWeaponRect(HWDrawInfo *di, DPSprite *psp, float sx, float sy, x2 += viewwindowx; // killough 12/98: fix psprite positioning problem - ftexturemid = 100.f - sy - r.top - psp->GetYAdjust(screenblocks >= 11); + ftextureadj = (120.0f / psp->baseScale.Y) - 100.0f; // [XA] scale relative to weapon baseline + ftexturemid = 100.f - sy - r.top - psp->GetYAdjust(screenblocks >= 11) - ftextureadj; // [XA] note: Doom's native 1.2x aspect ratio was originally // handled here by multiplying SCREENWIDTH by 200 instead of diff --git a/src/rendering/swrenderer/things/r_playersprite.cpp b/src/rendering/swrenderer/things/r_playersprite.cpp index e892cf7da0b..a9873d52dcc 100644 --- a/src/rendering/swrenderer/things/r_playersprite.cpp +++ b/src/rendering/swrenderer/things/r_playersprite.cpp @@ -293,7 +293,8 @@ namespace swrenderer vis.renderflags = owner->renderflags; FSoftwareTexture* stex = GetSoftwareTexture(tex); - vis.texturemid = (BASEYCENTER - sy) * stex->GetScale().Y + stex->GetTopOffset(0); + double textureadj = (120.0f / pspr->baseScale.Y) - BASEYCENTER; // [XA] scale relative to weapon baseline + vis.texturemid = (BASEYCENTER - sy - textureadj) * stex->GetScale().Y + stex->GetTopOffset(0); // Force it to use software rendering when drawing to a canvas texture. bool renderToCanvas = viewport->RenderingToCanvas;