From c74e02d9dc2cdb673e9a0bbc5be1b7cb7af734d4 Mon Sep 17 00:00:00 2001 From: James R Date: Tue, 6 Apr 2021 02:42:39 -0700 Subject: [PATCH] Tweak camera tilting - Grow divisor with delta. Reduce divisor base from 32 to 17. This makes small changes in tilt snappier, while larger ones ease in. - Added tilting during quakes is subtler. --- src/p_user.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index 09b8865fd..8553d9279 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -4251,7 +4251,7 @@ Quaketilt (player_t *player) INT32 delta = (INT32)( player->mo->angle - moma ); fixed_t speed; - boolean sliptiding = + boolean sliptiding = K_Sliptiding(player); ( player->kartstuff[k_aizdriftstrat] != 0 && player->kartstuff[k_drift] == 0 @@ -4293,12 +4293,18 @@ Quaketilt (player_t *player) return moma; } +static inline int intsign(int n) { + return n < 0 ? -1 : n > 0 ? 1 : 0; +} + static void DoABarrelRoll (player_t *player) { angle_t slope; angle_t delta; + fixed_t smoothing; + if (player->exiting) { return; @@ -4325,7 +4331,9 @@ DoABarrelRoll (player_t *player) slope -= Quaketilt(player); - delta = (INT32)( slope - player->tilt )/ 32; + delta = slope - player->tilt; + smoothing = FixedDiv(abs((INT32)delta), ANG15); + delta = FixedDiv(delta, 17 * (FRACUNIT + smoothing)); if (delta) player->tilt += delta; @@ -4338,7 +4346,10 @@ DoABarrelRoll (player_t *player) if (cv_actionmovie.value) { - player->viewrollangle += quake.roll; + int xs = intsign(quake.x), + ys = intsign(quake.y), + zs = intsign(quake.z); + player->viewrollangle += (xs ^ ys ^ zs) * ANG1; } } else