1
0
mirror of https://github.com/alliedmodders/hl2sdk.git synced 2024-12-23 01:59:43 +08:00
hl2sdk/public/iprediction.h

68 lines
2.3 KiB
C++

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $Workfile: $
// $Date: $
//
//-----------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================//
#if !defined( IPREDICTION_H )
#define IPREDICTION_H
#ifdef _WIN32
#pragma once
#endif
#include "interface.h"
#include "vector.h" // Solely to get at define for QAngle
class IMoveHelper;
//-----------------------------------------------------------------------------
// Purpose: Engine interface into client side prediction system
//-----------------------------------------------------------------------------
abstract_class IPrediction
{
public:
virtual ~IPrediction( void ) {};
virtual void Init( void ) = 0;
virtual void Shutdown( void ) = 0;
// Run prediction
virtual void Update
(
int startframe, // World update ( un-modded ) most recently received
bool validframe, // Is frame data valid
int incoming_acknowledged, // Last command acknowledged to have been run by server (un-modded)
int outgoing_command // Last command (most recent) sent to server (un-modded)
) = 0;
// We are about to get a network update from the server. We know the update #, so we can pull any
// data purely predicted on the client side and transfer it to the new from data state.
virtual void PreEntityPacketReceived( int commands_acknowledged, int current_world_update_packet ) = 0;
virtual void PostEntityPacketReceived( void ) = 0;
virtual void PostNetworkDataReceived( int commands_acknowledged ) = 0;
virtual void OnReceivedUncompressedPacket( void ) = 0;
// The engine needs to be able to access a few predicted values
virtual int GetWaterLevel( void ) = 0;
virtual void GetViewOrigin( Vector& org ) = 0;
virtual void SetViewOrigin( Vector& org ) = 0;
virtual void GetViewAngles( QAngle& ang ) = 0;
virtual void SetViewAngles( QAngle& ang ) = 0;
virtual void GetLocalViewAngles( QAngle& ang ) = 0;
virtual void SetLocalViewAngles( QAngle& ang ) = 0;
};
extern IPrediction *g_pClientSidePrediction;
#define VCLIENT_PREDICTION_INTERFACE_VERSION "VClientPrediction001"
#endif // IPREDICTION_H