aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorNoName <322016+Faq@users.noreply.github.com>2020-02-28 20:03:52 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-22 14:33:58 +0100
commit61f3d51143b51b04169bd1c2ff0393d2b9be7c33 (patch)
tree2f785946aa0861ccb30181d839c4f2812ffd1996 /src/server/game/Entities/Unit
parent94f7d2fb49c9c9f1d2e7dc3a4fe2a368d830404f (diff)
Core/Movement: Implement MoveSplineFlag::Enter_Cycle (#24049)
by xvwyh (cherry picked from commit 40542f01e3fec0bff2c6e5eadbe20e58f19b0fd8)
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp21
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
2 files changed, 16 insertions, 7 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 333f2760a68..9a7bd88076d 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -517,19 +517,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
+
+ WorldPackets::Movement::FlightSplineSync flightSplineSync;
+ flightSplineSync.Guid = GetGUID();
+ flightSplineSync.SplineDist = movespline->timePassed() / movespline->Duration();
+ SendMessageToSet(flightSplineSync.Write(), 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 9a8d2108e3f..10a1108f6b9 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1975,7 +1975,7 @@ class TC_GAME_API Unit : public WorldObject
private:
uint32 m_state; // Even derived shouldn't modify
- TimeTrackerSmall m_movesplineTimer;
+ TimeTrackerSmall m_splineSyncTimer;
Diminishing m_Diminishing;