diff --git a/WowPacketParserModule.V4_4_0_54481/Parsers/AreaTriggerHandler.cs b/WowPacketParserModule.V4_4_0_54481/Parsers/AreaTriggerHandler.cs index 6363e1be65..878f988383 100644 --- a/WowPacketParserModule.V4_4_0_54481/Parsers/AreaTriggerHandler.cs +++ b/WowPacketParserModule.V4_4_0_54481/Parsers/AreaTriggerHandler.cs @@ -10,13 +10,15 @@ public static class AreaTriggerHandler { public static List ReadAreaTriggerSpline(AreaTriggerCreateProperties createProperties, Packet packet, params object[] indexes) { - packet.ReadInt32("TimeToTarget", indexes); + var moveTime = packet.ReadInt32("TimeToTarget", indexes); packet.ReadInt32("ElapsedTimeForMovement", indexes); packet.ResetBitReader(); var pointCount = (int)packet.ReadBits("PointsCount", 16, indexes); var points = new List(pointCount); + var distance = 0.0; + var prevPoint = new Vector3(); for (var i = 0u; i < pointCount; ++i) { @@ -32,6 +34,17 @@ public static List ReadAreaTriggerSpline Z = point.Z }); } + + if (i > 0) + distance += Vector3.GetDistance(prevPoint, point); + + prevPoint = point; + } + + if (distance > 0) + { + packet.AddValue("Computed Distance", distance, indexes); + packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes); } return points; diff --git a/WowPacketParserModule.V7_0_3_22248/Parsers/AreaTriggerHandler.cs b/WowPacketParserModule.V7_0_3_22248/Parsers/AreaTriggerHandler.cs index 5bdd1d7880..f7a07d6fdc 100644 --- a/WowPacketParserModule.V7_0_3_22248/Parsers/AreaTriggerHandler.cs +++ b/WowPacketParserModule.V7_0_3_22248/Parsers/AreaTriggerHandler.cs @@ -10,13 +10,15 @@ public static class AreaTriggerHandler { public static List ReadAreaTriggerSpline(AreaTriggerCreateProperties createProperties, Packet packet, params object[] indexes) { - packet.ReadInt32("TimeToTarget", indexes); + var moveTime = packet.ReadInt32("TimeToTarget", indexes); packet.ReadInt32("ElapsedTimeForMovement", indexes); packet.ResetBitReader(); - var pointCount = (int) packet.ReadBits("PointsCount", 16, indexes); + var pointCount = (int)packet.ReadBits("PointsCount", 16, indexes); var points = new List(pointCount); + var distance = 0.0; + var prevPoint = new Vector3(); for (var i = 0u; i < pointCount; ++i) { @@ -32,6 +34,17 @@ public static List ReadAreaTriggerSpline Z = point.Z }); } + + if (i > 0) + distance += Vector3.GetDistance(prevPoint, point); + + prevPoint = point; + } + + if (distance > 0) + { + packet.AddValue("Computed Distance", distance, indexes); + packet.AddValue("Computed Speed", (distance / moveTime) * 1000, indexes); } return points;