Core/Movement: Fixed data sent in cyclic spline related packets

Port From (https://github.com/TrinityCore/TrinityCore/commit/a28facb95633435f89f134eec55a4a545251be9b)
This commit is contained in:
Hondacrx
2024-08-18 21:25:52 -04:00
parent 7d83729d84
commit 6356f68143
2 changed files with 6 additions and 17 deletions
+1 -1
View File
@@ -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);
}
}
@@ -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<Vector3> realPath = new Span<Vector3>(spline.GetPoints()).Slice(1);
int lastIdx = spline.GetPointCount() - (splineFlags.HasFlag(SplineFlag.Cyclic) ? 4 : 3);
Vector3[] realPath = array[1..];
movementSpline.Points.Add(realPath[lastIdx]);