From a808392ebb7a6d4e721865b0b83265743bd7f2fe Mon Sep 17 00:00:00 2001 From: lahm86 <33758420+lahm86@users.noreply.github.com> Date: Fri, 28 Feb 2025 20:09:09 +0000 Subject: [PATCH] tr1/camera: simplify bounce control This neatens the bounce control in the TR1 camera, similar to TR2. --- src/tr1/game/camera/common.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/tr1/game/camera/common.c b/src/tr1/game/camera/common.c index 1d80c320a..c47aa995d 100644 --- a/src/tr1/game/camera/common.c +++ b/src/tr1/game/camera/common.c @@ -321,24 +321,23 @@ static void M_Move(const GAME_VECTOR *const ideal, const int32_t speed) height = ceiling; } - if (g_Camera.bounce) { - if (g_Camera.bounce > 0) { - g_Camera.pos.y += g_Camera.bounce; - g_Camera.target.y += g_Camera.bounce; - g_Camera.bounce = 0; - } else { - int32_t shake; - shake = (Random_GetControl() - 0x4000) * g_Camera.bounce / 0x7FFF; - g_Camera.pos.x += shake; - g_Camera.target.y += shake; - shake = (Random_GetControl() - 0x4000) * g_Camera.bounce / 0x7FFF; - g_Camera.pos.y += shake; - g_Camera.target.y += shake; - shake = (Random_GetControl() - 0x4000) * g_Camera.bounce / 0x7FFF; - g_Camera.pos.z += shake; - g_Camera.target.z += shake; - g_Camera.bounce += 5; - } + if (g_Camera.bounce > 0) { + g_Camera.pos.y += g_Camera.bounce; + g_Camera.target.y += g_Camera.bounce; + g_Camera.bounce = 0; + } else if (g_Camera.bounce < 0) { + const XYZ_32 shake = { + .x = g_Camera.bounce * (Random_GetControl() - 0x4000) / 0x7FFF, + .y = g_Camera.bounce * (Random_GetControl() - 0x4000) / 0x7FFF, + .z = g_Camera.bounce * (Random_GetControl() - 0x4000) / 0x7FFF, + }; + g_Camera.pos.x += shake.x; + g_Camera.pos.y += shake.y; + g_Camera.pos.z += shake.z; + g_Camera.target.y += shake.x; + g_Camera.target.y += shake.y; + g_Camera.target.z += shake.z; + g_Camera.bounce += 5; } if (g_Camera.pos.y > height) {