You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// |
|
//----------------------------------------------------------------------------- |
|
// $Log: $ |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
#include "client_pch.h" |
|
#include "demo.h" |
|
#include "host.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : world_start_state - |
|
// validframe - |
|
// start_command - |
|
// stop_command - |
|
//----------------------------------------------------------------------------- |
|
void CL_Predict( int world_start_state, bool validframe, int start_command, int stop_command ) |
|
{ |
|
// Allow client .dll to do prediction. |
|
g_pClientSidePrediction->Update( |
|
world_start_state, |
|
validframe, |
|
start_command, |
|
stop_command ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Determine if we received a new message, which means we need to |
|
// redo prediction |
|
//----------------------------------------------------------------------------- |
|
void CL_RunPrediction( PREDICTION_REASON reason ) |
|
{ |
|
tmZone( TELEMETRY_LEVEL0, TMZF_NONE, "%s", __FUNCTION__ ); |
|
|
|
if ( !cl.IsActive() ) |
|
return; |
|
|
|
if ( cl.m_nDeltaTick < 0 ) |
|
{ |
|
// no valid snapshot received yet |
|
return; |
|
} |
|
|
|
// Don't do prediction if skipping ahead during demo playback |
|
if ( demoplayer->IsSkipping() ) |
|
{ |
|
return; |
|
} |
|
|
|
//Msg( "%i pred reason %s\n", host_framecount, reason == PREDICTION_SIMULATION_RESULTS_ARRIVING_ON_SEND_FRAME ? |
|
// "same frame" : "normal" ); |
|
|
|
bool valid = cl.m_nDeltaTick > 0; // cl.GetReceiveList( cl.delta_tick ) != NULL; |
|
|
|
//Msg( "%i/%i CL_RunPrediction: last ack %i most recent %i\n", |
|
// host_framecount, cl.tickcount, |
|
// cl.last_command_ack, |
|
// cl.netchan->m_nOutSequenceNr - 1 ); |
|
|
|
CL_Predict( cl.m_nDeltaTick, |
|
valid, |
|
cl.last_command_ack, |
|
cl.lastoutgoingcommand + cl.chokedcommands ); |
|
}
|
|
|