aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-02-17 14:36:47 +0100
committerShauren <shauren.trinity@gmail.com>2021-02-17 14:36:47 +0100
commite2b7a9d3e519626a735d2a3ba7f01e89fffb83ca (patch)
tree94393cb4e13f282f785042627e63e2f126a4948a
parent92e010f60c6d8e847c68dad184ca23c10508052d (diff)
Core/PacketIO: Corrected logic for filtering out disallowed fields when force sending specific ones
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 034862fe586..4894000cd63 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -336,8 +336,9 @@ void ItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFl
void ItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
- if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- changesMask &= { 0xFC04E4FFu, 0xFFFFFFFFu };
+ Mask allowedMaskForTarget({ 0xFC04E4FFu, 0x000000FFu });
+ AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
+ changesMask &= allowedMaskForTarget;
}
void ItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Item const* owner, Player const* receiver) const
@@ -718,8 +719,9 @@ void AzeriteItemData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget,
void AzeriteItemData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
- if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- changesMask &= { 0xFFFFFC1Du };
+ Mask allowedMaskForTarget({ 0x0000001Du });
+ AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
+ changesMask &= allowedMaskForTarget;
}
void AzeriteItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, AzeriteItem const* owner, Player const* receiver) const
@@ -1144,12 +1146,9 @@ void UnitData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFl
void UnitData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
- if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
- changesMask &= { 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFBFFFF81u, 0x03F8007Fu, 0xE0000000u };
- if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::UnitAll))
- changesMask &= { 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFBFFFFFFu, 0xFFF8007Fu, 0xFFFFFFFFu };
- if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Empath))
- changesMask &= { 0xFFFFFFFFu, 0xE1FFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFF807Fu };
+ Mask allowedMaskForTarget({ 0xFFFFDFFFu, 0xE1FF7FFFu, 0x001EFFFFu, 0xFFFFFF81u, 0x03F8007Fu, 0x00000000u });
+ AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
+ changesMask &= allowedMaskForTarget;
}
void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Unit const* owner, Player const* receiver) const
@@ -2165,8 +2164,9 @@ void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, Enum
void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const
{
- if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember))
- changesMask &= { 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFFFu };
+ Mask allowedMaskForTarget({ 0xFFFFFFEDu, 0x00000003u, 0x00000000u, 0x00000000u, 0x00000000u, 0x01FFFFFFu });
+ AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags);
+ changesMask &= allowedMaskForTarget;
}
void PlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const