feat(object): add HandleObjectOutOfRangePass1

This commit is contained in:
fallenoak 2026-01-15 21:04:43 -06:00
parent f4ca99ac15
commit 13ec1d7eef
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
4 changed files with 32 additions and 0 deletions

View File

@ -22,6 +22,10 @@ void CGObject_C::AddWorldObject() {
// TODO // TODO
} }
void CGObject_C::Disable() {
// TODO
}
int32_t CGObject_C::IsInReenable() { int32_t CGObject_C::IsInReenable() {
return this->m_inReenable; return this->m_inReenable;
} }

View File

@ -19,6 +19,14 @@ class CGObject_C : public CGObject, public TSHashObject<CGObject_C, CHashKeyGUID
uint32_t m_postInited : 1; uint32_t m_postInited : 1;
uint32_t m_flag19 : 1; uint32_t m_flag19 : 1;
uint32_t m_disablePending : 1; uint32_t m_disablePending : 1;
// TODO
// Virtual public member functions
// TODO
virtual void Disable();
// TODO
virtual void HandleOutOfRange(OUT_OF_RANGE_TYPE type) {};
// TODO
// Public member functions // Public member functions
CGObject_C() = default; CGObject_C() = default;

View File

@ -56,6 +56,23 @@ CGObject_C* GetUpdateObject(WOWGUID guid, int32_t* reenable) {
return nullptr; return nullptr;
} }
int32_t HandleObjectOutOfRangePass1(CGObject_C* object, OUT_OF_RANGE_TYPE type) {
// TODO arena unit out of range handling
object->HandleOutOfRange(type);
if (object->IsObjectLocked()) {
object->SetDisablePending(true);
return false;
}
object->SetDisablePending(false);
object->Disable();
return true;
}
void InitObject(CGObject_C* object, uint32_t time, CClientObjCreate& objCreate) { void InitObject(CGObject_C* object, uint32_t time, CClientObjCreate& objCreate) {
switch (object->m_typeID) { switch (object->m_typeID) {
case ID_ITEM: { case ID_ITEM: {

View File

@ -1,6 +1,7 @@
#ifndef OBJECT_CLIENT_UTIL_HPP #ifndef OBJECT_CLIENT_UTIL_HPP
#define OBJECT_CLIENT_UTIL_HPP #define OBJECT_CLIENT_UTIL_HPP
#include "object/Types.hpp"
#include "util/GUID.hpp" #include "util/GUID.hpp"
#include <cstdint> #include <cstdint>
@ -11,6 +12,8 @@ CGObject_C* FindActiveObject(WOWGUID guid);
CGObject_C* GetUpdateObject(WOWGUID guid, int32_t* reenable); CGObject_C* GetUpdateObject(WOWGUID guid, int32_t* reenable);
int32_t HandleObjectOutOfRangePass1(CGObject_C* object, OUT_OF_RANGE_TYPE type);
void InitObject(CGObject_C* object, uint32_t time, CClientObjCreate& objCreate); void InitObject(CGObject_C* object, uint32_t time, CClientObjCreate& objCreate);
#endif #endif