From f2ee7412bc83b799640afcd184d90f055fb7a618 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Tue, 31 Mar 2020 16:56:37 +0200 Subject: [PATCH] Core/Movement: implement a helper to get the velocity of a unit's ongoing spline --- src/server/game/Movement/Spline/MoveSpline.cpp | 8 +++++--- src/server/game/Movement/Spline/MoveSpline.h | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp index 243e76d9c5d..503e8c86291 100644 --- a/src/server/game/Movement/Spline/MoveSpline.cpp +++ b/src/server/game/Movement/Spline/MoveSpline.cpp @@ -162,6 +162,8 @@ void MoveSpline::Initialize(MoveSplineInitArgs const& args) vertical_acceleration = 0.f; effect_start_time = 0; + velocity = args.velocity; + // Check if its a stop spline if (args.flags.done) { @@ -185,15 +187,15 @@ void MoveSpline::Initialize(MoveSplineInitArgs const& args) } MoveSpline::MoveSpline() : m_Id(0), time_passed(0), - vertical_acceleration(0.f), initialOrientation(0.f), effect_start_time(0), point_Idx(0), point_Idx_offset(0), + vertical_acceleration(0.f), initialOrientation(0.f), effect_start_time(0), point_Idx(0), point_Idx_offset(0), velocity(0.f), onTransport(false) { splineflags.done = true; } MoveSplineInitArgs::MoveSplineInitArgs(size_t path_capacity /*= 16*/) : path_Idx_offset(0), velocity(0.f), -parabolic_amplitude(0.f), time_perc(0.f), splineId(0), initialOrientation(0.f), -HasVelocity(false), TransformForTransport(true) + parabolic_amplitude(0.f), time_perc(0.f), splineId(0), initialOrientation(0.f), walk(false), + HasVelocity(false), TransformForTransport(true) { path.reserve(path_capacity); } diff --git a/src/server/game/Movement/Spline/MoveSpline.h b/src/server/game/Movement/Spline/MoveSpline.h index e016b1c6ebc..8776cfa5296 100644 --- a/src/server/game/Movement/Spline/MoveSpline.h +++ b/src/server/game/Movement/Spline/MoveSpline.h @@ -68,6 +68,7 @@ namespace Movement int32 effect_start_time; int32 point_Idx; int32 point_Idx_offset; + float velocity; void init_spline(MoveSplineInitArgs const& args); @@ -86,6 +87,7 @@ namespace Movement int32 Duration() const { return spline.length(); } MySpline const& _Spline() const { return spline; } int32 _currentSplineIdx() const { return point_Idx; } + float Velocity() const { return velocity; } void _Finalize(); void _Interrupt() { splineflags.done = true; }