Core/PacketIO: Fixed updatefield structures
Port From (https://github.com/TrinityCore/TrinityCore/commit/ee081084d6b2b43b33fedc9a4d3ce03f8d68cd7a)
This commit is contained in:
@@ -125,24 +125,24 @@ namespace Game.Entities
|
|||||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.BoundsRadius2D), GetTemplate().MaxSearchRadius);
|
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.BoundsRadius2D), GetTemplate().MaxSearchRadius);
|
||||||
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.DecalPropertiesID), GetMiscTemplate().DecalPropertiesId);
|
SetUpdateFieldValue(m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.DecalPropertiesID), GetMiscTemplate().DecalPropertiesId);
|
||||||
|
|
||||||
ScaleCurve extraScaleCurve = m_areaTriggerData.ModifyValue(m_areaTriggerData.ExtraScaleCurve);
|
ScaleCurve extraScaleCurve = m_values.ModifyValue(m_areaTriggerData).ModifyValue(m_areaTriggerData.ExtraScaleCurve);
|
||||||
|
|
||||||
if (GetMiscTemplate().ExtraScale.Structured.StartTimeOffset != 0)
|
if (GetMiscTemplate().ExtraScale.Structured.StartTimeOffset != 0)
|
||||||
SetUpdateFieldValue(ref extraScaleCurve.StartTimeOffset, GetMiscTemplate().ExtraScale.Structured.StartTimeOffset);
|
SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.StartTimeOffset), GetMiscTemplate().ExtraScale.Structured.StartTimeOffset);
|
||||||
if (GetMiscTemplate().ExtraScale.Structured.X != 0 || GetMiscTemplate().ExtraScale.Structured.Y != 0)
|
if (GetMiscTemplate().ExtraScale.Structured.X != 0 || GetMiscTemplate().ExtraScale.Structured.Y != 0)
|
||||||
{
|
{
|
||||||
Vector2 point = new Vector2(GetMiscTemplate().ExtraScale.Structured.X, GetMiscTemplate().ExtraScale.Structured.Y);
|
Vector2 point = new Vector2(GetMiscTemplate().ExtraScale.Structured.X, GetMiscTemplate().ExtraScale.Structured.Y);
|
||||||
SetUpdateFieldValue(ref extraScaleCurve.Points[0], point);
|
SetUpdateFieldValue(ref extraScaleCurve.ModifyValue(extraScaleCurve.Points, 0), point);
|
||||||
}
|
}
|
||||||
if (GetMiscTemplate().ExtraScale.Structured.Z != 0 || GetMiscTemplate().ExtraScale.Structured.W != 0)
|
if (GetMiscTemplate().ExtraScale.Structured.Z != 0 || GetMiscTemplate().ExtraScale.Structured.W != 0)
|
||||||
{
|
{
|
||||||
Vector2 point = new Vector2(GetMiscTemplate().ExtraScale.Structured.Z, GetMiscTemplate().ExtraScale.Structured.W);
|
Vector2 point = new Vector2(GetMiscTemplate().ExtraScale.Structured.Z, GetMiscTemplate().ExtraScale.Structured.W);
|
||||||
SetUpdateFieldValue(ref extraScaleCurve.Points[1], point);
|
SetUpdateFieldValue(ref extraScaleCurve.ModifyValue(extraScaleCurve.Points, 1), point);
|
||||||
}
|
}
|
||||||
if (GetMiscTemplate().ExtraScale.Raw.Data[5] != 0)
|
if (GetMiscTemplate().ExtraScale.Raw.Data[5] != 0)
|
||||||
SetUpdateFieldValue(ref extraScaleCurve.ParameterCurve, GetMiscTemplate().ExtraScale.Raw.Data[5]);
|
SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.ParameterCurve), GetMiscTemplate().ExtraScale.Raw.Data[5]);
|
||||||
if (GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0)
|
if (GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0)
|
||||||
SetUpdateFieldValue(ref extraScaleCurve.OverrideActive, GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0 ? true : false);
|
SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.OverrideActive), GetMiscTemplate().ExtraScale.Structured.OverrideActive != 0 ? true : false);
|
||||||
|
|
||||||
|
|
||||||
PhasingHandler.InheritPhaseShift(this, caster);
|
PhasingHandler.InheritPhaseShift(this, caster);
|
||||||
|
|||||||
@@ -643,6 +643,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
uint AzeriteEssenceID;
|
uint AzeriteEssenceID;
|
||||||
uint Rank;
|
uint Rank;
|
||||||
|
|
||||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
||||||
{
|
{
|
||||||
data.WriteUInt32(AzeriteEssenceID);
|
data.WriteUInt32(AzeriteEssenceID);
|
||||||
@@ -656,46 +657,78 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class SelectedAzeriteEssences
|
public class SelectedAzeriteEssences : BaseUpdateData<Item>
|
||||||
{
|
{
|
||||||
uint Field_0;
|
UpdateField<uint> SpecializationID = new UpdateField<uint>(0, 1);
|
||||||
uint Enabled;
|
UpdateField<uint> Enabled = new UpdateField<uint>(0, 2);
|
||||||
uint[] AzeriteEssenceID = new uint[3];
|
UpdateFieldArray<uint> AzeriteEssenceID = new UpdateFieldArray<uint>(3, 3, 4);
|
||||||
|
|
||||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
public SelectedAzeriteEssences() : base(7) { }
|
||||||
|
|
||||||
|
public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 3; ++i)
|
for (int i = 0; i < 3; ++i)
|
||||||
{
|
{
|
||||||
data.WriteUInt32(AzeriteEssenceID[i]);
|
data.WriteUInt32(AzeriteEssenceID[i]);
|
||||||
}
|
}
|
||||||
data.WriteUInt32(Field_0);
|
data.WriteUInt32(SpecializationID);
|
||||||
data.WriteBits(Enabled, 1);
|
data.WriteBits(Enabled, 1);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
}
|
}
|
||||||
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
||||||
{
|
{
|
||||||
|
UpdateMask changesMask = _changesMask;
|
||||||
|
data.WriteBits(changesMask.GetBlocksMask(0), 1);
|
||||||
|
if (changesMask.GetBlock(0) != 0)
|
||||||
|
data.WriteBits(changesMask.GetBlock(0), 32);
|
||||||
|
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
data.WriteUInt32(Field_0);
|
if (changesMask[0])
|
||||||
data.WriteBits(Enabled, 1);
|
|
||||||
for (int i = 0; i < 3; ++i)
|
|
||||||
{
|
{
|
||||||
data.WriteUInt32(AzeriteEssenceID[i]);
|
if (changesMask[1])
|
||||||
|
{
|
||||||
|
data.WriteUInt32(SpecializationID);
|
||||||
|
}
|
||||||
|
if (changesMask[2])
|
||||||
|
{
|
||||||
|
data.WriteBits(Enabled, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (changesMask[3])
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
if (changesMask[4 + i])
|
||||||
|
{
|
||||||
|
data.WriteUInt32(AzeriteEssenceID[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
}
|
}
|
||||||
|
public override void ClearChangesMask()
|
||||||
|
{
|
||||||
|
ClearChangesMask(SpecializationID);
|
||||||
|
ClearChangesMask(Enabled);
|
||||||
|
ClearChangesMask(AzeriteEssenceID);
|
||||||
|
_changesMask.ResetAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AzeriteItemData : BaseUpdateData<Item>
|
public class AzeriteItemData : BaseUpdateData<Item>
|
||||||
{
|
{
|
||||||
public DynamicUpdateField<UnlockedAzeriteEssence> UnlockedEssences = new DynamicUpdateField<UnlockedAzeriteEssence>(0, 1);
|
public DynamicUpdateField<UnlockedAzeriteEssence> UnlockedEssences = new DynamicUpdateField<UnlockedAzeriteEssence>(0, 1);
|
||||||
public DynamicUpdateField<uint> UnlockedEssenceMilestones = new DynamicUpdateField<uint>(0, 2);
|
public DynamicUpdateField<SelectedAzeriteEssences> SelectedEssences = new DynamicUpdateField<SelectedAzeriteEssences>(0, 2);
|
||||||
public DynamicUpdateField<SelectedAzeriteEssences> SelectedEssences = new DynamicUpdateField<SelectedAzeriteEssences>(0, 3);
|
public DynamicUpdateField<uint> UnlockedEssenceMilestones = new DynamicUpdateField<uint>(0, 3);
|
||||||
public UpdateField<ulong> Xp = new UpdateField<ulong>(0, 4);
|
public UpdateField<ulong> Xp = new UpdateField<ulong>(0, 4);
|
||||||
public UpdateField<uint> Level = new UpdateField<uint>(0, 5);
|
public UpdateField<uint> Level = new UpdateField<uint>(0, 5);
|
||||||
public UpdateField<uint> AuraLevel = new UpdateField<uint>(0, 6);
|
public UpdateField<uint> AuraLevel = new UpdateField<uint>(0, 6);
|
||||||
public UpdateField<uint> KnowledgeLevel = new UpdateField<uint>(0, 7);
|
public UpdateField<uint> KnowledgeLevel = new UpdateField<uint>(0, 7);
|
||||||
public UpdateField<uint> DEBUGknowledgeWeek = new UpdateField<uint>(0, 8);
|
public UpdateField<uint> DEBUGknowledgeWeek = new UpdateField<uint>(0, 8);
|
||||||
|
|
||||||
public AzeriteItemData() : base(9) { }
|
public AzeriteItemData() : base(9) { }
|
||||||
|
|
||||||
public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
||||||
{
|
{
|
||||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
||||||
@@ -733,7 +766,8 @@ namespace Game.Entities
|
|||||||
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag.Owner))
|
||||||
allowedMaskForTarget |= new UpdateMask(9, new[] { 0x000001F0u });
|
allowedMaskForTarget |= new UpdateMask(9, new[] { 0x000001F0u });
|
||||||
}
|
}
|
||||||
public void WriteUpdate(WorldPacket data, UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver) {
|
public void WriteUpdate(WorldPacket data, UpdateMask changesMask, UpdateFieldFlag fieldVisibilityFlags, Item owner, Player receiver)
|
||||||
|
{
|
||||||
data.WriteBits(_changesMask.GetBlock(0), 9);
|
data.WriteBits(_changesMask.GetBlock(0), 9);
|
||||||
|
|
||||||
if (_changesMask[0])
|
if (_changesMask[0])
|
||||||
@@ -744,11 +778,11 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
if (_changesMask[2])
|
if (_changesMask[2])
|
||||||
{
|
{
|
||||||
UnlockedEssenceMilestones.WriteUpdateMask(data);
|
SelectedEssences.WriteUpdateMask(data);
|
||||||
}
|
}
|
||||||
if (_changesMask[3])
|
if (_changesMask[3])
|
||||||
{
|
{
|
||||||
SelectedEssences.WriteUpdateMask(data);
|
UnlockedEssenceMilestones.WriteUpdateMask(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
@@ -765,16 +799,6 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_changesMask[2])
|
if (_changesMask[2])
|
||||||
{
|
|
||||||
for (int i = 0; i < UnlockedEssenceMilestones.Size(); ++i)
|
|
||||||
{
|
|
||||||
if (UnlockedEssenceMilestones.HasChanged(i))
|
|
||||||
{
|
|
||||||
data.WriteUInt32(UnlockedEssenceMilestones[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_changesMask[3])
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SelectedEssences.Size(); ++i)
|
for (int i = 0; i < SelectedEssences.Size(); ++i)
|
||||||
{
|
{
|
||||||
@@ -784,6 +808,16 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (_changesMask[3])
|
||||||
|
{
|
||||||
|
for (int i = 0; i < UnlockedEssenceMilestones.Size(); ++i)
|
||||||
|
{
|
||||||
|
if (UnlockedEssenceMilestones.HasChanged(i))
|
||||||
|
{
|
||||||
|
data.WriteUInt32(UnlockedEssenceMilestones[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (_changesMask[4])
|
if (_changesMask[4])
|
||||||
{
|
{
|
||||||
data.WriteUInt64(Xp);
|
data.WriteUInt64(Xp);
|
||||||
@@ -853,7 +887,8 @@ namespace Game.Entities
|
|||||||
data.WriteUInt16(ItemAppearanceModID);
|
data.WriteUInt16(ItemAppearanceModID);
|
||||||
data.WriteUInt16(ItemVisual);
|
data.WriteUInt16(ItemVisual);
|
||||||
}
|
}
|
||||||
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver) {
|
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Unit owner, Player receiver)
|
||||||
|
{
|
||||||
|
|
||||||
data.WriteBits(_changesMask.GetBlock(0), 4);
|
data.WriteBits(_changesMask.GetBlock(0), 4);
|
||||||
|
|
||||||
@@ -2218,7 +2253,8 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public PlayerData() : base(161) { }
|
public PlayerData() : base(161) { }
|
||||||
|
|
||||||
public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver) {
|
public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Player owner, Player receiver)
|
||||||
|
{
|
||||||
data.WritePackedGuid(DuelArbiter);
|
data.WritePackedGuid(DuelArbiter);
|
||||||
data.WritePackedGuid(WowAccount);
|
data.WritePackedGuid(WowAccount);
|
||||||
data.WritePackedGuid(LootTargetGUID);
|
data.WritePackedGuid(LootTargetGUID);
|
||||||
@@ -2825,9 +2861,9 @@ namespace Game.Entities
|
|||||||
public DynamicUpdateField<uint> Transmog = new DynamicUpdateField<uint>(0, 14);
|
public DynamicUpdateField<uint> Transmog = new DynamicUpdateField<uint>(0, 14);
|
||||||
public DynamicUpdateField<uint> ConditionalTransmog = new DynamicUpdateField<uint>(0, 15);
|
public DynamicUpdateField<uint> ConditionalTransmog = new DynamicUpdateField<uint>(0, 15);
|
||||||
public DynamicUpdateField<uint> SelfResSpells = new DynamicUpdateField<uint>(0, 16);
|
public DynamicUpdateField<uint> SelfResSpells = new DynamicUpdateField<uint>(0, 16);
|
||||||
public DynamicUpdateField<SpellPctModByLabel> SpellPctModByLabel = new DynamicUpdateField<SpellPctModByLabel>(0, 17);
|
public DynamicUpdateField<CharacterRestriction> CharacterRestrictions = new DynamicUpdateField<CharacterRestriction>(0, 17);
|
||||||
public DynamicUpdateField<SpellFlatModByLabel> SpellFlatModByLabel = new DynamicUpdateField<SpellFlatModByLabel>(0, 18);
|
public DynamicUpdateField<SpellPctModByLabel> SpellPctModByLabel = new DynamicUpdateField<SpellPctModByLabel>(0, 18);
|
||||||
public DynamicUpdateField<CharacterRestriction> CharacterRestrictions = new DynamicUpdateField<CharacterRestriction>(0, 19);
|
public DynamicUpdateField<SpellFlatModByLabel> SpellFlatModByLabel = new DynamicUpdateField<SpellFlatModByLabel>(0, 19);
|
||||||
public UpdateField<ObjectGuid> FarsightObject = new UpdateField<ObjectGuid>(0, 22);
|
public UpdateField<ObjectGuid> FarsightObject = new UpdateField<ObjectGuid>(0, 22);
|
||||||
public UpdateField<ObjectGuid> SummonedBattlePetGUID = new UpdateField<ObjectGuid>(0, 23);
|
public UpdateField<ObjectGuid> SummonedBattlePetGUID = new UpdateField<ObjectGuid>(0, 23);
|
||||||
public UpdateField<ulong> Coinage = new UpdateField<ulong>(0, 24);
|
public UpdateField<ulong> Coinage = new UpdateField<ulong>(0, 24);
|
||||||
@@ -3229,15 +3265,15 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
if (_changesMask[17])
|
if (_changesMask[17])
|
||||||
{
|
{
|
||||||
SpellPctModByLabel.WriteUpdateMask(data);
|
CharacterRestrictions.WriteUpdateMask(data);
|
||||||
}
|
}
|
||||||
if (_changesMask[18])
|
if (_changesMask[18])
|
||||||
{
|
{
|
||||||
SpellFlatModByLabel.WriteUpdateMask(data);
|
SpellPctModByLabel.WriteUpdateMask(data);
|
||||||
}
|
}
|
||||||
if (_changesMask[19])
|
if (_changesMask[19])
|
||||||
{
|
{
|
||||||
CharacterRestrictions.WriteUpdateMask(data);
|
SpellFlatModByLabel.WriteUpdateMask(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_changesMask[20])
|
if (_changesMask[20])
|
||||||
@@ -3390,6 +3426,16 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_changesMask[17])
|
if (_changesMask[17])
|
||||||
|
{
|
||||||
|
for (int i = 0; i < CharacterRestrictions.Size(); ++i)
|
||||||
|
{
|
||||||
|
if (CharacterRestrictions.HasChanged(i))
|
||||||
|
{
|
||||||
|
CharacterRestrictions[i].WriteUpdate(data, fieldVisibilityFlags, owner, receiver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_changesMask[18])
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SpellPctModByLabel.Size(); ++i)
|
for (int i = 0; i < SpellPctModByLabel.Size(); ++i)
|
||||||
{
|
{
|
||||||
@@ -3399,7 +3445,7 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_changesMask[18])
|
if (_changesMask[19])
|
||||||
{
|
{
|
||||||
for (int i = 0; i < SpellFlatModByLabel.Size(); ++i)
|
for (int i = 0; i < SpellFlatModByLabel.Size(); ++i)
|
||||||
{
|
{
|
||||||
@@ -3409,16 +3455,6 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_changesMask[19])
|
|
||||||
{
|
|
||||||
for (int i = 0; i < CharacterRestrictions.Size(); ++i)
|
|
||||||
{
|
|
||||||
if (CharacterRestrictions.HasChanged(i))
|
|
||||||
{
|
|
||||||
CharacterRestrictions[i].WriteUpdate(data, fieldVisibilityFlags, owner, receiver);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_changesMask[22])
|
if (_changesMask[22])
|
||||||
{
|
{
|
||||||
data.WritePackedGuid(FarsightObject);
|
data.WritePackedGuid(FarsightObject);
|
||||||
@@ -4251,7 +4287,8 @@ namespace Game.Entities
|
|||||||
data.WriteUInt32(CastTime);
|
data.WriteUInt32(CastTime);
|
||||||
data.WriteUInt8(Type);
|
data.WriteUInt8(Type);
|
||||||
}
|
}
|
||||||
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, DynamicObject owner, Player receiver) {
|
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, DynamicObject owner, Player receiver)
|
||||||
|
{
|
||||||
data.WriteBits(_changesMask.GetBlock(0), 7);
|
data.WriteBits(_changesMask.GetBlock(0), 7);
|
||||||
|
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
@@ -4344,7 +4381,8 @@ namespace Game.Entities
|
|||||||
data.WriteUInt8(CustomDisplayOption[i]);
|
data.WriteUInt8(CustomDisplayOption[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Corpse owner, Player receiver) {
|
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, Corpse owner, Player receiver)
|
||||||
|
{
|
||||||
data.WriteBits(_changesMask.GetBlocksMask(0), 2);
|
data.WriteBits(_changesMask.GetBlocksMask(0), 2);
|
||||||
for (uint i = 0; i < 2; ++i)
|
for (uint i = 0; i < 2; ++i)
|
||||||
if (_changesMask.GetBlock(i) != 0)
|
if (_changesMask.GetBlock(i) != 0)
|
||||||
@@ -4459,14 +4497,16 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ScaleCurve
|
public class ScaleCurve : BaseUpdateData<AreaTrigger>
|
||||||
{
|
{
|
||||||
public bool OverrideActive;
|
public UpdateField<bool> OverrideActive = new UpdateField<bool>(0, 1);
|
||||||
public uint StartTimeOffset;
|
public UpdateField<uint> StartTimeOffset = new UpdateField<uint>(0, 2);
|
||||||
public uint ParameterCurve;
|
public UpdateField<uint> ParameterCurve = new UpdateField<uint>(0, 3);
|
||||||
public Vector2[] Points = new Vector2[2];
|
public UpdateFieldArray<Vector2> Points = new UpdateFieldArray<Vector2>(2, 4, 5);
|
||||||
|
|
||||||
public void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
|
public ScaleCurve() : base(7) { }
|
||||||
|
|
||||||
|
public override void WriteCreate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
|
||||||
{
|
{
|
||||||
data.WriteUInt32(StartTimeOffset);
|
data.WriteUInt32(StartTimeOffset);
|
||||||
for (int i = 0; i < 2; ++i)
|
for (int i = 0; i < 2; ++i)
|
||||||
@@ -4477,18 +4517,50 @@ namespace Game.Entities
|
|||||||
data.WriteBit(OverrideActive);
|
data.WriteBit(OverrideActive);
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
}
|
}
|
||||||
public void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
|
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
|
||||||
{
|
{
|
||||||
data.WriteBit(OverrideActive);
|
UpdateMask changesMask = _changesMask;
|
||||||
data.FlushBits();
|
data.WriteBits(changesMask.GetBlocksMask(0), 1);
|
||||||
data.WriteUInt32(StartTimeOffset);
|
if (changesMask.GetBlock(0) != 0)
|
||||||
data.WriteUInt32(ParameterCurve);
|
data.WriteBits(changesMask.GetBlock(0), 32);
|
||||||
for (int i = 0; i < 2; ++i)
|
|
||||||
|
if (changesMask[0])
|
||||||
{
|
{
|
||||||
data.WriteVector2(Points[i]);
|
if (changesMask[1])
|
||||||
|
{
|
||||||
|
data.WriteBit(OverrideActive);
|
||||||
|
data.FlushBits();
|
||||||
|
}
|
||||||
|
if (changesMask[2])
|
||||||
|
{
|
||||||
|
data.WriteUInt32(StartTimeOffset);
|
||||||
|
}
|
||||||
|
if (changesMask[3])
|
||||||
|
{
|
||||||
|
data.WriteUInt32(ParameterCurve);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (changesMask[4])
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 2; ++i)
|
||||||
|
{
|
||||||
|
if (changesMask[5 + i])
|
||||||
|
{
|
||||||
|
data.WriteVector2(Points[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void ClearChangesMask()
|
||||||
|
{
|
||||||
|
ClearChangesMask(OverrideActive);
|
||||||
|
ClearChangesMask(StartTimeOffset);
|
||||||
|
ClearChangesMask(ParameterCurve);
|
||||||
|
ClearChangesMask(Points);
|
||||||
|
_changesMask.ResetAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AreaTriggerFieldData : BaseUpdateData<AreaTrigger>
|
public class AreaTriggerFieldData : BaseUpdateData<AreaTrigger>
|
||||||
@@ -4525,7 +4597,8 @@ namespace Game.Entities
|
|||||||
data.WritePackedGuid(CreatingEffectGUID);
|
data.WritePackedGuid(CreatingEffectGUID);
|
||||||
((ScaleCurve)ExtraScaleCurve).WriteCreate(data, fieldVisibilityFlags, owner, receiver);
|
((ScaleCurve)ExtraScaleCurve).WriteCreate(data, fieldVisibilityFlags, owner, receiver);
|
||||||
}
|
}
|
||||||
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver) {
|
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, AreaTrigger owner, Player receiver)
|
||||||
|
{
|
||||||
data.WriteBits(_changesMask.GetBlock(0), 14);
|
data.WriteBits(_changesMask.GetBlock(0), 14);
|
||||||
|
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
@@ -4621,7 +4694,8 @@ namespace Game.Entities
|
|||||||
data.WritePackedGuid(CreatedBy);
|
data.WritePackedGuid(CreatedBy);
|
||||||
data.WriteUInt32(SceneType);
|
data.WriteUInt32(SceneType);
|
||||||
}
|
}
|
||||||
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, WorldObject owner, Player receiver) {
|
public override void WriteUpdate(WorldPacket data, UpdateFieldFlag fieldVisibilityFlags, WorldObject owner, Player receiver)
|
||||||
|
{
|
||||||
data.WriteBits(_changesMask.GetBlock(0), 5);
|
data.WriteBits(_changesMask.GetBlock(0), 5);
|
||||||
|
|
||||||
data.FlushBits();
|
data.FlushBits();
|
||||||
|
|||||||
Reference in New Issue
Block a user