|
|
|
|
//========= Copyright <EFBFBD> 1996-2005, Valve Corporation, All rights reserved. ============//
|
|
|
|
|
//
|
|
|
|
|
// Purpose:
|
|
|
|
|
//
|
|
|
|
|
// $NoKeywords: $
|
|
|
|
|
//=============================================================================//
|
|
|
|
|
|
|
|
|
|
#ifndef ILAGCOMPENSATIONMANAGER_H
|
|
|
|
|
#define ILAGCOMPENSATIONMANAGER_H
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
#pragma once
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
class CBasePlayer;
|
|
|
|
|
class CUserCmd;
|
|
|
|
|
|
|
|
|
|
enum LagCompensationType
|
|
|
|
|
{
|
|
|
|
|
LAG_COMPENSATE_BOUNDS,
|
|
|
|
|
LAG_COMPENSATE_HITBOXES,
|
|
|
|
|
LAG_COMPENSATE_HITBOXES_ALONG_RAY,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
// Purpose: This is also an IServerSystem
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
abstract_class ILagCompensationManager
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
// Called during player movement to set up/restore after lag compensation
|
|
|
|
|
virtual void StartLagCompensation(
|
|
|
|
|
CBasePlayer *player,
|
|
|
|
|
LagCompensationType lagCompensationType,
|
|
|
|
|
const Vector& weaponPos = vec3_origin,
|
|
|
|
|
const QAngle &weaponAngles = vec3_angle,
|
|
|
|
|
float weaponRange = 0.0f ) = 0;
|
|
|
|
|
virtual void FinishLagCompensation( CBasePlayer *player ) = 0;
|
|
|
|
|
|
|
|
|
|
// Mappers can flag certain additional entities to lag compensate, this handles them
|
|
|
|
|
virtual void AddAdditionalEntity( CBaseEntity *pEntity ) = 0;
|
|
|
|
|
virtual void RemoveAdditionalEntity( CBaseEntity *pEntity ) = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern ILagCompensationManager *lagcompensation;
|
|
|
|
|
|
|
|
|
|
#endif // ILAGCOMPENSATIONMANAGER_H
|