75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //========= 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 );
 | |
| }
 |