Core/Movement: Change default spline flags - Steering replaces SmoothGroundPath

Port From (https://github.com/TrinityCore/TrinityCore/commit/3af5cafec782ab4d5d5d8478927caae0e6258174)
This commit is contained in:
Hondacrx
2024-08-18 22:08:08 -04:00
parent 46377f0716
commit 116cfcdcf9
7 changed files with 61 additions and 67 deletions
+15 -15
View File
@@ -20,11 +20,11 @@ namespace Game.Movement
// Elevators also use MOVEMENTFLAG_ONTRANSPORT but we do not keep track of their position changes
args.TransformForTransport = !unit.GetTransGUID().IsEmpty();
// mix existing state into new
args.flags.SetUnsetFlag(SplineFlag.CanSwim, unit.CanSwim());
args.flags.SetUnsetFlag(MoveSplineFlagEnum.CanSwim, unit.CanSwim());
args.walk = unit.HasUnitMovementFlag(MovementFlag.Walking);
args.flags.SetUnsetFlag(SplineFlag.Flying, unit.HasUnitMovementFlag(MovementFlag.CanFly | MovementFlag.DisableGravity));
args.flags.SetUnsetFlag(SplineFlag.Steering, unit.HasNpcFlag2(NPCFlags2.Steering));
args.flags.SetUnsetFlag(SplineFlag.SmoothGroundPath, !args.flags.HasFlag(SplineFlag.Flying) && !args.flags.HasFlag(SplineFlag.Steering)); // enabled by default, CatmullRom mode or client config "pathSmoothing" will disable this
args.flags.SetUnsetFlag(MoveSplineFlagEnum.Flying, unit.HasUnitMovementFlag(MovementFlag.CanFly | MovementFlag.DisableGravity));
args.flags.SetUnsetFlag(MoveSplineFlagEnum.FastSteering, true);
args.flags.SetUnsetFlag(MoveSplineFlagEnum.Steering, unit.HasNpcFlag2(NPCFlags2.Steering) || !unit.IsInCombat());
}
UnitMoveType SelectSpeedType(MovementFlag moveFlags)
@@ -87,11 +87,11 @@ namespace Game.Movement
// correct first vertex
args.path[0] = new Vector3(real_position.X, real_position.Y, real_position.Z);
args.initialOrientation = real_position.W;
args.flags.SetUnsetFlag(SplineFlag.EnterCycle, args.flags.HasFlag(SplineFlag.Cyclic));
args.flags.SetUnsetFlag(MoveSplineFlagEnum.EnterCycle, args.flags.HasFlag(MoveSplineFlagEnum.Cyclic));
move_spline.onTransport = transport;
MovementFlag moveFlags = unit.m_movementInfo.GetMovementFlags();
if (!args.flags.HasFlag(SplineFlag.Backward))
if (!args.flags.HasFlag(MoveSplineFlagEnum.Backward))
moveFlags = (moveFlags & ~MovementFlag.Backward) | MovementFlag.Forward;
else
moveFlags = (moveFlags & ~MovementFlag.Forward) | MovementFlag.Backward;
@@ -119,10 +119,10 @@ namespace Game.Movement
// limit the speed in the same way the client does
float speedLimit()
{
if (args.flags.HasFlag(SplineFlag.UnlimitedSpeed))
if (args.flags.HasFlag(MoveSplineFlagEnum.UnlimitedSpeed))
return float.MaxValue;
if (args.flags.HasFlag(SplineFlag.Falling) || args.flags.HasFlag(SplineFlag.Catmullrom) || args.flags.HasFlag(SplineFlag.Flying) || args.flags.HasFlag(SplineFlag.Parabolic))
if (args.flags.HasFlag(MoveSplineFlagEnum.Falling) || args.flags.HasFlag(MoveSplineFlagEnum.Catmullrom) || args.flags.HasFlag(MoveSplineFlagEnum.Flying) || args.flags.HasFlag(MoveSplineFlagEnum.Parabolic))
return 50.0f;
return Math.Max(28.0f, unit.GetSpeed(UnitMoveType.Run) * 4.0f);
@@ -176,7 +176,7 @@ namespace Game.Movement
loc.W = unit.GetOrientation();
}
args.flags.Flags = SplineFlag.Done;
args.flags.Flags = MoveSplineFlagEnum.Done;
unit.m_movementInfo.RemoveMovementFlag(MovementFlag.Forward);
move_spline.onTransport = transport;
move_spline.Initialize(args);
@@ -257,7 +257,7 @@ namespace Game.Movement
public void SetFall()
{
args.flags.EnableFalling();
args.flags.SetUnsetFlag(SplineFlag.FallingSlow, unit.HasUnitMovementFlag(MovementFlag.FallingSlow));
args.flags.SetUnsetFlag(MoveSplineFlagEnum.FallingSlow, unit.HasUnitMovementFlag(MovementFlag.FallingSlow));
}
public void SetFirstPointId(int pointId) { args.path_Idx_offset = pointId; }
@@ -268,23 +268,23 @@ namespace Game.Movement
public void SetSmooth() { args.flags.EnableCatmullRom(); }
public void SetUncompressed() { args.flags.SetUnsetFlag(SplineFlag.UncompressedPath); }
public void SetUncompressed() { args.flags.SetUnsetFlag(MoveSplineFlagEnum.UncompressedPath); }
public void SetCyclic() { args.flags.SetUnsetFlag(SplineFlag.Cyclic); }
public void SetCyclic() { args.flags.SetUnsetFlag(MoveSplineFlagEnum.Cyclic); }
public void SetVelocity(float vel) { args.velocity = vel; args.HasVelocity = true; }
void SetBackward() { args.flags.SetUnsetFlag(SplineFlag.Backward); }
void SetBackward() { args.flags.SetUnsetFlag(MoveSplineFlagEnum.Backward); }
public void SetTransportEnter() { args.flags.EnableTransportEnter(); }
public void SetTransportExit() { args.flags.EnableTransportExit(); }
public void SetOrientationFixed(bool enable) { args.flags.SetUnsetFlag(SplineFlag.OrientationFixed, enable); }
public void SetOrientationFixed(bool enable) { args.flags.SetUnsetFlag(MoveSplineFlagEnum.OrientationFixed, enable); }
public void SetSteering() { args.flags.EnableSteering(); }
public void SetUnlimitedSpeed() { args.flags.SetUnsetFlag(SplineFlag.UnlimitedSpeed, true); }
public void SetUnlimitedSpeed() { args.flags.SetUnsetFlag(MoveSplineFlagEnum.UnlimitedSpeed, true); }
public void MovebyPath(Vector3[] controls, int path_offset = 0)
{