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;
#endif
#define intsign(n) \
((n) < 0 ? -1 : (n) > 0 ? 1 : 0)
#endif //__DOOMTYPE__

View file

@ -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.

View file

@ -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;