From 6d9512d2905ff2ad5defd06de60e044ae5a79932 Mon Sep 17 00:00:00 2001 From: James R <justsomejames2@gmail.com> Date: Fri, 10 Dec 2021 00:32:46 -0800 Subject: [PATCH] Do not factor roll and pitch into model rollangle Those transformations are applied separately so the model tilts in 3d space. --- src/hardware/hw_md2.c | 2 +- src/r_patch.h | 1 + src/r_patchrotation.c | 12 ++++++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c index 0f9195a753..096d24f528 100644 --- a/src/hardware/hw_md2.c +++ b/src/hardware/hw_md2.c @@ -1611,7 +1611,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) } { - fixed_t anglef = AngleFixed(R_SpriteRotationAngle(&interp)); + fixed_t anglef = AngleFixed(R_ModelRotationAngle(&interp)); p.rollangle = 0.0f; diff --git a/src/r_patch.h b/src/r_patch.h index 27f7bddb6f..a0ab3e75ac 100644 --- a/src/r_patch.h +++ b/src/r_patch.h @@ -39,6 +39,7 @@ patch_t *Patch_GetRotatedSprite( size_t frame, size_t spriteangle, boolean flip, boolean adjustfeet, void *info, INT32 rotationangle); +angle_t R_ModelRotationAngle(interpmobjstate_t *interp); angle_t R_SpriteRotationAngle(interpmobjstate_t *interp); INT32 R_GetRollAngle(angle_t rollangle); #endif diff --git a/src/r_patchrotation.c b/src/r_patchrotation.c index f9c4ec797d..a17b725d61 100644 --- a/src/r_patchrotation.c +++ b/src/r_patchrotation.c @@ -19,11 +19,11 @@ fixed_t rollcosang[ROTANGLES]; fixed_t rollsinang[ROTANGLES]; -// -// R_SpriteRotationAngle -// -// Gets the rollangle for the input object. -// +angle_t R_ModelRotationAngle(interpmobjstate_t *interp) +{ + return interp->spriteroll; +} + angle_t R_SpriteRotationAngle(interpmobjstate_t *interp) { angle_t viewingAngle = R_PointToAngle(interp->x, interp->y); @@ -33,7 +33,7 @@ angle_t R_SpriteRotationAngle(interpmobjstate_t *interp) angle_t rollOrPitch = FixedMul(interp->pitch, pitchMul) + FixedMul(interp->roll, rollMul); - return (rollOrPitch + interp->spriteroll); + return (rollOrPitch + R_ModelRotationAngle(interp)); } INT32 R_GetRollAngle(angle_t rollangle) -- GitLab