aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorNoName <322016+Faq@users.noreply.github.com>2020-02-28 20:03:52 +0200
committerGitHub <noreply@github.com>2020-02-28 19:03:52 +0100
commit40542f01e3fec0bff2c6e5eadbe20e58f19b0fd8 (patch)
tree49ed6cfbb454ec61babaec8e4862aec0b36578b5 /src/server/game/Entities
parent1a761aa8e7091b90a7449ac03d336693be675edd (diff)
Core/Movement: Implement MoveSplineFlag::Enter_Cycle (#24049)
by xvwyh #22448
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp22
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
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];