aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-04-20 00:05:24 +0200
committerShauren <shauren.trinity@gmail.com>2024-04-20 00:05:24 +0200
commitcf4c3b5467fde04f53636443a7a8b392aa527cf5 (patch)
tree8eedf1c47bec3b97e9ee5f35a26cd684f0b2010f /src
parente1f43900d110e50a2021d605c61cfe7c436bcc54 (diff)
Core/Movement: Added functions to MoveSplineInit to enable steering flag
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Movement/Spline/MoveSplineFlag.h3
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.cpp2
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.h5
3 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h
index 3c364d94ae6..8c8d297763c 100644
--- a/src/server/game/Movement/Spline/MoveSplineFlag.h
+++ b/src/server/game/Movement/Spline/MoveSplineFlag.h
@@ -69,7 +69,7 @@ namespace Movement
Mask_No_Monster_Move = Done,
// Unused, not suported flags
Mask_Unused = No_Spline | Enter_Cycle | Frozen | Unknown_0x8 | Unknown_0x100 | Unknown_0x20000 | Unknown_0x40000
- | Unknown_0x800000 | Unknown_0x1000000 | FadeObject | Steering | UnlimitedSpeed | Unknown_0x40000000 | Unknown_0x80000000
+ | Unknown_0x800000 | Unknown_0x1000000 | FadeObject | UnlimitedSpeed | Unknown_0x40000000 | Unknown_0x80000000
};
inline uint32& raw() { return (uint32&)*this; }
@@ -101,6 +101,7 @@ namespace Movement
void EnableCatmullRom() { raw() = (raw() & ~SmoothGroundPath) | Catmullrom; }
void EnableTransportEnter() { raw() = (raw() & ~TransportExit) | TransportEnter; }
void EnableTransportExit() { raw() = (raw() & ~TransportEnter) | TransportExit; }
+ void EnableSteering() { raw() = (raw() & ~SmoothGroundPath) | Steering; }
bool unknown0x1 : 1;
bool unknown0x2 : 1;
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp
index 56d6951760c..2fb04440358 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.cpp
+++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp
@@ -204,8 +204,8 @@ namespace Movement
args.flags.canSwim = unit->CanSwim();
args.walk = unit->HasUnitMovementFlag(MOVEMENTFLAG_WALKING);
args.flags.flying = unit->HasUnitMovementFlag(MovementFlags(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_DISABLE_GRAVITY));
- args.flags.smoothGroundPath = true; // enabled by default, CatmullRom mode or client config "pathSmoothing" will disable this
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
}
MoveSplineInit::~MoveSplineInit() = default;
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h
index 8be00f741bb..02642e06846 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.h
+++ b/src/server/game/Movement/Spline/MoveSplineInit.h
@@ -147,6 +147,10 @@ namespace Movement
*/
void SetOrientationFixed(bool enable);
+ /* Enables avoiding minor obstacles clientside (might cause visual position on client to not be accurate with the serverside one). Disabled by default
+ */
+ void SetSteering();
+
/* Enables no-speed limit
* if not set, the speed will be limited by certain flags to 50.0f, and otherwise 28.0f
*/
@@ -182,6 +186,7 @@ namespace Movement
inline void MoveSplineInit::SetTransportEnter() { args.flags.EnableTransportEnter(); }
inline void MoveSplineInit::SetTransportExit() { args.flags.EnableTransportExit(); }
inline void MoveSplineInit::SetOrientationFixed(bool enable) { args.flags.orientationFixed = enable; }
+ inline void MoveSplineInit::SetSteering() { args.flags.EnableSteering(); }
inline void MoveSplineInit::SetUnlimitedSpeed() { args.flags.unlimitedSpeed = true; }
inline void MoveSplineInit::SetParabolic(float amplitude, float time_shift)