aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-04-23 11:11:32 +0200
committerShauren <shauren.trinity@gmail.com>2024-04-23 11:11:32 +0200
commit3af5cafec782ab4d5d5d8478927caae0e6258174 (patch)
treed4b55d005633788a750efbf1dc296eb9a4a6f0f8 /src
parenta02804fa0246851436bb195d8d06d991de523bb0 (diff)
Core/Movement: Change default spline flags - Steering replaces SmoothGroundPath
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp5
-rw-r--r--src/server/game/Movement/Spline/MoveSplineFlag.h2
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.cpp4
3 files changed, 4 insertions, 7 deletions
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
index 7f98b77d83a..7b86af01cbf 100644
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -517,10 +517,6 @@ void WaypointMovementGenerator<Creature>::StartMove(Creature* owner, bool relaun
Movement::MoveSplineInit init(owner);
- // because steering flag can cause position on client to not be perfectly accurate, dont do it in combat
- if (!owner->IsInCombat())
- init.SetSteering();
-
//! If creature is on transport, we assume waypoints set in DB are already transport offsets
if (transportPath)
init.DisableTransportPathTransformations();
@@ -576,6 +572,7 @@ void WaypointMovementGenerator<Creature>::StartMove(Creature* owner, bool relaun
if (!IsExactSplinePath()
&& duration > 2 * SEND_NEXT_POINT_EARLY_DELTA
&& !lastWaypointForSegment->Delay
+ && path->Nodes.size() > 2
// don't cut movement short at ends of path if its not a looping path or if it can be traversed backwards
&& ((_currentNode != 0 && _currentNode != path->Nodes.size() - 1) || (!IsFollowingPathBackwardsFromEndToStart() && _repeating)))
duration -= SEND_NEXT_POINT_EARLY_DELTA;
diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h
index 0434657df25..b44ac9d0adc 100644
--- a/src/server/game/Movement/Spline/MoveSplineFlag.h
+++ b/src/server/game/Movement/Spline/MoveSplineFlag.h
@@ -66,7 +66,7 @@ namespace Movement
Mask_No_Monster_Move = Done, // SKIP
// Unused, not suported flags
Mask_Unused = No_Spline | Enter_Cycle | Frozen | Unknown_0x8 | Unknown_0x100 | Unknown_0x20000 | Unknown_0x40000
- | Unknown_0x800000 | FastSteering | FadeObject | UnlimitedSpeed | Unknown_0x40000000 | Unknown_0x80000000 // SKIP
+ | Unknown_0x800000 | FadeObject | UnlimitedSpeed | Unknown_0x40000000 | Unknown_0x80000000 // SKIP
};
DEFINE_ENUM_FLAG(MoveSplineFlagEnum);
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp
index decaf4fb4b8..6601e4d45a7 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.cpp
+++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp
@@ -204,8 +204,8 @@ namespace Movement
args.walk = unit->HasUnitMovementFlag(MOVEMENTFLAG_WALKING);
args.flags.CanSwim = unit->CanSwim();
args.flags.Flying = unit->HasUnitMovementFlag(MovementFlags(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_DISABLE_GRAVITY));
- args.flags.Steering = unit->HasNpcFlag2(UNIT_NPC_FLAG_2_STEERING);
- args.flags.SmoothGroundPath = !args.flags.Flying && !args.flags.Steering; // enabled by default, CatmullRom mode or client config "pathSmoothing" will disable this
+ args.flags.FastSteering = true;
+ args.flags.Steering = unit->HasNpcFlag2(UNIT_NPC_FLAG_2_STEERING) || !unit->IsInCombat();
}
MoveSplineInit::~MoveSplineInit() = default;