mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-25 21:41:03 +00:00
- Split insane interpolation test if statement into a function, we'll need this elsewhere later on.
This commit is contained in:
parent
9f9c1eb18a
commit
20bf9e89f5
2 changed files with 27 additions and 14 deletions
|
@ -481,4 +481,6 @@ inline bool AActor::IsNoClip2() const
|
|||
|
||||
bool P_IsPlayerTotallyFrozen(const player_t *player);
|
||||
|
||||
bool P_NoInterpolation(player_t const *player, AActor const *actor);
|
||||
|
||||
#endif // __D_PLAYER_H__
|
||||
|
|
|
@ -420,13 +420,35 @@ void R_Shutdown ()
|
|||
|
||||
//==========================================================================
|
||||
//
|
||||
// R_InterpolateView
|
||||
// P_NoInterpolation
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
//CVAR (Int, tf, 0, 0)
|
||||
EXTERN_CVAR (Bool, cl_noprediction)
|
||||
|
||||
bool P_NoInterpolation(player_t const *player, AActor const *actor)
|
||||
{
|
||||
return player != NULL &&
|
||||
!(player->cheats & CF_INTERPVIEW) &&
|
||||
player - players == consoleplayer &&
|
||||
actor == player->mo &&
|
||||
!demoplayback &&
|
||||
!(player->cheats & (CF_TOTALLYFROZEN | CF_FROZEN)) &&
|
||||
player->playerstate == PST_LIVE &&
|
||||
player->mo->reactiontime == 0 &&
|
||||
!NoInterpolateView &&
|
||||
!paused &&
|
||||
(!netgame || !cl_noprediction) &&
|
||||
!LocalKeyboardTurner;
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// R_InterpolateView
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void R_InterpolateView (FRenderViewpoint &viewpoint, player_t *player, double Frac, InterpolationViewer *iview)
|
||||
{
|
||||
if (NoInterpolateView)
|
||||
|
@ -514,20 +536,9 @@ void R_InterpolateView (FRenderViewpoint &viewpoint, player_t *player, double Fr
|
|||
viewpoint.Pos = iview->New.Pos;
|
||||
viewpoint.Path[0] = viewpoint.Path[1] = iview->New.Pos;
|
||||
}
|
||||
if (player != NULL &&
|
||||
!(player->cheats & CF_INTERPVIEW) &&
|
||||
player - players == consoleplayer &&
|
||||
viewpoint.camera == player->mo &&
|
||||
!demoplayback &&
|
||||
if (P_NoInterpolation(player, viewpoint.camera) &&
|
||||
iview->New.Pos.X == viewpoint.camera->X() &&
|
||||
iview->New.Pos.Y == viewpoint.camera->Y() &&
|
||||
!(player->cheats & (CF_TOTALLYFROZEN|CF_FROZEN)) &&
|
||||
player->playerstate == PST_LIVE &&
|
||||
player->mo->reactiontime == 0 &&
|
||||
!NoInterpolateView &&
|
||||
!paused &&
|
||||
(!netgame || !cl_noprediction) &&
|
||||
!LocalKeyboardTurner)
|
||||
iview->New.Pos.Y == viewpoint.camera->Y())
|
||||
{
|
||||
viewpoint.Angles.Yaw = (nviewangle + DAngle::fromBam(LocalViewAngle)).Normalized180();
|
||||
DAngle delta = player->centering ? nullAngle : DAngle::fromBam(LocalViewPitch);
|
||||
|
|
Loading…
Reference in a new issue