From 6356f681431d223df2d38674ac319d66e508b7ee Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sun, 18 Aug 2024 21:25:52 -0400 Subject: [PATCH] Core/Movement: Fixed data sent in cyclic spline related packets Port From (https://github.com/TrinityCore/TrinityCore/commit/a28facb95633435f89f134eec55a4a545251be9b) --- Source/Game/Entities/Unit/Unit.Movement.cs | 2 +- .../Networking/Packets/MovementPackets.cs | 21 +++++-------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/Source/Game/Entities/Unit/Unit.Movement.cs b/Source/Game/Entities/Unit/Unit.Movement.cs index 6567ce1d1..48ee3dda6 100644 --- a/Source/Game/Entities/Unit/Unit.Movement.cs +++ b/Source/Game/Entities/Unit/Unit.Movement.cs @@ -1818,7 +1818,7 @@ namespace Game.Entities FlightSplineSync flightSplineSync = new(); flightSplineSync.Guid = GetGUID(); - flightSplineSync.SplineDist = MoveSpline.TimePassed() / MoveSpline.Duration(); + flightSplineSync.SplineDist = (float)MoveSpline.TimePassed() / MoveSpline.Duration(); SendMessageToSet(flightSplineSync, true); } } diff --git a/Source/Game/Networking/Packets/MovementPackets.cs b/Source/Game/Networking/Packets/MovementPackets.cs index 51cb6ea2e..4aa2691a6 100644 --- a/Source/Game/Networking/Packets/MovementPackets.cs +++ b/Source/Game/Networking/Packets/MovementPackets.cs @@ -396,7 +396,6 @@ namespace Game.Networking.Packets MovementSpline movementSpline = SplineData.Move; MoveSplineFlag splineFlags = moveSpline.splineflags; - splineFlags.SetUnsetFlag(SplineFlag.Cyclic, moveSpline.IsCyclic()); movementSpline.Flags = (uint)(splineFlags.Flags & ~SplineFlag.MaskNoMonsterMove); movementSpline.Face = moveSpline.facing.type; movementSpline.FaceDirection = moveSpline.facing.angle; @@ -441,24 +440,14 @@ namespace Game.Networking.Packets if (splineFlags.HasFlag(SplineFlag.UncompressedPath)) { - if (!splineFlags.HasFlag(SplineFlag.Cyclic)) - { - int count = spline.GetPointCount() - 3; - for (uint i = 0; i < count; ++i) - movementSpline.Points.Add(array[i + 2]); - } - else - { - int count = spline.GetPointCount() - 3; - movementSpline.Points.Add(array[1]); - for (uint i = 0; i < count; ++i) - movementSpline.Points.Add(array[i + 1]); - } + int count = spline.GetPointCount() - (splineFlags.HasFlag(SplineFlag.Cyclic) ? 4 : 3); + for (int i = 0; i < count; ++i) + movementSpline.Points.Add(new Vector3(array[i + 2].X, array[i + 2].Y, array[i + 2].Z)); } else { - int lastIdx = spline.GetPointCount() - 3; - Span realPath = new Span(spline.GetPoints()).Slice(1); + int lastIdx = spline.GetPointCount() - (splineFlags.HasFlag(SplineFlag.Cyclic) ? 4 : 3); + Vector3[] realPath = array[1..]; movementSpline.Points.Add(realPath[lastIdx]);