aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp4
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp1
-rw-r--r--src/server/game/Movement/Spline/MoveSplineFlag.h2
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.h19
-rw-r--r--src/server/game/Movement/Spline/MovementPacketBuilder.cpp16
5 files changed, 25 insertions, 17 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 8bbf682edad..4360decca2b 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -13269,9 +13269,7 @@ void Unit::StopMoving()
return;
Movement::MoveSplineInit init(this);
- init.MoveTo(GetPositionX(), GetPositionY(), GetPositionZMinusOffset(), false);
- init.SetFacing(GetOrientation());
- init.Launch();
+ init.Stop();
}
bool Unit::IsSitState() const
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
index 32ec2ac3cfe..56621c8aac5 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -238,6 +238,7 @@ void FlightPathMovementGenerator::DoReset(Player* player)
init.SetFirstPointId(GetCurrentNode());
init.SetFly();
init.SetSmooth();
+ init.SetUncompressed();
init.SetWalk(true);
init.SetVelocity(PLAYER_FLIGHT_SPEED);
init.Launch();
diff --git a/src/server/game/Movement/Spline/MoveSplineFlag.h b/src/server/game/Movement/Spline/MoveSplineFlag.h
index b94283caeed..08e73c0344b 100644
--- a/src/server/game/Movement/Spline/MoveSplineFlag.h
+++ b/src/server/game/Movement/Spline/MoveSplineFlag.h
@@ -105,7 +105,7 @@ namespace Movement
void EnableAnimation(uint8 anim) { raw() = (raw() & ~(Mask_Animations | Falling | Parabolic | FallingSlow)) | Animation | (anim & Mask_Animations); }
void EnableParabolic() { raw() = (raw() & ~(Mask_Animations | Falling | Animation | FallingSlow)) | Parabolic; }
void EnableFalling() { raw() = (raw() & ~(Mask_Animations | Parabolic | Animation)) | Falling; }
- void EnableCatmullRom() { raw() = (raw() & ~SmoothGroundPath) | Catmullrom | UncompressedPath; }
+ void EnableCatmullRom() { raw() = (raw() & ~SmoothGroundPath) | Catmullrom; }
void EnableFacingPoint() { raw() = (raw() & ~Mask_Final_Facing) | Final_Point; }
void EnableFacingAngle() { raw() = (raw() & ~Mask_Final_Facing) | Final_Angle; }
void EnableFacingTarget() { raw() = (raw() & ~Mask_Final_Facing) | Final_Target; }
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h
index 79e0f085d44..1eaf1011a2c 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.h
+++ b/src/server/game/Movement/Spline/MoveSplineInit.h
@@ -102,31 +102,39 @@ namespace Movement
* if not enabled linear spline mode will be choosen. Disabled by default
*/
void SetSmooth();
- /* Enables CatmullRom spline interpolation mode, enables flying animation. Disabled by default
+
+ /* Waypoints in packets will be sent without compression
+ */
+ void SetUncompressed();
+
+ /* Enables flying animation. Disabled by default
*/
void SetFly();
+
/* Enables walk mode. Disabled by default
*/
- void EnableTaxiFlight();
- /* Flags used in taxi
- */
-
void SetWalk(bool enable);
+
/* Makes movement cyclic. Disabled by default
*/
void SetCyclic();
+
/* Enables falling mode. Disabled by default
*/
void SetFall();
+
/* Enters transport. Disabled by default
*/
void SetTransportEnter();
+
/* Exits transport. Disabled by default
*/
void SetTransportExit();
+
/* Inverses unit model orientation. Disabled by default
*/
void SetOrientationInversed();
+
/* Fixes unit's model rotation. Disabled by default
*/
void SetOrientationFixed(bool enable);
@@ -152,6 +160,7 @@ namespace Movement
inline void MoveSplineInit::SetFly() { args.flags.flying = true; }
inline void MoveSplineInit::SetWalk(bool enable) { args.flags.walkmode = enable; }
inline void MoveSplineInit::SetSmooth() { args.flags.EnableCatmullRom(); }
+ inline void MoveSplineInit::SetUncompressed() { args.flags.uncompressedPath = true; }
inline void MoveSplineInit::SetCyclic() { args.flags.cyclic = true; }
inline void MoveSplineInit::SetVelocity(float vel) { args.velocity = vel; args.HasVelocity = true; }
inline void MoveSplineInit::SetOrientationInversed() { args.flags.orientationInversed = true;}
diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp
index eb3d45bb0ec..3376021b494 100644
--- a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp
+++ b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp
@@ -97,10 +97,10 @@ namespace Movement
data << uint8(MonsterMoveStop);
}
- void WriteLinearPath(const Spline<int32>& spline, ByteBuffer& data)
+ void WriteLinearPath(Spline<int32> const& spline, ByteBuffer& data)
{
uint32 last_idx = spline.getPointCount() - 3;
- const Vector3 * real_path = &spline.getPoint(1);
+ Vector3 const* real_path = &spline.getPoint(1);
data << last_idx;
data << real_path[last_idx]; // destination
@@ -117,14 +117,14 @@ namespace Movement
}
}
- void WriteCatmullRomPath(const Spline<int32>& spline, ByteBuffer& data)
+ void WriteUncompressedPath(Spline<int32> const& spline, ByteBuffer& data)
{
uint32 count = spline.getPointCount() - 3;
data << count;
data.append<Vector3>(&spline.getPoint(2), count);
}
- void WriteCatmullRomCyclicPath(const Spline<int32>& spline, ByteBuffer& data)
+ void WriteUncompressedCyclicPath(Spline<int32> const& spline, ByteBuffer& data)
{
uint32 count = spline.getPointCount() - 3;
data << uint32(count + 1);
@@ -136,14 +136,14 @@ namespace Movement
{
WriteCommonMonsterMovePart(move_spline, data);
- const Spline<int32>& spline = move_spline.spline;
+ Spline<int32> const& spline = move_spline.spline;
MoveSplineFlag splineflags = move_spline.splineflags;
if (splineflags & MoveSplineFlag::UncompressedPath)
{
- if (splineflags.cyclic)
- WriteCatmullRomCyclicPath(spline, data);
+ if (!splineflags.cyclic)
+ WriteUncompressedPath(spline, data);
else
- WriteCatmullRomPath(spline, data);
+ WriteUncompressedCyclicPath(spline, data);
}
else
WriteLinearPath(spline, data);