diff options
Diffstat (limited to 'src/server/game')
4 files changed, 12 insertions, 9 deletions
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index 0f8ac3c2cc4..0bbfbc46910 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -272,7 +272,7 @@ namespace Movement args.facing.type = MONSTER_MOVE_FACING_ANGLE; } - void MoveSplineInit::MovebyPath(PointsArray const& path, int32 pointId) + void MoveSplineInit::MovebyPath(std::span<Vector3 const> path, int32 pointId) { args.path_Idx_offset = pointId; args.path.resize(path.size()); diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index 2461fc1b5d3..8902b4ae943 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -19,6 +19,7 @@ #define TRINITYSERVER_MOVESPLINEINIT_H #include "MoveSplineInitArgs.h" +#include <span> #include <variant> class ObjectGuid; @@ -82,7 +83,7 @@ namespace Movement * @param path - array of points, shouldn't be empty * @param pointId - Id of fisrt point of the path. Example: when third path point will be done it will notify that pointId + 3 done */ - void MovebyPath(PointsArray const& path, int32 pointId = 0); + void MovebyPath(std::span<Vector3 const> path, int32 pointId = 0); /* Initializes simple A to B motion, A is current unit's position, B is destination */ @@ -190,6 +191,7 @@ namespace Movement args.parabolic_amplitude = amplitude; args.vertical_acceleration = 0.0f; args.flags.Parabolic = true; + args.animTier.reset(); } inline void MoveSplineInit::SetParabolicVerticalAcceleration(float vertical_acceleration, int32 start_point) @@ -198,16 +200,17 @@ namespace Movement args.parabolic_amplitude = 0.0f; args.vertical_acceleration = vertical_acceleration; args.flags.Parabolic = true; + args.animTier.reset(); } inline void MoveSplineInit::SetAnimation(AnimTier anim, uint32 tierTransitionId /*= 0*/, int32 transitionStartPoint /*= 0*/) { args.effect_start_point = transitionStartPoint; - args.animTier.emplace(); - args.animTier->TierTransitionId = tierTransitionId; - args.animTier->AnimTier = anim; - if (!tierTransitionId) - args.flags.Animation = true; + AnimTierTransition& animTier = args.animTier.emplace(); + animTier.TierTransitionId = tierTransitionId; + animTier.AnimTier = anim; + args.flags.Raw &= ~args.flags.Animation.DisallowedFlag; + args.flags.Animation = tierTransitionId == 0; } inline void MoveSplineInit::DisableTransportPathTransformations() { args.TransformForTransport = false; } diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 07ff6f59274..c07b91f2997 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -320,7 +320,7 @@ ByteBuffer& operator<<(ByteBuffer& data, MonsterSplineAnimTierTransition const& data << int32(animTierTransition.TierTransitionID); data << uint8(animTierTransition.AnimTier); data << uint32(animTierTransition.StartTime); - data << uint32(animTierTransition.EndTime); + data << uint32(animTierTransition.ExtraDuration); return data; } diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 8ad8b641cf5..9f9cd70ccf4 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -101,7 +101,7 @@ namespace WorldPackets { int32 TierTransitionID = 0; uint32 StartTime = 0; - uint32 EndTime = 0; + uint32 ExtraDuration = 0; ///< Duration of the transition (unit does not move during this time) uint8 AnimTier = 0; }; |
