Public feed
#727206
void CG_PredictPlayerState( void ) {
int cmdNum, current;
playerState_t oldPlayerState;
qboolean moved;
usercmd_t oldestCmd;
usercmd_t latestCmd;
vec3_t deltaAngles;
pmoveExt_t pmext;
// int useCommand = 0;
cg.hyperspace = qfalse; // will be set if touching a trigger_teleport
// if this is the first frame we must guarantee
// predictedPlayerState is valid even if there is some
// other error condition
if ( !cg.validPPS ) {
cg.validPPS = qtrue;
cg.predictedPlayerState = cg.snap->ps;
}
// demo playback just copies the moves
if(cg.demoPlayback || (cg.snap->ps.pm_flags & PMF_FOLLOW)) {
CG_InterpolatePlayerState( qfalse );
return;
}
// non-predicting local movement will grab the latest angles
if ( cg_nopredict.integer
#ifdef ALLOW_GSYNC
|| cg_synchronousClients.integer
#endif // ALLOW_GSYNC
) {
cg_pmove.ps = &cg.predictedPlayerState;
cg_pmove.pmext = &cg.pmext;
cg.pmext.airleft = (cg.waterundertime - cg.time);