Don't add tumble/sliptide rollangle to camera tilt

This commit is contained in:
James R 2021-04-06 20:43:31 -07:00
parent 0818be1b8a
commit 9dcce02e5e
3 changed files with 15 additions and 5 deletions

View file

@ -4302,7 +4302,7 @@ DoABarrelRoll (player_t *player)
return;
}
slope = InvAngle(R_SpriteRotationAngle(player->mo));
slope = InvAngle(R_GetPitchRollAngle(player->mo));
if (AbsAngle(slope) < ANGLE_11hh)
{

View file

@ -39,6 +39,7 @@ patch_t *Patch_GetRotatedSprite(
boolean flip, boolean adjustfeet,
void *info, INT32 rotationangle);
INT32 R_GetRollAngle(angle_t rollangle);
angle_t R_GetPitchRollAngle(mobj_t *mobj);
angle_t R_SpriteRotationAngle(mobj_t *mobj);
#endif

View file

@ -20,18 +20,27 @@
fixed_t rollcosang[ROTANGLES];
fixed_t rollsinang[ROTANGLES];
angle_t R_GetPitchRollAngle(mobj_t *mobj)
{
angle_t viewingAngle = R_PointToAngle(mobj->x, mobj->y);
fixed_t pitchMul = -FINESINE(viewingAngle >> ANGLETOFINESHIFT);
fixed_t rollMul = FINECOSINE(viewingAngle >> ANGLETOFINESHIFT);
angle_t rollOrPitch = FixedMul(mobj->pitch, pitchMul) + FixedMul(mobj->roll, rollMul);
return rollOrPitch;
}
angle_t R_SpriteRotationAngle(mobj_t *mobj)
{
angle_t viewingAngle = R_PointToAngle(mobj->x, mobj->y);
angle_t angleDelta = (viewingAngle - mobj->angle);
fixed_t pitchMul = -FINESINE(viewingAngle >> ANGLETOFINESHIFT);
fixed_t rollMul = FINECOSINE(viewingAngle >> ANGLETOFINESHIFT);
angle_t sliptideLift = mobj->player
? K_Sliptiding(mobj->player) * ANGLE_11hh : 0;
angle_t rollOrPitch = FixedMul(mobj->pitch, pitchMul) + FixedMul(mobj->roll, rollMul);
angle_t rollOrPitch = R_GetPitchRollAngle(mobj);
angle_t rollAngle = (rollOrPitch + mobj->rollangle);
if (sliptideLift)