From 84df2c57a385df4503fc1f8ff5dfdf445ea2e31f Mon Sep 17 00:00:00 2001 From: ccrs Date: Sun, 9 Apr 2017 14:13:29 +0200 Subject: Core/Movement: FormationMovementGenerator Use own movement generator for creatures following on a formation. First step of implementation, huge room for improvement. Closes #19422 (cherry picked from commit 46221b6dc1272989e0de85a4563fc49dba8e7851) --- src/server/game/Movement/MotionMaster.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/server/game/Movement/MotionMaster.cpp') diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index b124edb22d1..3b446733bbb 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -30,6 +30,7 @@ #include "WaypointMovementGenerator.h" #include "RandomMovementGenerator.h" #include "SplineChainMovementGenerator.h" +#include "FormationMovementGenerator.h" #include "MoveSpline.h" #include "MoveSplineInit.h" #include "PathGenerator.h" @@ -711,6 +712,15 @@ void MotionMaster::MoveRotate(uint32 time, RotateDirection direction) Mutate(new RotateMovementGenerator(time, direction), MOTION_SLOT_ACTIVE); } +void MotionMaster::MoveFormation(uint32 id, Position destination, uint32 moveType, bool forceRun /*= false*/, bool forceOrientation /*= false*/) +{ + if (_owner->GetTypeId() == TYPEID_UNIT) + { + TC_LOG_DEBUG("misc", "MotionMaster::MoveFormation: Creature (Entry: %u %s) targeted point (Id: %u X: %f Y: %f Z: %f).", _owner->GetEntry(), _owner->GetGUID().ToString().c_str(), id, destination.GetPositionX(), destination.GetPositionY(), destination.GetPositionZ()); + Mutate(new FormationMovementGenerator(id, destination, moveType, forceRun, forceOrientation), MOTION_SLOT_ACTIVE); + } +} + /******************** Private methods ********************/ void MotionMaster::pop() -- cgit v1.2.3