aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-10-25 15:36:11 +0200
committerShauren <shauren.trinity@gmail.com>2024-10-25 15:36:11 +0200
commit067fa31d152ecb10e5bea0419f84f7b79b96abf5 (patch)
tree9b5921a62ff86259f613f6e8f1e3e9b294be14a8 /src/server/game/Entities/Unit
parent6dab3791ae7c810114ac1d5dbdd3b018813e2a97 (diff)
Core/PacketIO: Move writing data sizes in SMSG_UPDATE_OBJECT to shared functions instead of spreading it in all overrides
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp96
-rw-r--r--src/server/game/Entities/Unit/Unit.h21
2 files changed, 0 insertions, 117 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 91731cc0a98..fe0b7bd931c 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -13749,102 +13749,6 @@ bool Unit::IsSplineEnabled() const
return movespline->Initialized() && !movespline->Finalized();
}
-UF::UpdateFieldFlag Unit::GetUpdateFieldFlagsFor(Player const* target) const
-{
- UF::UpdateFieldFlag flags = UF::UpdateFieldFlag::None;
- if (target == this || GetOwnerGUID() == target->GetGUID())
- flags |= UF::UpdateFieldFlag::Owner;
-
- if (HasDynamicFlag(UNIT_DYNFLAG_SPECIALINFO))
- if (HasAuraTypeWithCaster(SPELL_AURA_EMPATHY, target->GetGUID()))
- flags |= UF::UpdateFieldFlag::Empath;
-
- return flags;
-}
-
-void Unit::BuildValuesCreate(ByteBuffer* data, Player const* target) const
-{
- UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
- std::size_t sizePos = data->wpos();
- *data << uint32(0);
- *data << uint8(flags);
- m_objectData->WriteCreate(*data, flags, this, target);
- m_unitData->WriteCreate(*data, flags, this, target);
- data->put<uint32>(sizePos, data->wpos() - sizePos - 4);
-}
-
-void Unit::BuildValuesUpdate(ByteBuffer* data, Player const* target) const
-{
- UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
- std::size_t sizePos = data->wpos();
- *data << uint32(0);
- *data << uint32(m_values.GetChangedObjectTypeMask());
-
- if (m_values.HasChanged(TYPEID_OBJECT))
- m_objectData->WriteUpdate(*data, flags, this, target);
-
- if (m_values.HasChanged(TYPEID_UNIT))
- m_unitData->WriteUpdate(*data, flags, this, target);
-
- data->put<uint32>(sizePos, data->wpos() - sizePos - 4);
-}
-
-void Unit::BuildValuesUpdateWithFlag(ByteBuffer* data, UF::UpdateFieldFlag flags, Player const* target) const
-{
- UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
- valuesMask.Set(TYPEID_UNIT);
-
- std::size_t sizePos = data->wpos();
- *data << uint32(0);
- *data << uint32(valuesMask.GetBlock(0));
-
- UF::UnitData::Mask mask;
- m_unitData->AppendAllowedFieldsMaskForFlag(mask, flags);
- m_unitData->WriteUpdate(*data, mask, true, this, target);
-
- data->put<uint32>(sizePos, data->wpos() - sizePos - 4);
-}
-
-void Unit::BuildValuesUpdateForPlayerWithMask(UpdateData* data, UF::ObjectData::Mask const& requestedObjectMask,
- UF::UnitData::Mask const& requestedUnitMask, Player const* target) const
-{
- UF::UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target);
- UpdateMask<NUM_CLIENT_OBJECT_TYPES> valuesMask;
- if (requestedObjectMask.IsAnySet())
- valuesMask.Set(TYPEID_OBJECT);
-
- UF::UnitData::Mask unitMask = requestedUnitMask;
- m_unitData->FilterDisallowedFieldsMaskForFlag(unitMask, flags);
- if (unitMask.IsAnySet())
- valuesMask.Set(TYPEID_UNIT);
-
- ByteBuffer& buffer = PrepareValuesUpdateBuffer(data);
- std::size_t sizePos = buffer.wpos();
- buffer << uint32(0);
- buffer << uint32(valuesMask.GetBlock(0));
-
- if (valuesMask[TYPEID_OBJECT])
- m_objectData->WriteUpdate(buffer, requestedObjectMask, true, this, target);
-
- if (valuesMask[TYPEID_UNIT])
- m_unitData->WriteUpdate(buffer, unitMask, true, this, target);
-
- buffer.put<uint32>(sizePos, buffer.wpos() - sizePos - 4);
-
- data->AddUpdateBlock();
-}
-
-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 03564f43315..e40827ece4e 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1841,27 +1841,6 @@ class TC_GAME_API Unit : public WorldObject
protected:
explicit Unit (bool isWorldObject);
- UF::UpdateFieldFlag GetUpdateFieldFlagsFor(Player const* target) const override;
- void BuildValuesCreate(ByteBuffer* data, Player const* target) const override;
- void BuildValuesUpdate(ByteBuffer* data, Player const* target) const override;
-
- public:
- 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, 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;