diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 50a91c8f1a3..6cddbd750a7 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1031,10 +1031,15 @@ void Item::BuildUpdate(UpdateDataMapType& data_map) ClearUpdateMask(false); } -void Item::AddToObjectUpdate() +bool Item::AddToObjectUpdate() { if (Player* owner = GetOwner()) + { owner->GetMap()->AddUpdateObject(this); + return true; + } + + return false; } void Item::RemoveFromObjectUpdate() diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index 51e12c63e83..f0381718ede 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -201,7 +201,7 @@ class TC_GAME_API Item : public Object void BuildUpdate(UpdateDataMapType&) override; - void AddToObjectUpdate() override; + bool AddToObjectUpdate() override; void RemoveFromObjectUpdate() override; uint32 GetScriptId() const { return GetTemplate()->ScriptId; } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 90a1b53004b..7cb4d55aef0 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -688,10 +688,7 @@ void Object::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* targe void Object::AddToObjectUpdateIfNeeded() { if (m_inWorld && !m_objectUpdated) - { - AddToObjectUpdate(); - m_objectUpdated = true; - } + m_objectUpdated = AddToObjectUpdate(); } void Object::ClearUpdateMask(bool remove) @@ -2761,9 +2758,10 @@ void WorldObject::BuildUpdate(UpdateDataMapType& data_map) ClearUpdateMask(false); } -void WorldObject::AddToObjectUpdate() +bool WorldObject::AddToObjectUpdate() { GetMap()->AddUpdateObject(this); + return true; } void WorldObject::RemoveFromObjectUpdate() diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 32be64c460c..61c30559605 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -213,7 +213,7 @@ class TC_GAME_API Object uint16 _fieldNotifyFlags; - virtual void AddToObjectUpdate() = 0; + virtual bool AddToObjectUpdate() = 0; virtual void RemoveFromObjectUpdate() = 0; void AddToObjectUpdateIfNeeded(); @@ -433,7 +433,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void BuildUpdate(UpdateDataMapType&) override; - void AddToObjectUpdate() override; + bool AddToObjectUpdate() override; void RemoveFromObjectUpdate() override; //relocation and visibility system functions