diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/shared/predictableid.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'game/shared/predictableid.h')
| -rw-r--r-- | game/shared/predictableid.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/game/shared/predictableid.h b/game/shared/predictableid.h new file mode 100644 index 0000000..703de9a --- /dev/null +++ b/game/shared/predictableid.h @@ -0,0 +1,78 @@ +//========= 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 |