Interpolate viewrollangle before R_CheckViewMorph

This commit is contained in:
James R 2022-01-17 21:18:38 -08:00
parent 025832aaa4
commit 5e37a847f0
3 changed files with 10 additions and 1 deletions

View file

@ -293,6 +293,8 @@ static void D_Display(void)
{
for (i = 0; i <= r_splitscreen; ++i)
{
R_SetViewContext(VIEWCONTEXT_PLAYER1 + i);
R_InterpolateViewRollAngle(rendertimefrac);
R_CheckViewMorph(i);
}
}

View file

@ -80,6 +80,11 @@ static void R_SetupFreelook(player_t *player, boolean skybox)
#undef AIMINGTODY
void R_InterpolateViewRollAngle(fixed_t frac)
{
viewroll = oldview->roll + R_LerpAngle(oldview->roll, newview->roll, frac);
}
void R_InterpolateView(fixed_t frac)
{
if (frac < 0)
@ -93,7 +98,7 @@ void R_InterpolateView(fixed_t frac)
viewangle = oldview->angle + R_LerpAngle(oldview->angle, newview->angle, frac);
aimingangle = oldview->aim + R_LerpAngle(oldview->aim, newview->aim, frac);
viewroll = oldview->roll + R_LerpAngle(oldview->roll, newview->roll, frac);
R_InterpolateViewRollAngle(frac);
viewsin = FINESINE(viewangle>>ANGLETOFINESHIFT);
viewcos = FINECOSINE(viewangle>>ANGLETOFINESHIFT);

View file

@ -51,6 +51,8 @@ extern viewvars_t *newview;
// Interpolates the current view variables (r_state.h) against the selected view context in R_SetViewContext
void R_InterpolateView(fixed_t frac);
// Special function just for software
void R_InterpolateViewRollAngle(fixed_t frac);
// Buffer the current new views into the old views. Call once after each real tic.
void R_UpdateViewInterpolation(void);
// Set the current view context (the viewvars pointed to by newview)