From 6fcce1a6e449bb146c4056738af2747be3b2de2e Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Mon, 11 Nov 2024 12:32:44 -0500 Subject: [PATCH] Core/Objects: More minor refactors for SMSG_UPDATE_OBJECT building - move getting and writing field flags to shared function Port From (https://github.com/TrinityCore/TrinityCore/commit/ee54ade3975748bf373162b2397328852dec6701) --- Source/Game/Entities/AreaTrigger/AreaTrigger.cs | 9 ++------- Source/Game/Entities/Conversation.cs | 9 ++------- Source/Game/Entities/Corpse.cs | 9 ++------- Source/Game/Entities/Creature/Creature.cs | 7 ++----- Source/Game/Entities/DynamicObject.cs | 9 ++------- Source/Game/Entities/GameObject/GameObject.cs | 9 ++------- Source/Game/Entities/Item/AzeriteEmpoweredItem.cs | 9 ++------- Source/Game/Entities/Item/AzeriteItem.cs | 9 ++------- Source/Game/Entities/Item/Bag.cs | 9 ++------- Source/Game/Entities/Item/Item.cs | 9 ++------- Source/Game/Entities/Object/WorldObject.cs | 13 +++++++++---- Source/Game/Entities/Player/Player.cs | 9 ++------- Source/Game/Entities/SceneObject.cs | 9 ++------- 13 files changed, 33 insertions(+), 86 deletions(-) diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs index 594c6b9c0..8230b56be 100644 --- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs +++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs @@ -1330,19 +1330,14 @@ namespace Game.Entities return false; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_areaTriggerData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Conversation.cs b/Source/Game/Entities/Conversation.cs index 4f20ccfe2..471199d06 100644 --- a/Source/Game/Entities/Conversation.cs +++ b/Source/Game/Entities/Conversation.cs @@ -287,19 +287,14 @@ namespace Game.Entities return Global.ConversationDataStorage.GetConversationTemplate(GetEntry()).ScriptId; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_conversationData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Corpse.cs b/Source/Game/Entities/Corpse.cs index d29771284..327d7aba4 100644 --- a/Source/Game/Entities/Corpse.cs +++ b/Source/Game/Entities/Corpse.cs @@ -217,19 +217,14 @@ namespace Game.Entities return m_time < t - 3 * Time.Day; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_corpseData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index e2918ca1a..77cd49cca 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -3704,17 +3704,14 @@ namespace Game.Entities return flags; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_unitData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) diff --git a/Source/Game/Entities/DynamicObject.cs b/Source/Game/Entities/DynamicObject.cs index 20a554e36..f6322fb01 100644 --- a/Source/Game/Entities/DynamicObject.cs +++ b/Source/Game/Entities/DynamicObject.cs @@ -240,19 +240,14 @@ namespace Game.Entities return Global.SpellMgr.GetSpellInfo(GetSpellId(), GetMap().GetDifficultyID()); } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_dynamicObjectData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/GameObject/GameObject.cs b/Source/Game/Entities/GameObject/GameObject.cs index 443f8905e..1b8e0ed20 100644 --- a/Source/Game/Entities/GameObject/GameObject.cs +++ b/Source/Game/Entities/GameObject/GameObject.cs @@ -3271,19 +3271,14 @@ namespace Game.Entities return ObjectAccessor.GetGameObject(this, m_linkedTrap); } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_gameObjectData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs b/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs index 7cca7e5f3..9ff8e0aad 100644 --- a/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs +++ b/Source/Game/Entities/Item/AzeriteEmpoweredItem.cs @@ -146,20 +146,15 @@ namespace Game.Entities return (long)PlayerConst.MaxMoneyAmount + 1; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_itemData.WriteCreate(data, flags, this, target); m_azeriteEmpoweredItemData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Item/AzeriteItem.cs b/Source/Game/Entities/Item/AzeriteItem.cs index 0c1a0a0a6..4889194b5 100644 --- a/Source/Game/Entities/Item/AzeriteItem.cs +++ b/Source/Game/Entities/Item/AzeriteItem.cs @@ -404,20 +404,15 @@ namespace Game.Entities SetUpdateFieldValue(ref selectedEssences.ModifyValue(selectedEssences.AzeriteEssenceID, slot), azeriteEssenceId); } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_itemData.WriteCreate(data, flags, this, target); m_azeriteItemData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Item/Bag.cs b/Source/Game/Entities/Item/Bag.cs index 8ed7909f8..05006a3fd 100644 --- a/Source/Game/Entities/Item/Bag.cs +++ b/Source/Game/Entities/Item/Bag.cs @@ -160,20 +160,15 @@ namespace Game.Entities m_bagslot[i].BuildCreateUpdateBlockForPlayer(data, target); } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_itemData.WriteCreate(data, flags, this, target); m_containerData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Item/Item.cs b/Source/Game/Entities/Item/Item.cs index 94f639156..dc9a9f8b3 100644 --- a/Source/Game/Entities/Item/Item.cs +++ b/Source/Game/Entities/Item/Item.cs @@ -1270,19 +1270,14 @@ namespace Game.Entities return UpdateFieldFlag.None; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_itemData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index 73a5d5bc6..382c04349 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -167,9 +167,12 @@ namespace Game.Entities BuildMovementUpdate(buffer, flags, target); + UpdateFieldFlag fieldFlags = GetUpdateFieldFlagsFor(target); + WorldPacket tempBuffer = new(); - BuildValuesCreate(tempBuffer, target); + BuildValuesCreate(tempBuffer, fieldFlags, target); buffer.WriteUInt32(tempBuffer.GetSize()); + buffer.WriteUInt8((byte)fieldFlags); buffer.WriteBytes(tempBuffer); data.AddUpdateBlock(buffer); @@ -196,8 +199,10 @@ namespace Game.Entities buffer.WriteUInt8((byte)UpdateType.Values); buffer.WritePackedGuid(GetGUID()); + UpdateFieldFlag fieldFlags = GetUpdateFieldFlagsFor(target); + WorldPacket tempBuffer = new(); - BuildValuesUpdate(tempBuffer, target); + BuildValuesUpdate(tempBuffer, fieldFlags, target); buffer.WriteUInt32(tempBuffer.GetSize()); buffer.WriteBytes(tempBuffer); @@ -833,8 +838,8 @@ namespace Game.Entities public virtual Loot GetLootForPlayer(Player player) { return null; } - public virtual void BuildValuesCreate(WorldPacket data, Player target) { } - public virtual void BuildValuesUpdate(WorldPacket data, Player target) { } + public virtual void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { } + public virtual void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { } public void SetUpdateFieldValue(IUpdateField updateField, T newValue) { diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 41dc35428..571e533ba 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -7915,11 +7915,8 @@ namespace Game.Entities return flags; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_unitData.WriteCreate(data, flags, this, target); m_playerData.WriteCreate(data, flags, this, target); @@ -7927,10 +7924,8 @@ namespace Game.Entities m_activePlayerData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32((uint)(m_values.GetChangedObjectTypeMask() & ~((target != this ? 1 : 0) << (int)TypeId.ActivePlayer))); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target); diff --git a/Source/Game/Entities/SceneObject.cs b/Source/Game/Entities/SceneObject.cs index 5b466c335..05f2da50a 100644 --- a/Source/Game/Entities/SceneObject.cs +++ b/Source/Game/Entities/SceneObject.cs @@ -121,19 +121,14 @@ namespace Game.Entities return true; } - public override void BuildValuesCreate(WorldPacket data, Player target) + public override void BuildValuesCreate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - - data.WriteUInt8((byte)flags); m_objectData.WriteCreate(data, flags, this, target); m_sceneObjectData.WriteCreate(data, flags, this, target); } - public override void BuildValuesUpdate(WorldPacket data, Player target) + public override void BuildValuesUpdate(WorldPacket data, UpdateFieldFlag flags, Player target) { - UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); - data.WriteUInt32(m_values.GetChangedObjectTypeMask()); if (m_values.HasChanged(TypeId.Object)) m_objectData.WriteUpdate(data, flags, this, target);