init
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#pragma once
|
||||
#include "..\..\..\..\source\templeware\utils\schema\schema.h"
|
||||
#include "..\..\..\..\source\templeware\utils\memory\vfunc\vfunc.h"
|
||||
#include "..\handle.h"
|
||||
|
||||
class CEntityInstance;
|
||||
class CEntityIdentity
|
||||
{
|
||||
public:
|
||||
SCHEMA_ADD_OFFSET(std::uint32_t, index, 0x10);
|
||||
schema(const char*, m_designerName, "CEntityIdentity->m_designerName");
|
||||
schema( std::uint32_t, flags, "CEntityIdentity->m_flags");
|
||||
|
||||
std::string GetSchemaName() {
|
||||
|
||||
auto class_info = *(uintptr_t*)(std::uintptr_t(this) + 0x10);
|
||||
auto name = *(const char*)(std::uintptr_t(this) + 0x20);
|
||||
|
||||
return std::to_string(name); // Return the string constructed from the char pointer
|
||||
}
|
||||
|
||||
[[nodiscard]] bool valid()
|
||||
{
|
||||
return index() != INVALID_EHANDLE_INDEX;
|
||||
}
|
||||
|
||||
[[nodiscard]] int get_index()
|
||||
{
|
||||
if (!valid())
|
||||
return ENT_ENTRY_MASK;
|
||||
|
||||
return index() & ENT_ENTRY_MASK;
|
||||
}
|
||||
|
||||
[[nodiscard]] int get_serial_number()
|
||||
{
|
||||
return index() >> NUM_SERIAL_NUM_SHIFT_BITS;
|
||||
}
|
||||
|
||||
CEntityInstance* pInstance;
|
||||
};
|
||||
|
||||
class CEntityInstance
|
||||
{
|
||||
public:
|
||||
|
||||
void dump_class_info(SchemaClassInfoData_t** pReturn)
|
||||
{
|
||||
return M::vfunc<void, 38U>(this, pReturn);
|
||||
}
|
||||
|
||||
|
||||
[[nodiscard]] std::uint32_t get_entity_by_handle()
|
||||
{
|
||||
CEntityIdentity* identity = m_pEntityIdentity();
|
||||
if (identity == nullptr)
|
||||
return 0;
|
||||
|
||||
|
||||
return identity->get_index();
|
||||
}
|
||||
|
||||
[[nodiscard]] CBaseHandle handle()
|
||||
{
|
||||
CEntityIdentity* identity = m_pEntityIdentity();
|
||||
if (identity == nullptr)
|
||||
return CBaseHandle();
|
||||
|
||||
return CBaseHandle(identity->get_index(), identity->get_serial_number() - (identity->flags() & 1));
|
||||
}
|
||||
|
||||
schema(CEntityIdentity*, m_pEntityIdentity, "CEntityInstance->m_pEntity");
|
||||
};
|
||||
Reference in New Issue
Block a user