Skip to content

Commit 052f4f5

Browse files
committed
Output areatrigger speed in sql
1 parent 1385551 commit 052f4f5

File tree

12 files changed

+61
-42
lines changed

12 files changed

+61
-42
lines changed

WowPacketParser/SQL/Builders/AreaTriggers.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ public static string AreaTriggerCreatePropertiesData()
7171
row.Data.AnimKitId = createProperties.Value.AnimKitId;
7272
row.Data.DecalPropertiesId = createProperties.Value.DecalPropertiesId;
7373
row.Data.SpellForVisuals = createProperties.Value.SpellForVisuals;
74+
row.Data.TimeToTarget = createProperties.Value.TimeToTarget;
75+
row.Data.TimeToTargetScale = createProperties.Value.TimeToTargetScale;
76+
row.Data.Speed = createProperties.Value.Speed;
7477
row.Data.Shape = createProperties.Value.Shape;
7578
row.Data.ShapeData = createProperties.Value.ShapeData;
7679

@@ -112,8 +115,7 @@ public static string AreaTriggerCreatePropertiesOrbitData()
112115

113116
foreach (var orbit in Storage.AreaTriggerCreatePropertiesOrbits)
114117
{
115-
var spellAreaTriggerTuple = Storage.Objects.Where(obj => obj.Key == orbit.Item1.areatriggerGuid).First();
116-
AreaTriggerCreateProperties areaTrigger = (AreaTriggerCreateProperties)spellAreaTriggerTuple.Value.Item1;
118+
AreaTriggerCreateProperties areaTrigger = orbit.Item1.CreateProperties;
117119

118120
orbit.Item1.spellId = areaTrigger.spellId;
119121
orbit.Item1.AreaTriggerCreatePropertiesId = areaTrigger.AreaTriggerCreatePropertiesId;

WowPacketParser/Store/Objects/AreaTriggerCreateProperties.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
using System;
2-
using System.Collections.Generic;
32
using WowPacketParser.Enums;
43
using WowPacketParser.Misc;
54
using WowPacketParser.SQL;
6-
using WowPacketParser.SQL.Builders;
75
using WowPacketParser.Store.Objects.UpdateFields;
86
using WowPacketParser.Store.Objects.UpdateFields.LegacyImplementation;
97

@@ -53,12 +51,15 @@ public sealed record AreaTriggerCreateProperties : WoWObject, IDataModel
5351
[DBFieldName("SpellForVisuals", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.CataClassic, false, false, true)]
5452
public uint? SpellForVisuals;
5553

56-
[DBFieldName("TimeToTarget")]
54+
[DBFieldName("TimeToTarget", TargetedDatabaseFlag.TillDragonflight)]
5755
public uint? TimeToTarget = 0;
5856

5957
[DBFieldName("TimeToTargetScale")]
6058
public uint? TimeToTargetScale = 0;
6159

60+
[DBFieldName("Speed", TargetedDatabaseFlag.SinceTheWarWithin)]
61+
public float? Speed;
62+
6263
[DBFieldName("Shape", TargetedDatabaseFlag.SinceShadowlands | TargetedDatabaseFlag.CataClassic)]
6364
public byte? Shape;
6465

@@ -179,12 +180,15 @@ public sealed record AreaTriggerCreatePropertiesCustom : IDataModel
179180
[DBFieldName("SpellForVisuals", TargetedDatabaseFlag.SinceDragonflight | TargetedDatabaseFlag.CataClassic, false, false, true)]
180181
public uint? SpellForVisuals;
181182

182-
[DBFieldName("TimeToTarget")]
183+
[DBFieldName("TimeToTarget", TargetedDatabaseFlag.TillDragonflight)]
183184
public uint? TimeToTarget = 0;
184185

185186
[DBFieldName("TimeToTargetScale")]
186187
public uint? TimeToTargetScale = 0;
187188

189+
[DBFieldName("Speed", TargetedDatabaseFlag.SinceTheWarWithin)]
190+
public float? Speed;
191+
188192
[DBFieldName("Shape", TargetedDatabaseFlag.SinceShadowlands)]
189193
public byte? Shape;
190194

WowPacketParser/Store/Objects/AreaTriggerCreatePropertiesOrbit.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Text;
5-
using System.Threading.Tasks;
6-
using WowPacketParser.Enums;
1+
using WowPacketParser.Enums;
72
using WowPacketParser.Misc;
83
using WowPacketParser.SQL;
94

@@ -45,6 +40,6 @@ public sealed record AreaTriggerCreatePropertiesOrbit : IDataModel
4540
// Will be inserted as comment
4641
public uint spellId = 0;
4742

48-
public WowGuid areatriggerGuid;
43+
public AreaTriggerCreateProperties CreateProperties;
4944
}
5045
}

WowPacketParserModule.V11_0_0_55666/Parsers/UpdateHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, CreateObject
819819
}
820820

821821
if ((createProperties.Flags & (uint)AreaTriggerCreatePropertiesFlags.HasOrbit) != 0)
822-
Storage.AreaTriggerCreatePropertiesOrbits.Add(V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerOrbit(guid, packet, index, "AreaTriggerOrbit"));
822+
Storage.AreaTriggerCreatePropertiesOrbits.Add(V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerOrbit(createProperties, packet, index, "AreaTriggerOrbit"));
823823

824824
// TargetedDatabase.Shadowlands stores AreaTriggerCreatePropertiesFlags in Template
825825
if (Settings.TargetedDatabase < TargetedDatabase.Dragonflight)

WowPacketParserModule.V1_13_2_31446/Parsers/UpdateHandler.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, CreateObject
429429
packet.ReadBit();
430430

431431
if (hasAreaTriggerSpline)
432-
foreach (var splinePoint in V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerSpline((AreaTriggerCreateProperties)obj, packet, index, "AreaTriggerSpline"))
432+
foreach (var splinePoint in V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerSpline(spellAreaTrigger, packet, index, "AreaTriggerSpline"))
433433
Storage.AreaTriggerCreatePropertiesSplinePoints.Add(splinePoint);
434434

435435
if ((areaTriggerTemplate.Flags & (uint)AreaTriggerCreatePropertiesFlags.HasTargetRollPitchYaw) != 0)
@@ -525,7 +525,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, CreateObject
525525
}
526526

527527
if ((areaTriggerTemplate.Flags & (uint)AreaTriggerCreatePropertiesFlags.HasOrbit) != 0)
528-
Storage.AreaTriggerCreatePropertiesOrbits.Add(V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerOrbit(guid, packet, index, "AreaTriggerOrbit"));
528+
Storage.AreaTriggerCreatePropertiesOrbits.Add(V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerOrbit(spellAreaTrigger, packet, index, "AreaTriggerOrbit"));
529529

530530
spellAreaTrigger.Shape = areaTriggerTemplate.Type;
531531
Array.Copy(areaTriggerTemplate.Data, spellAreaTrigger.ShapeData, Math.Min(areaTriggerTemplate.Data.Length, spellAreaTrigger.ShapeData.Length));

WowPacketParserModule.V2_5_1_38707/Parsers/UpdateHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid,
801801
}
802802

803803
if ((areaTriggerTemplate.Flags & (uint)AreaTriggerCreatePropertiesFlags.HasOrbit) != 0)
804-
V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerOrbit(guid, packet, "Orbit");
804+
V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerOrbit(spellAreaTrigger, packet, "Orbit");
805805

806806
Storage.AreaTriggerTemplates.Add(areaTriggerTemplate);
807807
}

WowPacketParserModule.V4_4_0_54481/Parsers/AreaTriggerHandler.cs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using WowPacketParser.Enums;
44
using WowPacketParser.Misc;
55
using WowPacketParser.Parsing;
6+
using WowPacketParser.Store;
67
using WowPacketParser.Store.Objects;
78

89
namespace WowPacketParserModule.V4_4_0_54481.Parsers
@@ -36,7 +37,7 @@ public static List<AreaTriggerCreatePropertiesSplinePoint> ReadAreaTriggerSpline
3637
});
3738
}
3839

39-
if (i > 0)
40+
if (i > 1 && i < pointCount - 1) // ignore first and last points (dummy spline points)
4041
distance += Vector3.GetDistance(prevPoint, point);
4142

4243
prevPoint = point;
@@ -45,17 +46,19 @@ public static List<AreaTriggerCreatePropertiesSplinePoint> ReadAreaTriggerSpline
4546
if (distance > 0)
4647
{
4748
packet.AddValue("Computed Distance", distance, indexes);
48-
packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
49+
double speed = packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
50+
if (createProperties != null)
51+
createProperties.Speed = (float)speed;
4952
}
5053

5154
return points;
5255
}
5356

54-
public static AreaTriggerCreatePropertiesOrbit ReadAreaTriggerOrbit(WowGuid areaTriggerGuid, Packet packet, params object[] indexes)
57+
public static AreaTriggerCreatePropertiesOrbit ReadAreaTriggerOrbit(AreaTriggerCreateProperties createProperties, Packet packet, params object[] indexes)
5558
{
5659
packet.ResetBitReader();
5760
var orbit = new AreaTriggerCreatePropertiesOrbit();
58-
orbit.areatriggerGuid = areaTriggerGuid;
61+
orbit.CreateProperties = createProperties;
5962

6063
var hasTarget = packet.ReadBit("HasPathTarget", indexes);
6164
var hasCenter = packet.ReadBit("HasCenter", indexes);
@@ -76,9 +79,11 @@ public static AreaTriggerCreatePropertiesOrbit ReadAreaTriggerOrbit(WowGuid area
7679
if (hasCenter)
7780
packet.ReadVector3("Center", indexes);
7881

79-
var distance = 2 * Math.PI * orbit.CircleRadius;
82+
var distance = 2 * Math.PI * orbit.CircleRadius.Value;
8083
packet.AddValue("Computed Distance", distance, indexes);
81-
packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
84+
var speed = packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
85+
if (createProperties != null)
86+
createProperties.Speed = (float)speed;
8287

8388
return orbit;
8489
}
@@ -106,24 +111,26 @@ public static void ReadAreaTriggerMovementScript(Packet packet, params object[]
106111
[Parser(Opcode.SMSG_AREA_TRIGGER_RE_PATH)]
107112
public static void HandleAreaTriggerReShape(Packet packet)
108113
{
109-
packet.ReadPackedGuid128("TriggerGUID");
114+
var areaTriggerGuid = packet.ReadPackedGuid128("TriggerGUID");
110115

111116
if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_4_1_57294))
112117
packet.ReadPackedGuid128("Unused_1100");
113118

119+
Storage.Objects.TryGetValue(areaTriggerGuid, out WoWObject createProperties);
120+
114121
packet.ResetBitReader();
115122
var hasAreaTriggerSpline = packet.ReadBit("HasAreaTriggerSpline");
116123
var hasAreaTriggerOrbit = packet.ReadBit("HasAreaTriggerOrbit");
117124
var hasAreaTriggerMovementScript = packet.ReadBit("HasAreaTriggerMovementScript");
118125

119126
if (hasAreaTriggerSpline)
120-
ReadAreaTriggerSpline(null, packet, "Spline");
127+
ReadAreaTriggerSpline((AreaTriggerCreateProperties)createProperties, packet, "Spline");
121128

122129
if (hasAreaTriggerMovementScript)
123130
ReadAreaTriggerMovementScript(packet, "MovementScript");
124131

125132
if (hasAreaTriggerOrbit)
126-
ReadAreaTriggerOrbit(null, packet, "Orbit");
133+
ReadAreaTriggerOrbit((AreaTriggerCreateProperties)createProperties, packet, "Orbit");
127134
}
128135

129136
[Parser(Opcode.CMSG_AREA_TRIGGER)]

WowPacketParserModule.V4_4_0_54481/Parsers/UpdateHandler.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,8 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid,
684684
packet.ReadBit("Unk3");
685685

686686
if (hasAreaTriggerSpline)
687-
V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerSpline(spellAreaTrigger, packet, index);
687+
foreach (var splinePoint in AreaTriggerHandler.ReadAreaTriggerSpline(spellAreaTrigger, packet, index, "AreaTriggerSpline"))
688+
Storage.AreaTriggerCreatePropertiesSplinePoints.Add(splinePoint);
688689

689690
if ((areaTriggerTemplate.Flags & (uint)AreaTriggerCreatePropertiesFlags.HasTargetRollPitchYaw) != 0)
690691
packet.ReadVector3("TargetRollPitchYaw", index);
@@ -792,7 +793,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, WowGuid guid,
792793
}
793794

794795
if ((areaTriggerTemplate.Flags & (uint)AreaTriggerCreatePropertiesFlags.HasOrbit) != 0)
795-
V7_0_3_22248.Parsers.AreaTriggerHandler.ReadAreaTriggerOrbit(guid, packet, "Orbit");
796+
Storage.AreaTriggerCreatePropertiesOrbits.Add(AreaTriggerHandler.ReadAreaTriggerOrbit(spellAreaTrigger, packet, index, "AreaTriggerOrbit"));
796797

797798
Storage.AreaTriggerTemplates.Add(areaTriggerTemplate);
798799
}

WowPacketParserModule.V7_0_3_22248/Parsers/AreaTriggerHandler.cs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using WowPacketParser.Enums;
44
using WowPacketParser.Misc;
55
using WowPacketParser.Parsing;
6+
using WowPacketParser.Store;
67
using WowPacketParser.Store.Objects;
78

89
namespace WowPacketParserModule.V7_0_3_22248.Parsers
@@ -36,7 +37,7 @@ public static List<AreaTriggerCreatePropertiesSplinePoint> ReadAreaTriggerSpline
3637
});
3738
}
3839

39-
if (i > 0)
40+
if (i > 1 && i < pointCount - 1) // ignore first and last points (dummy spline points)
4041
distance += Vector3.GetDistance(prevPoint, point);
4142

4243
prevPoint = point;
@@ -45,7 +46,9 @@ public static List<AreaTriggerCreatePropertiesSplinePoint> ReadAreaTriggerSpline
4546
if (distance > 0)
4647
{
4748
packet.AddValue("Computed Distance", distance, indexes);
48-
packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
49+
var speed = packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
50+
if (createProperties != null)
51+
createProperties.Speed = (float)speed;
4952
}
5053

5154
return points;
@@ -61,24 +64,25 @@ public static void HandleAreaTriggerRePath(Packet packet)
6164
[Parser(Opcode.SMSG_AREA_TRIGGER_RE_SHAPE)]
6265
public static void HandleAreaTriggerReShape(Packet packet)
6366
{
64-
packet.ReadPackedGuid128("TriggerGUID");
67+
var areaTriggerGuid = packet.ReadPackedGuid128("TriggerGUID");
68+
Storage.Objects.TryGetValue(areaTriggerGuid, out WoWObject createProperties);
6569

6670
packet.ResetBitReader();
6771
var hasAreaTriggerSpline = packet.ReadBit("HasAreaTriggerSpline");
6872
var hasAreaTriggerOrbit = packet.ReadBit("HasAreaTriggerOrbit");
6973

7074
if (hasAreaTriggerSpline)
71-
ReadAreaTriggerSpline(null, packet, "Spline");
75+
ReadAreaTriggerSpline((AreaTriggerCreateProperties)createProperties, packet, "Spline");
7276

7377
if (hasAreaTriggerOrbit)
74-
ReadAreaTriggerOrbit(null, packet, "Orbit");
78+
ReadAreaTriggerOrbit((AreaTriggerCreateProperties)createProperties, packet, "Orbit");
7579
}
7680

77-
public static AreaTriggerCreatePropertiesOrbit ReadAreaTriggerOrbit(WowGuid areaTriggerGuid, Packet packet, params object[] indexes)
81+
public static AreaTriggerCreatePropertiesOrbit ReadAreaTriggerOrbit(AreaTriggerCreateProperties createProperties, Packet packet, params object[] indexes)
7882
{
7983
packet.ResetBitReader();
8084
var orbit = new AreaTriggerCreatePropertiesOrbit();
81-
orbit.areatriggerGuid = areaTriggerGuid;
85+
orbit.CreateProperties = createProperties;
8286

8387
var hasTarget = packet.ReadBit("HasPathTarget", indexes);
8488
var hasCenter = packet.ReadBit("HasCenter", indexes);
@@ -99,9 +103,11 @@ public static AreaTriggerCreatePropertiesOrbit ReadAreaTriggerOrbit(WowGuid area
99103
if (hasCenter)
100104
packet.ReadVector3("Center", indexes);
101105

102-
var distance = 2 * Math.PI * orbit.CircleRadius;
106+
var distance = 2 * Math.PI * orbit.CircleRadius.Value;
103107
packet.AddValue("Computed Distance", distance, indexes);
104-
packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
108+
var speed = packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes);
109+
if (createProperties != null)
110+
createProperties.Speed = (float)speed;
105111

106112
return orbit;
107113
}

WowPacketParserModule.V7_0_3_22248/Parsers/UpdateHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ private static MovementInfo ReadMovementUpdateBlock(Packet packet, CreateObject
557557
}
558558

559559
if ((areaTriggerTemplate.Flags & (uint)AreaTriggerCreatePropertiesFlags.HasOrbit) != 0)
560-
Storage.AreaTriggerCreatePropertiesOrbits.Add(AreaTriggerHandler.ReadAreaTriggerOrbit(guid, packet, index, "AreaTriggerOrbit"));
560+
Storage.AreaTriggerCreatePropertiesOrbits.Add(AreaTriggerHandler.ReadAreaTriggerOrbit(spellAreaTrigger, packet, index, "AreaTriggerOrbit"));
561561

562562
spellAreaTrigger.Shape = areaTriggerTemplate.Type;
563563
Array.Copy(areaTriggerTemplate.Data, spellAreaTrigger.ShapeData, Math.Min(areaTriggerTemplate.Data.Length, spellAreaTrigger.ShapeData.Length));

0 commit comments

Comments
 (0)