Files
csgo2_tiny_server_plugin_sy…/csgo2/native_sdk/handle/handle.h

29 lines
732 B
C
Raw Normal View History

2023-10-01 02:28:13 +08:00
#pragma once
#include <cstdint>
#define INVALID_EHANDLE_INDEX 0xFFFFFFFF
#define ENT_ENTRY_MASK 0x7FFF
inline int PlayerSlot_to_EntityIndex(int PlayerSlot) { return PlayerSlot + 1; }
inline int EntityIndex_to_PlayerSlot(int EntityIndex) { return EntityIndex - 1; }
2023-10-01 02:28:13 +08:00
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());
}
auto GetPlayerSlot() {
return m_Index - 1;
}
2023-10-01 02:28:13 +08:00
uint32_t m_Index;
};