diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs index 9da2fb323..a0e271a24 100644 --- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs +++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs @@ -1086,7 +1086,7 @@ namespace Game.Entities reshape.AreaTriggerSpline = new(); reshape.AreaTriggerSpline.ElapsedTimeForMovement = GetElapsedTimeForMovement(); reshape.AreaTriggerSpline.TimeToTarget = timeToTarget; - reshape.AreaTriggerSpline.Points = _spline.GetPoints(); + reshape.AreaTriggerSpline.Points = _spline; SendMessageToSet(reshape, true); } diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index 64f3b87f2..3d160d438 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -577,8 +577,6 @@ namespace Game.Entities bool hasMorphCurveID = createProperties != null && createProperties.MorphCurveId != 0; bool hasFacingCurveID = createProperties != null && createProperties.FacingCurveId != 0; bool hasMoveCurveID = createProperties != null && createProperties.MoveCurveId != 0; - bool hasAreaTriggerSpline = areaTrigger.HasSplines(); - bool hasOrbit = areaTrigger.HasOrbit(); bool hasMovementScript = false; bool hasPositionalSoundKitID = false; @@ -595,19 +593,14 @@ namespace Game.Entities data.WriteBit(hasFacingCurveID); data.WriteBit(hasMoveCurveID); data.WriteBit(hasPositionalSoundKitID); - data.WriteBit(hasAreaTriggerSpline); - data.WriteBit(hasOrbit); + data.WriteBit(areaTrigger.HasSplines()); + data.WriteBit(areaTrigger.HasOrbit()); data.WriteBit(hasMovementScript); data.FlushBits(); - if (hasAreaTriggerSpline) - { - data.WriteUInt32(areaTrigger.GetTimeToTarget()); - data.WriteUInt32(areaTrigger.GetElapsedTimeForMovement()); - - MovementExtensions.WriteCreateObjectAreaTriggerSpline(areaTrigger.GetSpline(), data); - } + if (areaTrigger.HasSplines()) + AreaTriggerSplineInfo.WriteAreaTriggerSpline(data, areaTrigger.GetTimeToTarget(), areaTrigger.GetElapsedTimeForMovement(), areaTrigger.GetSpline()); if (hasTargetRollPitchYaw) data.WriteVector3(areaTrigger.GetTargetRollPitchYaw()); @@ -630,7 +623,7 @@ namespace Game.Entities //if (hasMovementScript) // *data << *areaTrigger.GetMovementScript(); // AreaTriggerMovementScriptInfo - if (hasOrbit) + if (areaTrigger.HasOrbit()) areaTrigger.GetOrbit().Write(data); } diff --git a/Source/Game/Networking/Packets/AreaTriggerPackets.cs b/Source/Game/Networking/Packets/AreaTriggerPackets.cs index 263c3e3da..e7f1a1dd4 100644 --- a/Source/Game/Networking/Packets/AreaTriggerPackets.cs +++ b/Source/Game/Networking/Packets/AreaTriggerPackets.cs @@ -4,6 +4,7 @@ using Framework.Constants; using Framework.Dynamic; using Game.Entities; +using Game.Movement; using System.Collections.Generic; using System.Numerics; @@ -95,20 +96,26 @@ namespace Game.Networking.Packets //Structs class AreaTriggerSplineInfo { - public void Write(WorldPacket data) + public static void WriteAreaTriggerSpline(WorldPacket data, uint timeToTarget, uint elapsedTimeForMovement, Spline areaTriggerSpline) { - data.WriteUInt32(TimeToTarget); - data.WriteUInt32(ElapsedTimeForMovement); + data.WriteUInt32(timeToTarget); + data.WriteUInt32(elapsedTimeForMovement); - data.WriteBits(Points.Length, 16); + var points = areaTriggerSpline.GetPoints(); + data.WriteBits(points.Length, 16); data.FlushBits(); - foreach (Vector3 point in Points) + foreach (Vector3 point in points) data.WriteVector3(point); } + public void Write(WorldPacket data) + { + WriteAreaTriggerSpline(data, TimeToTarget, ElapsedTimeForMovement, Points); + } + public uint TimeToTarget; public uint ElapsedTimeForMovement; - public Vector3[] Points = new Vector3[0]; + public Spline Points; } } diff --git a/Source/Game/Networking/Packets/MovementPackets.cs b/Source/Game/Networking/Packets/MovementPackets.cs index 21d2f425a..a708be721 100644 --- a/Source/Game/Networking/Packets/MovementPackets.cs +++ b/Source/Game/Networking/Packets/MovementPackets.cs @@ -342,13 +342,6 @@ namespace Game.Networking.Packets } } - public static void WriteCreateObjectAreaTriggerSpline(Spline spline, WorldPacket data) - { - data.WriteBits(spline.GetPoints().Length, 16); - foreach (var point in spline.GetPoints()) - data.WriteVector3(point); - } - public static void WriteMovementForceWithDirection(MovementForce movementForce, WorldPacket data, Position objectPosition = null) { data.WritePackedGuid(movementForce.ID);