Use lookback frames for sliptides

This commit is contained in:
James R 2021-04-09 18:22:15 -07:00
parent 526b3c3b57
commit 1e97e92be0
3 changed files with 16 additions and 14 deletions

View file

@ -406,4 +406,7 @@ unset_bit_array (bitarray_t * const array, const int value)
typedef UINT64 precise_t; typedef UINT64 precise_t;
#endif #endif
#define intsign(n) \
((n) < 0 ? -1 : (n) > 0 ? 1 : 0)
#endif //__DOOMTYPE__ #endif //__DOOMTYPE__

View file

@ -1981,22 +1981,25 @@ void K_KartMoveAnimation(player_t *player)
turndir = 1; turndir = 1;
} }
// Use drift frames when sliptiding
if (player->aizDriftTurn)
{
drift = (player->kartstuff[k_aizdriftstrat]);
if (drift)
turndir = 0;
}
if (lookback == true && drift == 0) if (lookback == true && drift == 0)
{ {
// Prioritize looking back frames over turning // Prioritize looking back frames over turning
turndir = 0; 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. // Only try glancing if you're driving straight.
// This avoids all-players loops when we don't need it. // This avoids all-players loops when we don't need it.

View file

@ -936,10 +936,6 @@ void R_ApplyViewMorph(int s)
width*vid.bpp, height, width*vid.bpp, vid.width); 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 R_ViewRollAngle(const player_t *player)
{ {
angle_t roll = player->viewrollangle; angle_t roll = player->viewrollangle;