diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Object.h | 4 |
4 files changed, 12 insertions, 9 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index a0777ebf470..fc529f1a075 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1051,10 +1051,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 971bb93df3a..c69cde17a96 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -200,7 +200,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 687bdfa79bd..712b7131eca 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -498,10 +498,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) @@ -3490,9 +3487,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 ed3ad4fc7bb..edccf3c7651 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -219,7 +219,7 @@ class TC_GAME_API Object uint16 _fieldNotifyFlags; - virtual void AddToObjectUpdate() = 0; + virtual bool AddToObjectUpdate() = 0; virtual void RemoveFromObjectUpdate() = 0; void AddToObjectUpdateIfNeeded(); @@ -478,7 +478,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 |