You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.0 KiB
78 lines
2.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef PREDICTABLEID_H |
|
#define PREDICTABLEID_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#if !defined( NO_ENTITY_PREDICTION ) |
|
//----------------------------------------------------------------------------- |
|
// Purpose: Wraps 32bit predictID to allow access and creation |
|
//----------------------------------------------------------------------------- |
|
class CPredictableId |
|
{ |
|
public: |
|
// Construction |
|
CPredictableId( void ); |
|
|
|
static void ResetInstanceCounters( void ); |
|
|
|
// Is the Id being used |
|
bool IsActive( void ) const; |
|
|
|
// Call this to set from data |
|
void Init( int player, int command, const char *classname, const char *module, int line ); |
|
|
|
// Get player index |
|
int GetPlayer( void ) const; |
|
// Get hash value |
|
int GetHash( void ) const; |
|
// Get index number |
|
int GetInstanceNumber( void ) const; |
|
// Get command number |
|
int GetCommandNumber( void ) const; |
|
|
|
// Check command number |
|
// bool IsCommandNumberEqual( int testNumber ) const; |
|
|
|
// Client only |
|
void SetAcknowledged( bool ack ); |
|
bool GetAcknowledged( void ) const; |
|
|
|
// For conversion to/from integer |
|
int GetRaw( void ) const; |
|
void SetRaw( int raw ); |
|
|
|
char const *Describe( void ) const; |
|
|
|
// Equality test |
|
bool operator ==( const CPredictableId& other ) const; |
|
bool operator !=( const CPredictableId& other ) const; |
|
private: |
|
void SetCommandNumber( int commandNumber ); |
|
void SetPlayer( int playerIndex ); |
|
void SetInstanceNumber( int counter ); |
|
|
|
// Encoding bits, should total 32 |
|
struct bitfields |
|
{ |
|
unsigned int ack : 1; // 1 |
|
unsigned int player : 5; // 6 |
|
unsigned int command : 10; // 16 |
|
unsigned int hash : 12; // 28 |
|
unsigned int instance : 4; // 32 |
|
} m_PredictableID; |
|
}; |
|
|
|
// This can be empty, the class has a proper constructor |
|
FORCEINLINE void NetworkVarConstruct( CPredictableId &x ) {} |
|
|
|
#endif |
|
|
|
#endif // PREDICTABLEID_H
|
|
|