diff options
Diffstat (limited to 'public/iprediction.h')
| -rw-r--r-- | public/iprediction.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/public/iprediction.h b/public/iprediction.h new file mode 100644 index 0000000..858bff3 --- /dev/null +++ b/public/iprediction.h @@ -0,0 +1,67 @@ +//========= Copyright 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 "mathlib/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 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 |