From 1cd69c11dce6eb7fa46c99f2c2585d0b2f87c45c Mon Sep 17 00:00:00 2001
From: NepDisk <16447892+NepDisk@users.noreply.github.com>
Date: Sat, 9 Nov 2024 13:57:42 -0500
Subject: [PATCH] Fix papersprites offset

Thanks Alu Folie for the assitance
---
 src/hardware/hw_main.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 56355638f7..b3b0aec507 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -3359,11 +3359,13 @@ static void HWR_SplitSprite(gl_vissprite_t *spr)
 		baseWallVerts[0].t = baseWallVerts[1].t = ((GLPatch_t *)gpatch->hardware)->max_t;
 	}
 
-	// Let dispoffset work first since this adjust each vertex
-	HWR_RotateSpritePolyToAim(spr, baseWallVerts, false);
-
 	// push it toward the camera to mitigate floor-clipping sprites
+	if (!R_ThingIsPaperSprite(spr->mobj)) // but not for papersprites
 	{
+		// Let dispoffset work first since this adjust each vertex
+		HWR_RotateSpritePolyToAim(spr, baseWallVerts, false);
+
+		// push it toward the camera to mitigate floor-clipping sprites
 		float sprdist = sqrtf((spr->x1 - gl_viewx)*(spr->x1 - gl_viewx) + (spr->z1 - gl_viewy)*(spr->z1 - gl_viewy) + (spr->gzt - gl_viewz)*(spr->gzt - gl_viewz));
 		float distfact = ((2.0f*spr->dispoffset) + 20.0f) / sprdist;
 		for (i = 0; i < 4; i++)
@@ -3817,7 +3819,7 @@ static void HWR_DrawSprite(gl_vissprite_t *spr)
 	float sprdist = 0.0f, distfact = 0.0f;
 	size_t i;
 
-	if (!splat)
+	if (!splat && !R_ThingIsPaperSprite(spr->mobj))
 	{
 		// Let dispoffset work first since this adjust each vertex
 		HWR_RotateSpritePolyToAim(spr, wallVerts, false);
@@ -3832,7 +3834,7 @@ static void HWR_DrawSprite(gl_vissprite_t *spr)
 			wallVerts[i].y += (gl_viewz - wallVerts[i].y)*distfact;
 		}
 	}
-	else if (splat)
+	else if (R_ThingIsFloorSprite(spr->mobj))
 	{
 		sprdist = sqrtf((spr->x1 - gl_viewx)*(spr->x1 - gl_viewx) + (spr->z1 - gl_viewy)*(spr->z1 - gl_viewy));
 		distfact = (2.0f + 20.0f) / sprdist;
-- 
GitLab