fix(Core/Movement): Rename walkmode flag to proper name canswim and resolve issues (#24410)

This commit is contained in:
killerwife
2026-01-16 22:02:07 +01:00
committed by GitHub
parent 57bea39e0d
commit 4bc5466435
7 changed files with 9 additions and 9 deletions
@@ -436,7 +436,7 @@ static Optional<float> GetVelocity(Unit* owner, Unit* target, G3D::Vector3 const
(owner->IsPet() || owner->IsGuardian() || owner->GetGUID() == target->GetCritterGUID() || owner->GetCharmerOrOwnerGUID() == target->GetGUID())) (owner->IsPet() || owner->IsGuardian() || owner->GetGUID() == target->GetCritterGUID() || owner->GetCharmerOrOwnerGUID() == target->GetGUID()))
{ {
uint32 moveFlags = target->GetUnitMovementFlags(); uint32 moveFlags = target->GetUnitMovementFlags();
if (target->movespline->isWalking()) if (target->IsWalking())
{ {
moveFlags |= MOVEMENTFLAG_WALKING; moveFlags |= MOVEMENTFLAG_WALKING;
} }
@@ -635,7 +635,7 @@ bool FollowMovementGenerator<T>::DoUpdate(T* owner, uint32 time_diff)
Movement::MoveSplineInit init(owner); Movement::MoveSplineInit init(owner);
init.MovebyPath(i_path->GetPath()); init.MovebyPath(i_path->GetPath());
if (_inheritWalkState) if (_inheritWalkState)
init.SetWalk(target->IsWalking() || target->movespline->isWalking()); init.SetWalk(target->IsWalking());
if (_inheritSpeed) if (_inheritSpeed)
if (Optional<float> velocity = GetVelocity(owner, target, i_path->GetActualEndPosition(), owner->IsGuardian())) if (Optional<float> velocity = GetVelocity(owner, target, i_path->GetActualEndPosition(), owner->IsGuardian()))
@@ -116,7 +116,6 @@ namespace Movement
[[nodiscard]] bool Finalized() const { return splineflags.done; } [[nodiscard]] bool Finalized() const { return splineflags.done; }
[[nodiscard]] bool isCyclic() const { return splineflags.cyclic; } [[nodiscard]] bool isCyclic() const { return splineflags.cyclic; }
[[nodiscard]] bool isFalling() const { return splineflags.falling; } [[nodiscard]] bool isFalling() const { return splineflags.falling; }
[[nodiscard]] bool isWalking() const { return splineflags.walkmode; }
[[nodiscard]] bool isBoarding() const { return splineflags.transportEnter || splineflags.transportExit; } [[nodiscard]] bool isBoarding() const { return splineflags.transportEnter || splineflags.transportExit; }
[[nodiscard]] Vector3 FinalDestination() const { return Initialized() ? spline.getPoint(spline.last()) : Vector3(); } [[nodiscard]] Vector3 FinalDestination() const { return Initialized() ? spline.getPoint(spline.last()) : Vector3(); }
[[nodiscard]] Vector3 CurrentDestination() const { return Initialized() ? spline.getPoint(point_Idx + 1) : Vector3(); } [[nodiscard]] Vector3 CurrentDestination() const { return Initialized() ? spline.getPoint(point_Idx + 1) : Vector3(); }
@@ -40,7 +40,7 @@ namespace Movement
Falling = 0x00000200, // Affects elevation computation, can't be combined with Parabolic flag Falling = 0x00000200, // Affects elevation computation, can't be combined with Parabolic flag
No_Spline = 0x00000400, No_Spline = 0x00000400,
Parabolic = 0x00000800, // Affects elevation computation, can't be combined with Falling flag Parabolic = 0x00000800, // Affects elevation computation, can't be combined with Falling flag
Walkmode = 0x00001000, CanSwim = 0x00001000,
Flying = 0x00002000, // Smooth movement(Catmullrom interpolation mode), flying animation Flying = 0x00002000, // Smooth movement(Catmullrom interpolation mode), flying animation
OrientationFixed = 0x00004000, // Model orientation fixed OrientationFixed = 0x00004000, // Model orientation fixed
Final_Point = 0x00008000, Final_Point = 0x00008000,
@@ -117,7 +117,7 @@ namespace Movement
bool falling : 1; bool falling : 1;
bool no_spline : 1; bool no_spline : 1;
bool parabolic : 1; bool parabolic : 1;
bool walkmode : 1; bool canSwim : 1;
bool flying : 1; bool flying : 1;
bool orientationFixed : 1; bool orientationFixed : 1;
bool final_point : 1; bool final_point : 1;
@@ -118,7 +118,7 @@ namespace Movement
// If spline is initialized with SetWalk method it only means we need to select // If spline is initialized with SetWalk method it only means we need to select
// walk move speed for it but not add walk flag to unit // walk move speed for it but not add walk flag to unit
uint32 moveFlagsForSpeed = moveFlags; uint32 moveFlagsForSpeed = moveFlags;
if (args.flags.walkmode) if (args.walk)
moveFlagsForSpeed |= MOVEMENTFLAG_WALKING; moveFlagsForSpeed |= MOVEMENTFLAG_WALKING;
else else
moveFlagsForSpeed &= ~MOVEMENTFLAG_WALKING; moveFlagsForSpeed &= ~MOVEMENTFLAG_WALKING;
@@ -199,7 +199,7 @@ namespace Movement
args.splineId = splineIdGen.NewId(); args.splineId = splineIdGen.NewId();
args.TransformForTransport = unit->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && unit->GetTransGUID(); args.TransformForTransport = unit->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && unit->GetTransGUID();
// mix existing state into new // mix existing state into new
args.flags.walkmode = unit->m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALKING); args.walk = unit->m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALKING);
args.flags.flying = unit->m_movementInfo.HasMovementFlag((MovementFlags)(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_DISABLE_GRAVITY)); args.flags.flying = unit->m_movementInfo.HasMovementFlag((MovementFlags)(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_DISABLE_GRAVITY));
} }
@@ -154,7 +154,7 @@ namespace Movement
}; };
inline void MoveSplineInit::SetFly() { args.flags.EnableFlying(); } inline void MoveSplineInit::SetFly() { args.flags.EnableFlying(); }
inline void MoveSplineInit::SetWalk(bool enable) { args.flags.walkmode = enable; } inline void MoveSplineInit::SetWalk(bool enable) { args.walk = enable; }
inline void MoveSplineInit::SetSmooth() { args.flags.EnableCatmullRom(); } inline void MoveSplineInit::SetSmooth() { args.flags.EnableCatmullRom(); }
inline void MoveSplineInit::SetCyclic() { args.flags.cyclic = true; } inline void MoveSplineInit::SetCyclic() { args.flags.cyclic = true; }
inline void MoveSplineInit::SetFall() { args.flags.EnableFalling(); } inline void MoveSplineInit::SetFall() { args.flags.EnableFalling(); }
@@ -59,6 +59,7 @@ namespace Movement
float initialOrientation{0.f}; float initialOrientation{0.f};
bool HasVelocity{false}; bool HasVelocity{false};
bool TransformForTransport{true}; bool TransformForTransport{true};
bool walk;
/** Returns true to show that the arguments were configured correctly and MoveSpline initialization will succeed. */ /** Returns true to show that the arguments were configured correctly and MoveSpline initialization will succeed. */
bool Validate(Unit* unit) const; bool Validate(Unit* unit) const;
@@ -153,7 +153,7 @@ namespace Movement
STR(Falling ), // 0x00000200, // Not Compartible With Trajectory Movement STR(Falling ), // 0x00000200, // Not Compartible With Trajectory Movement
STR(No_Spline ), // 0x00000400, STR(No_Spline ), // 0x00000400,
STR(Trajectory ), // 0x00000800, // Not Compartible With Fall Movement STR(Trajectory ), // 0x00000800, // Not Compartible With Fall Movement
STR(Walkmode ), // 0x00001000, STR(CanSwim ), // 0x00001000,
STR(Flying ), // 0x00002000, // Smooth Movement(Catmullrom Interpolation Mode), Flying Animation STR(Flying ), // 0x00002000, // Smooth Movement(Catmullrom Interpolation Mode), Flying Animation
STR(Knockback ), // 0x00004000, // Model Orientation Fixed STR(Knockback ), // 0x00004000, // Model Orientation Fixed
STR(Final_Point ), // 0x00008000, STR(Final_Point ), // 0x00008000,