diff options
| author | NoName <322016+Faq@users.noreply.github.com> | 2020-02-28 20:03:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-28 19:03:52 +0100 |
| commit | 40542f01e3fec0bff2c6e5eadbe20e58f19b0fd8 (patch) | |
| tree | 49ed6cfbb454ec61babaec8e4862aec0b36578b5 /src/server/game/Entities/Unit | |
| parent | 1a761aa8e7091b90a7449ac03d336693be675edd (diff) | |
Core/Movement: Implement MoveSplineFlag::Enter_Cycle (#24049)
by xvwyh
#22448
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 22 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 193e4228cfc..7e3fd717190 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -42,6 +42,7 @@ #include "LootMgr.h" #include "MotionMaster.h" #include "MovementGenerator.h" +#include "MovementPacketBuilder.h" #include "MoveSpline.h" #include "MoveSplineInit.h" #include "ObjectAccessor.h" @@ -493,19 +494,28 @@ void Unit::UpdateSplineMovement(uint32 t_diff) movespline->updateState(t_diff); bool arrived = movespline->Finalized(); + if (movespline->isCyclic()) + { + m_splineSyncTimer.Update(t_diff); + if (m_splineSyncTimer.Passed()) + { + m_splineSyncTimer.Reset(5000); // Retail value, do not change + + WorldPacket data(SMSG_FLIGHT_SPLINE_SYNC, 4 + GetPackGUID().size()); + Movement::PacketBuilder::WriteSplineSync(*movespline, data); + data.appendPackGUID(GetGUID()); + SendMessageToSet(&data, true); + } + } + if (arrived) DisableSpline(); - m_movesplineTimer.Update(t_diff); - if (m_movesplineTimer.Passed() || arrived) - UpdateSplinePosition(); + UpdateSplinePosition(); } void Unit::UpdateSplinePosition() { - static uint32 const positionUpdateDelay = 400; - - m_movesplineTimer.Reset(positionUpdateDelay); Movement::Location loc = movespline->ComputePosition(); if (movespline->onTransport) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index fac7433ee89..73e5897322a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1792,7 +1792,7 @@ class TC_GAME_API Unit : public WorldObject uint32 m_state; // Even derived shouldn't modify uint32 m_lastManaUse; // msecs - TimeTrackerSmall m_movesplineTimer; + TimeTrackerSmall m_splineSyncTimer; DiminishingReturn m_Diminishing[DIMINISHING_MAX]; |
