Core/PacketIO: Fixed SMSG_UPDATE_OBJECT packets going missing for new items

Closes #16906
This commit is contained in:
Shauren
2020-03-19 20:42:44 +01:00
committed by Ovahlord
parent 9dd475d2fc
commit 9ad9398f04
4 changed files with 12 additions and 9 deletions

View File

@@ -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()

View File

@@ -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; }

View File

@@ -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()

View File

@@ -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