26 lines
523 B
C
26 lines
523 B
C
|
|
#pragma once
|
||
|
|
#include <cstdint>
|
||
|
|
#define INVALID_EHANDLE_INDEX 0xFFFFFFFF
|
||
|
|
#define ENT_ENTRY_MASK 0x7FFF
|
||
|
|
|
||
|
|
class CBaseEntity;
|
||
|
|
|
||
|
|
class CHandle
|
||
|
|
{
|
||
|
|
CBaseEntity* GetBaseEntity() const;
|
||
|
|
|
||
|
|
public:
|
||
|
|
bool operator==(CHandle rhs) const { return m_Index == rhs.m_Index; }
|
||
|
|
|
||
|
|
bool IsValid() const { return m_Index != INVALID_EHANDLE_INDEX; }
|
||
|
|
|
||
|
|
int GetEntryIndex() const { return m_Index & ENT_ENTRY_MASK; }
|
||
|
|
|
||
|
|
template <typename T = CBaseEntity>
|
||
|
|
T* Get() const
|
||
|
|
{
|
||
|
|
return reinterpret_cast<T*>(GetBaseEntity());
|
||
|
|
}
|
||
|
|
|
||
|
|
uint32_t m_Index;
|
||
|
|
};
|