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.
This commit is contained in:
James R 2021-04-06 02:42:39 -07:00
parent 1eca138b21
commit c74e02d9dc

View file

@ -4251,7 +4251,7 @@ Quaketilt (player_t *player)
INT32 delta = (INT32)( player->mo->angle - moma ); INT32 delta = (INT32)( player->mo->angle - moma );
fixed_t speed; fixed_t speed;
boolean sliptiding = boolean sliptiding = K_Sliptiding(player);
( (
player->kartstuff[k_aizdriftstrat] != 0 && player->kartstuff[k_aizdriftstrat] != 0 &&
player->kartstuff[k_drift] == 0 player->kartstuff[k_drift] == 0
@ -4293,12 +4293,18 @@ Quaketilt (player_t *player)
return moma; return moma;
} }
static inline int intsign(int n) {
return n < 0 ? -1 : n > 0 ? 1 : 0;
}
static void static void
DoABarrelRoll (player_t *player) DoABarrelRoll (player_t *player)
{ {
angle_t slope; angle_t slope;
angle_t delta; angle_t delta;
fixed_t smoothing;
if (player->exiting) if (player->exiting)
{ {
return; return;
@ -4325,7 +4331,9 @@ DoABarrelRoll (player_t *player)
slope -= Quaketilt(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) if (delta)
player->tilt += delta; player->tilt += delta;
@ -4338,7 +4346,10 @@ DoABarrelRoll (player_t *player)
if (cv_actionmovie.value) 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 else