aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/DynamicObject
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-02-26 15:58:23 +0100
committerShauren <shauren.trinity@gmail.com>2022-02-26 15:58:23 +0100
commitee835671b4f572f92f79c9b302764ee591c6de11 (patch)
tree94ed8a73e6dfaf3c3d0141d18cafc10db660fab9 /src/server/game/Entities/DynamicObject
parented77b9c3a91c4e71ea1241195d4e3930be1978b3 (diff)
Core/Objects: Added helper structures to allow using customized updatefield sending packet functions with Trinity::MessageDistDeliverer
Diffstat (limited to 'src/server/game/Entities/DynamicObject')
-rw-r--r--src/server/game/Entities/DynamicObject/DynamicObject.cpp11
-rw-r--r--src/server/game/Entities/DynamicObject/DynamicObject.h11
2 files changed, 22 insertions, 0 deletions
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;