From 1298b3afa220c7744f61d83c7afc8ede217e2ceb Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 8 Jan 2025 21:38:31 +0100 Subject: [PATCH] Print calculated distance and speed for areatrigger splines --- .../Parsers/AreaTriggerHandler.cs | 15 ++++++++++++++- .../Parsers/AreaTriggerHandler.cs | 17 +++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) 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;