From 603a1671b46286d0570f8f2ff11b57a53bddae60 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 31 Oct 2022 19:03:09 -0700 Subject: [PATCH] Use angle between viewz and mobj z to determine splat sprite angle --- src/hardware/hw_main.c | 13 ++++++++++--- src/r_things.c | 6 +++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index c0db0fe5c..74385e7f7 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5254,9 +5254,16 @@ static void HWR_ProjectSprite(mobj_t *thing) I_Error("sprframes NULL for sprite %d\n", thing->sprite); #endif - ang = R_PointToAngle (interp.x, interp.y) - interp.angle; - if (mirrored) - ang = InvAngle(ang); + if (splat) + { + ang = R_PointToAngle2(0, viewz, 0, interp.z); + } + else + { + ang = R_PointToAngle (interp.x, interp.y) - interp.angle; + if (mirrored) + ang = InvAngle(ang); + } if (sprframe->rotate == SRF_SINGLE) { diff --git a/src/r_things.c b/src/r_things.c index 9e042c6af..41dfc8585 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -1755,7 +1755,11 @@ static void R_ProjectSprite(mobj_t *thing) I_Error("R_ProjectSprite: sprframes NULL for sprite %d\n", thing->sprite); #endif - if (sprframe->rotate != SRF_SINGLE || papersprite) + if (splat) + { + ang = R_PointToAngle2(0, viewz, 0, interp.z); + } + else if (sprframe->rotate != SRF_SINGLE || papersprite) { ang = R_PointToAngle (interp.x, interp.y) - interp.angle; if (mirrored)