diff --git a/src/doomtype.h b/src/doomtype.h index 511e5cf5a..7e91ed7e4 100644 --- a/src/doomtype.h +++ b/src/doomtype.h @@ -406,4 +406,7 @@ unset_bit_array (bitarray_t * const array, const int value) typedef UINT64 precise_t; #endif +#define intsign(n) \ + ((n) < 0 ? -1 : (n) > 0 ? 1 : 0) + #endif //__DOOMTYPE__ diff --git a/src/k_kart.c b/src/k_kart.c index 59b1ad0cf..280916f57 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1981,22 +1981,25 @@ void K_KartMoveAnimation(player_t *player) turndir = 1; } - // Use drift frames when sliptiding - if (player->aizDriftTurn) - { - drift = (player->kartstuff[k_aizdriftstrat]); - - if (drift) - turndir = 0; - } - if (lookback == true && drift == 0) { // Prioritize looking back frames over turning turndir = 0; } - if (turndir == 0 && drift == 0) + // Sliptides: drift -> lookback frames + if (abs(player->aizDriftTurn) >= ANGLE_90) + { + destGlanceDir = -(2*intsign(player->aizDriftTurn)); + player->glanceDir = destGlanceDir; + drift = turndir = 0; + } + else if (player->aizDriftTurn) + { + drift = intsign(player->aizDriftTurn); + turndir = 0; + } + else if (turndir == 0 && drift == 0) { // Only try glancing if you're driving straight. // This avoids all-players loops when we don't need it. diff --git a/src/r_main.c b/src/r_main.c index d8b93144d..f46f65ccd 100644 --- a/src/r_main.c +++ b/src/r_main.c @@ -936,10 +936,6 @@ void R_ApplyViewMorph(int s) width*vid.bpp, height, width*vid.bpp, vid.width); } -static inline int intsign(int n) { - return n < 0 ? -1 : n > 0 ? 1 : 0; -} - angle_t R_ViewRollAngle(const player_t *player) { angle_t roll = player->viewrollangle;