This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

69 lines
2.4 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $Workfile: $
// $Date: $
//
//-----------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================//
#if !defined(IPREDICTION_H)
#define IPREDICTION_H
#ifdef _WIN32
#pragma once
#endif
#include "mathlib/vector.h" // Solely to get at define for QAngle
#include "tier1/interface.h"
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