aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.cpp11
-rw-r--r--src/server/game/Entities/AreaTrigger/AreaTrigger.h11
-rw-r--r--src/server/game/Entities/Conversation/Conversation.cpp13
-rw-r--r--src/server/game/Entities/Conversation/Conversation.h11
-rw-r--r--src/server/game/Entities/Corpse/Corpse.cpp11
-rw-r--r--src/server/game/Entities/Corpse/Corpse.h11
-rw-r--r--src/server/game/Entities/DynamicObject/DynamicObject.cpp11
-rw-r--r--src/server/game/Entities/DynamicObject/DynamicObject.h11
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp11
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h11
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp11
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.h12
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp11
-rw-r--r--src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h12
-rw-r--r--src/server/game/Entities/Item/Container/Bag.cpp11
-rw-r--r--src/server/game/Entities/Item/Container/Bag.h12
-rw-r--r--src/server/game/Entities/Item/Item.cpp11
-rw-r--r--src/server/game/Entities/Item/Item.h12
-rw-r--r--src/server/game/Entities/Player/Player.cpp12
-rw-r--r--src/server/game/Entities/Player/Player.h14
-rw-r--r--src/server/game/Entities/SceneObject/SceneObject.cpp13
-rw-r--r--src/server/game/Entities/SceneObject/SceneObject.h11
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp11
-rw-r--r--src/server/game/Entities/Unit/Unit.h11
24 files changed, 274 insertions, 2 deletions
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
index 84d0a97af0b..0c7e15e74ee 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
@@ -1054,6 +1054,17 @@ void AreaTrigger::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Objec
data->AddUpdateBlock(buffer);
}
+void AreaTrigger::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), AreaTriggerMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void AreaTrigger::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&AreaTrigger::m_areaTriggerData);
diff --git a/src/server/game/Entities/AreaTrigger/AreaTrigger.h b/src/server/game/Entities/AreaTrigger/AreaTrigger.h
index ba5aaf7f69f..6ed8ecf7c87 100644
--- a/src/server/game/Entities/AreaTrigger/AreaTrigger.h
+++ b/src/server/game/Entities/AreaTrigger/AreaTrigger.h
@@ -53,6 +53,17 @@ class TC_GAME_API AreaTrigger : public WorldObject, public GridObject<AreaTrigge
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
UF::AreaTriggerData::Mask const& requestedAreaTriggerMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(AreaTrigger const* owner) : Owner(owner) { }
+
+ AreaTrigger const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::AreaTriggerData::Base AreaTriggerMask;
+
+ void operator()(Player const* player) const;
+ };
+
void AddToWorld() override;
void RemoveFromWorld() override;
diff --git a/src/server/game/Entities/Conversation/Conversation.cpp b/src/server/game/Entities/Conversation/Conversation.cpp
index bd1a6155b13..b24dc06de70 100644
--- a/src/server/game/Entities/Conversation/Conversation.cpp
+++ b/src/server/game/Entities/Conversation/Conversation.cpp
@@ -25,8 +25,8 @@
#include "Log.h"
#include "Map.h"
#include "PhasingHandler.h"
+#include "Player.h"
#include "ScriptMgr.h"
-#include "Unit.h"
#include "UpdateData.h"
Conversation::Conversation() : WorldObject(false), _duration(0), _textureKitId(0)
@@ -286,6 +286,17 @@ void Conversation::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Obje
data->AddUpdateBlock(buffer);
}
+void Conversation::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ConversationMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void Conversation::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&Conversation::m_conversationData);
diff --git a/src/server/game/Entities/Conversation/Conversation.h b/src/server/game/Entities/Conversation/Conversation.h
index 157a89f77cd..b175f8b1b17 100644
--- a/src/server/game/Entities/Conversation/Conversation.h
+++ b/src/server/game/Entities/Conversation/Conversation.h
@@ -39,6 +39,17 @@ class TC_GAME_API Conversation : public WorldObject, public GridObject<Conversat
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
UF::ConversationData::Mask const& requestedConversationMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(Conversation const* owner) : Owner(owner) { }
+
+ Conversation const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::ConversationData::Base ConversationMask;
+
+ void operator()(Player const* player) const;
+ };
+
void AddToWorld() override;
void RemoveFromWorld() override;
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp
index 6b72d4752f4..b3589db71ae 100644
--- a/src/server/game/Entities/Corpse/Corpse.cpp
+++ b/src/server/game/Entities/Corpse/Corpse.cpp
@@ -282,6 +282,17 @@ void Corpse::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData
data->AddUpdateBlock(buffer);
}
+void Corpse::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), CorpseMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void Corpse::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&Corpse::m_corpseData);
diff --git a/src/server/game/Entities/Corpse/Corpse.h b/src/server/game/Entities/Corpse/Corpse.h
index fed3211b4c4..03e9ebb47e9 100644
--- a/src/server/game/Entities/Corpse/Corpse.h
+++ b/src/server/game/Entities/Corpse/Corpse.h
@@ -62,6 +62,17 @@ class TC_GAME_API Corpse : public WorldObject, public GridObject<Corpse>
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
UF::CorpseData::Mask const& requestedCorpseMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(Corpse const* owner) : Owner(owner) { }
+
+ Corpse const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::CorpseData::Base CorpseMask;
+
+ void operator()(Player const* player) const;
+ };
+
void AddToWorld() override;
void RemoveFromWorld() override;
diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp
index d749eb7a2f3..fb15e8d723f 100644
--- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp
+++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp
@@ -302,6 +302,17 @@ void DynamicObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Obj
data->AddUpdateBlock(buffer);
}
+void DynamicObject::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), DynamicObjectMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void DynamicObject::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&DynamicObject::m_dynamicObjectData);
diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.h b/src/server/game/Entities/DynamicObject/DynamicObject.h
index fd3d6a8aa0d..de1bae637c3 100644
--- a/src/server/game/Entities/DynamicObject/DynamicObject.h
+++ b/src/server/game/Entities/DynamicObject/DynamicObject.h
@@ -47,6 +47,17 @@ class TC_GAME_API DynamicObject : public WorldObject, public GridObject<DynamicO
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
UF::DynamicObjectData::Mask const& requestedDynamicObjectMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(DynamicObject const* owner) : Owner(owner) { }
+
+ DynamicObject const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::DynamicObjectData::Base DynamicObjectMask;
+
+ void operator()(Player const* player) const;
+ };
+
void AddToWorld() override;
void RemoveFromWorld() override;
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index d07a6bb57b4..1fe707abe24 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -2829,6 +2829,17 @@ void GameObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Object
data->AddUpdateBlock(buffer);
}
+void GameObject::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), GameObjectMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void GameObject::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&GameObject::m_gameObjectData);
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index b72ccd1eb04..964101df642 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -92,6 +92,17 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
UF::GameObjectData::Mask const& requestedGameObjectMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(GameObject const* owner) : Owner(owner) { }
+
+ GameObject const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::GameObjectData::Base GameObjectMask;
+
+ void operator()(Player const* player) const;
+ };
+
void AddToWorld() override;
void RemoveFromWorld() override;
void CleanupsBeforeDelete(bool finalCleanup = true) override;
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp b/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp
index 8584a18a679..7ec63620a4f 100644
--- a/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp
+++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.cpp
@@ -220,6 +220,17 @@ void AzeriteEmpoweredItem::BuildValuesUpdateForPlayerWithMask(UpdateData* data,
data->AddUpdateBlock(buffer);
}
+void AzeriteEmpoweredItem::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(player->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), AzeriteEmpoweredItemMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void AzeriteEmpoweredItem::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&AzeriteEmpoweredItem::m_azeriteEmpoweredItemData);
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.h b/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.h
index 2e0ed093be4..608e8f1fc71 100644
--- a/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.h
+++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteEmpoweredItem.h
@@ -51,6 +51,18 @@ public:
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask,
UF::AzeriteEmpoweredItemData::Mask const& requestedAzeriteEmpoweredItemMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(AzeriteEmpoweredItem const* owner) : Owner(owner) { }
+
+ AzeriteEmpoweredItem const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::ItemData::Base ItemMask;
+ UF::AzeriteEmpoweredItemData::Base AzeriteEmpoweredItemMask;
+
+ void operator()(Player const* player) const;
+ };
+
UF::UpdateField<UF::AzeriteEmpoweredItemData, 0, TYPEID_AZERITE_EMPOWERED_ITEM> m_azeriteEmpoweredItemData;
private:
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp
index b6f5e2b7f65..21662ee9d96 100644
--- a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp
+++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.cpp
@@ -480,6 +480,17 @@ void AzeriteItem::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Objec
data->AddUpdateBlock(buffer);
}
+void AzeriteItem::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(player->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), AzeriteItemMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void AzeriteItem::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&AzeriteItem::m_azeriteItemData);
diff --git a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h
index 34fff676050..444bc9c7b02 100644
--- a/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h
+++ b/src/server/game/Entities/Item/AzeriteItem/AzeriteItem.h
@@ -83,6 +83,18 @@ public:
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask,
UF::AzeriteItemData::Mask const& requestedAzeriteItemMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(AzeriteItem const* owner) : Owner(owner) { }
+
+ AzeriteItem const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::ItemData::Base ItemMask;
+ UF::AzeriteItemData::Base AzeriteItemMask;
+
+ void operator()(Player const* player) const;
+ };
+
UF::UpdateField<UF::AzeriteItemData, 0, TYPEID_AZERITE_ITEM> m_azeriteItemData;
private:
diff --git a/src/server/game/Entities/Item/Container/Bag.cpp b/src/server/game/Entities/Item/Container/Bag.cpp
index 6629182b47b..53bd7b5d39f 100644
--- a/src/server/game/Entities/Item/Container/Bag.cpp
+++ b/src/server/game/Entities/Item/Container/Bag.cpp
@@ -248,6 +248,17 @@ void Bag::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::M
data->AddUpdateBlock(buffer);
}
+void Bag::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(player->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), ContainerMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void Bag::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&Bag::m_containerData);
diff --git a/src/server/game/Entities/Item/Container/Bag.h b/src/server/game/Entities/Item/Container/Bag.h
index 8f02e5aff61..6ade3bdf974 100644
--- a/src/server/game/Entities/Item/Container/Bag.h
+++ b/src/server/game/Entities/Item/Container/Bag.h
@@ -62,6 +62,18 @@ class TC_GAME_API Bag : public Item
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::ItemData::Mask const& requestedItemMask,
UF::ContainerData::Mask const& requestedContainerMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(Bag const* owner) : Owner(owner) { }
+
+ Bag const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::ItemData::Base ItemMask;
+ UF::ContainerData::Base ContainerMask;
+
+ void operator()(Player const* player) const;
+ };
+
std::string GetDebugInfo() const override;
UF::UpdateField<UF::ContainerData, 0, TYPEID_CONTAINER> m_containerData;
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp
index 62da97cb475..7f3039e9d81 100644
--- a/src/server/game/Entities/Item/Item.cpp
+++ b/src/server/game/Entities/Item/Item.cpp
@@ -1723,6 +1723,17 @@ void Item::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::
data->AddUpdateBlock(buffer);
}
+void Item::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(player->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), ItemMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void Item::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&Item::m_itemData);
diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h
index 74535c615a8..30ef7ffb170 100644
--- a/src/server/game/Entities/Item/Item.h
+++ b/src/server/game/Entities/Item/Item.h
@@ -378,6 +378,18 @@ 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;
+
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(Item const* owner) : Owner(owner) { }
+
+ Item const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::ItemData::Base ItemMask;
+
+ void operator()(Player const* player) const;
+ };
+
bool AddToObjectUpdate() override;
void RemoveFromObjectUpdate() override;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 2441d972f79..52713e1fe90 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -3648,6 +3648,18 @@ void Player::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData
data->AddUpdateBlock(buffer);
}
+void Player::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), UnitMask.GetChangesMask(),
+ PlayerMask.GetChangesMask(), ActivePlayerMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void Player::DestroyForPlayer(Player* target) const
{
Unit::DestroyForPlayer(target);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 9015762e3b2..02609502b13 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2086,6 +2086,20 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void BuildValuesUpdateWithFlag(ByteBuffer* data, UF::UpdateFieldFlag flags, Player const* target) const override;
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask, UF::UnitData::Mask const& requestedUnitMask,
UF::PlayerData::Mask const& requestedPlayerMask, UF::ActivePlayerData::Mask const& requestedActivePlayerMask, Player const* target) const;
+
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(Player const* owner) : Owner(owner) { }
+
+ Player const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::UnitData::Base UnitMask;
+ UF::PlayerData::Base PlayerMask;
+ UF::ActivePlayerData::Base ActivePlayerMask;
+
+ void operator()(Player const* player) const;
+ };
+
void DestroyForPlayer(Player* target) const override;
// notifiers
diff --git a/src/server/game/Entities/SceneObject/SceneObject.cpp b/src/server/game/Entities/SceneObject/SceneObject.cpp
index de79d7f1c31..e75c8c9c2f8 100644
--- a/src/server/game/Entities/SceneObject/SceneObject.cpp
+++ b/src/server/game/Entities/SceneObject/SceneObject.cpp
@@ -21,8 +21,8 @@
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
#include "PhasingHandler.h"
+#include "Player.h"
#include "SpellAuras.h"
-#include "Unit.h"
#include "UpdateData.h"
#include "Util.h"
@@ -186,6 +186,17 @@ void SceneObject::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::Objec
data->AddUpdateBlock(buffer);
}
+void SceneObject::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), SceneObjectMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void SceneObject::ClearUpdateMask(bool remove)
{
m_values.ClearChangesMask(&SceneObject::m_sceneObjectData);
diff --git a/src/server/game/Entities/SceneObject/SceneObject.h b/src/server/game/Entities/SceneObject/SceneObject.h
index ca1e6c5449f..6cc749466e6 100644
--- a/src/server/game/Entities/SceneObject/SceneObject.h
+++ b/src/server/game/Entities/SceneObject/SceneObject.h
@@ -43,6 +43,17 @@ public:
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
UF::SceneObjectData::Mask const& requestedSceneObjectMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(SceneObject const* owner) : Owner(owner) { }
+
+ SceneObject const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::SceneObjectData::Base SceneObjectMask;
+
+ void operator()(Player const* player) const;
+ };
+
void AddToWorld() override;
void RemoveFromWorld() override;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index d5e112bed43..a1750be34a8 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -13148,6 +13148,17 @@ void Unit::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::
data->AddUpdateBlock(buffer);
}
+void Unit::ValuesUpdateForPlayerWithMaskSender::operator()(Player const* player) const
+{
+ UpdateData udata(Owner->GetMapId());
+ WorldPacket packet;
+
+ Owner->BuildValuesUpdateForPlayerWithMask(&udata, ObjectMask.GetChangesMask(), UnitMask.GetChangesMask(), player);
+
+ udata.BuildPacket(&packet);
+ player->SendDirectMessage(&packet);
+}
+
void Unit::DestroyForPlayer(Player* target) const
{
if (Battleground* bg = target->GetBattleground())
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index d6df772d50e..146136665ba 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1882,6 +1882,17 @@ class TC_GAME_API Unit : public WorldObject
void BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
UF::UnitData::Mask const& requestedUnitMask, Player const* target) const;
+ struct ValuesUpdateForPlayerWithMaskSender // sender compatible with MessageDistDeliverer
+ {
+ explicit ValuesUpdateForPlayerWithMaskSender(Unit const* owner) : Owner(owner) { }
+
+ Unit const* Owner;
+ UF::ObjectData::Base ObjectMask;
+ UF::UnitData::Base UnitMask;
+
+ void operator()(Player const* player) const;
+ };
+
protected:
void DestroyForPlayer(Player* target) const override;
void ClearUpdateMask(bool remove) override;