diff options
| -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 bd2c688847b..ac0770a9e82 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -1700,10 +1700,15 @@ void Item::ClearUpdateMask(bool remove) Object::ClearUpdateMask(remove); } -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 b9ae082e277..3ee7515ac03 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -377,7 +377,7 @@ class TC_GAME_API Item : public Object void BuildValuesUpdateWithFlag(ByteBuffer* data, UF::UpdateFieldFlag flags, Player const* target) const override; void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask, Player const* target) const; - 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 05e1b688a89..bda27e52492 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -723,10 +723,7 @@ void Object::BuildValuesUpdateWithFlag(ByteBuffer* data, UF::UpdateFieldFlag /*f void Object::AddToObjectUpdateIfNeeded() { if (m_inWorld && !m_objectUpdated) - { - AddToObjectUpdate(); - m_objectUpdated = true; - } + m_objectUpdated = AddToObjectUpdate(); } void Object::ClearUpdateMask(bool remove) @@ -3413,9 +3410,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 3410da98477..0d7e237e937 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -380,7 +380,7 @@ class TC_GAME_API Object TypeID m_objectTypeId; CreateObjectBits m_updateFlag; - virtual void AddToObjectUpdate() = 0; + virtual bool AddToObjectUpdate() = 0; virtual void RemoveFromObjectUpdate() = 0; void AddToObjectUpdateIfNeeded(); @@ -656,7 +656,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void UpdatePositionData(); void BuildUpdate(UpdateDataMapType&) override; - void AddToObjectUpdate() override; + bool AddToObjectUpdate() override; void RemoveFromObjectUpdate() override; //relocation and visibility system functions |
