diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-02-26 15:58:23 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-02-26 15:58:23 +0100 |
| commit | ee835671b4f572f92f79c9b302764ee591c6de11 (patch) | |
| tree | 94ed8a73e6dfaf3c3d0141d18cafc10db660fab9 /src/server/game/Entities/DynamicObject | |
| parent | ed77b9c3a91c4e71ea1241195d4e3930be1978b3 (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.cpp | 11 | ||||
| -rw-r--r-- | src/server/game/Entities/DynamicObject/DynamicObject.h | 11 |
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; |
