@@ -202,18 +202,6 @@ MovementGeneratorType MotionMaster::GetCurrentMovementGeneratorType() const
202202 return movement->GetMovementGeneratorType ();
203203}
204204
205- MovementGeneratorPriority MotionMaster::GetCurrentMovementGeneratorPriority () const
206- {
207- if (Empty ())
208- return MOTION_PRIORITY_NONE ;
209-
210- MovementGenerator const * movement = GetCurrentMovementGenerator ();
211- if (!movement)
212- return MOTION_PRIORITY_NONE ;
213-
214- return MovementGeneratorPriority (movement->Priority );
215- }
216-
217205MovementGeneratorType MotionMaster::GetCurrentMovementGeneratorType (MovementSlot slot) const
218206{
219207 if (Empty () || IsInvalidMovementSlot (slot))
@@ -1045,47 +1033,35 @@ void MotionMaster::MoveFormation(Unit* leader, float range, float angle, uint32
10451033 }
10461034}
10471035
1048- void MotionMaster::MoveFace (WorldObject const * object, uint32 id/* = EVENT_FACE*/ )
1036+ void MotionMaster::MoveFace (WorldObject const * object, uint32 id /* = EVENT_FACE*/ )
10491037{
1050- if (!object || GetCurrentMovementGeneratorPriority () == MOTION_PRIORITY_HIGHEST )
1038+ if (!object)
10511039 return ;
10521040
1053- TC_LOG_DEBUG (" movement.motionmaster" , " MotionMaster::MoveFace: '{}', faces '{}'" , _owner->GetGUID (). ToString () , object->GetGUID (). ToString ());
1041+ TC_LOG_DEBUG (" movement.motionmaster" , " MotionMaster::MoveFace: '{}', faces '{}'" , _owner->GetGUID (), object->GetGUID ());
10541042
1055- std::function<void (Movement::MoveSplineInit&)> initializer = [=, this ](Movement::MoveSplineInit& init)
1043+ std::function<void (Movement::MoveSplineInit&)> initializer = [owner = _owner, object ](Movement::MoveSplineInit& init)
10561044 {
1057- init.MoveTo (_owner->GetPositionX (), _owner->GetPositionY (), _owner->GetPositionZ (), false );
1058- if (object)
1059- init.SetFacing (_owner->GetAbsoluteAngle (object)); // when on transport, GetAbsoluteAngle will still return global coordinates (and angle) that needs transforming
1045+ init.MoveTo (owner->GetPositionX (), owner->GetPositionY (), owner->GetPositionZ (), false );
1046+ init.SetFacing (owner->GetAbsoluteAngle (object)); // when on transport, GetAbsoluteAngle will still return global coordinates (and angle) that needs transforming
10601047 };
10611048
1062- GenericMovementGenerator* movement = new GenericMovementGenerator (std::move (initializer), FACE_MOTION_TYPE , id);
1063- movement->Priority = MOTION_PRIORITY_NORMAL ;
1064- movement->Mode = MOTION_MODE_OVERRIDE ;
1065- movement->BaseUnitState = UNIT_STATE_FACING ;
1066- Add (movement);
1049+ Add (new ImmediateMovementGenerator (std::move (initializer), FACE_MOTION_TYPE , id));
10671050}
10681051
1069- void MotionMaster::MoveFace (float const orientation, uint32 id/* = EVENT_FACE*/ )
1052+ void MotionMaster::MoveFace (float orientation, uint32 id /* = EVENT_FACE*/ )
10701053{
1071- if (GetCurrentMovementGeneratorPriority () == MOTION_PRIORITY_HIGHEST )
1072- return ;
1054+ TC_LOG_DEBUG (" movement.motionmaster" , " MotionMaster::MoveFace: '{}', faces '{}'" , _owner->GetGUID (), orientation);
10731055
1074- TC_LOG_DEBUG (" movement.motionmaster" , " MotionMaster::MoveFace: '{}', faces '{}'" , _owner->GetGUID ().ToString (), orientation);
1075-
1076- std::function<void (Movement::MoveSplineInit&)> initializer = [=, this ](Movement::MoveSplineInit& init)
1056+ std::function<void (Movement::MoveSplineInit&)> initializer = [owner = _owner, orientation](Movement::MoveSplineInit& init)
10771057 {
1078- init.MoveTo (_owner ->GetPositionX (), _owner ->GetPositionY (), _owner ->GetPositionZ (), false );
1079- if (_owner-> HasUnitMovementFlag ( MOVEMENTFLAG_ONTRANSPORT ) && !_owner-> GetTransGUID (). IsEmpty ())
1058+ init.MoveTo (owner ->GetPositionX (), owner ->GetPositionY (), owner ->GetPositionZ (), false );
1059+ if (owner-> GetTransport ())
10801060 init.DisableTransportPathTransformations (); // It makes no sense to target global orientation
10811061 init.SetFacing (orientation);
10821062 };
10831063
1084- GenericMovementGenerator* movement = new GenericMovementGenerator (std::move (initializer), FACE_MOTION_TYPE , id);
1085- movement->Priority = MOTION_PRIORITY_NORMAL ;
1086- movement->Mode = MOTION_MODE_OVERRIDE ;
1087- movement->BaseUnitState = UNIT_STATE_FACING ;
1088- Add (movement);
1064+ Add (new ImmediateMovementGenerator (std::move (initializer), FACE_MOTION_TYPE , id));
10891065}
10901066
10911067void MotionMaster::LaunchMoveSpline (std::function<void (Movement::MoveSplineInit& init)>&& initializer, uint32 id/* = 0*/ , MovementGeneratorPriority priority/* = MOTION_PRIORITY_NORMAL*/ , MovementGeneratorType type/* = EFFECT_MOTION_TYPE*/ )
0 commit comments