feat(Core/Movement): MotionMaster "Land" and "Take off" velocity speed is optional now (#3446)
This commit is contained in:
@@ -462,7 +462,7 @@ void MotionMaster::MoveSplinePath(Movement::PointsArray* path)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MotionMaster::MoveLand(uint32 id, Position const& pos, float speed)
|
void MotionMaster::MoveLand(uint32 id, Position const& pos, float speed /* = 0.0f*/)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
||||||
@@ -477,19 +477,24 @@ void MotionMaster::MoveLand(uint32 id, Position const& pos, float speed)
|
|||||||
|
|
||||||
Movement::MoveSplineInit init(_owner);
|
Movement::MoveSplineInit init(_owner);
|
||||||
init.MoveTo(x, y, z);
|
init.MoveTo(x, y, z);
|
||||||
init.SetVelocity(speed);
|
|
||||||
|
if (speed > 0.0f)
|
||||||
|
{
|
||||||
|
init.SetVelocity(speed);
|
||||||
|
}
|
||||||
|
|
||||||
init.SetAnimation(Movement::ToGround);
|
init.SetAnimation(Movement::ToGround);
|
||||||
init.Launch();
|
init.Launch();
|
||||||
Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE);
|
Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MotionMaster::MoveLand(uint32 id, float x, float y, float z, float speed)
|
void MotionMaster::MoveLand(uint32 id, float x, float y, float z, float speed /* = 0.0f*/)
|
||||||
{
|
{
|
||||||
Position pos = {x, y, z, 0.0f};
|
Position pos = {x, y, z, 0.0f};
|
||||||
MoveLand(id, pos, speed);
|
MoveLand(id, pos, speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MotionMaster::MoveTakeoff(uint32 id, Position const& pos, float speed)
|
void MotionMaster::MoveTakeoff(uint32 id, Position const& pos, float speed /* = 0.0f*/)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
||||||
@@ -504,13 +509,18 @@ void MotionMaster::MoveTakeoff(uint32 id, Position const& pos, float speed)
|
|||||||
|
|
||||||
Movement::MoveSplineInit init(_owner);
|
Movement::MoveSplineInit init(_owner);
|
||||||
init.MoveTo(x, y, z);
|
init.MoveTo(x, y, z);
|
||||||
init.SetVelocity(speed);
|
|
||||||
|
if (speed > 0.0f)
|
||||||
|
{
|
||||||
|
init.SetVelocity(speed);
|
||||||
|
}
|
||||||
|
|
||||||
init.SetAnimation(Movement::ToFly);
|
init.SetAnimation(Movement::ToFly);
|
||||||
init.Launch();
|
init.Launch();
|
||||||
Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE);
|
Mutate(new EffectMovementGenerator(id), MOTION_SLOT_ACTIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MotionMaster::MoveTakeoff(uint32 id, float x, float y, float z, float speed)
|
void MotionMaster::MoveTakeoff(uint32 id, float x, float y, float z, float speed /* = 0.0f*/)
|
||||||
{
|
{
|
||||||
Position pos = {x, y, z, 0.0f};
|
Position pos = {x, y, z, 0.0f};
|
||||||
MoveTakeoff(id, pos, speed);
|
MoveTakeoff(id, pos, speed);
|
||||||
|
|||||||
@@ -202,10 +202,10 @@ public:
|
|||||||
void MoveSplinePath(Movement::PointsArray* path);
|
void MoveSplinePath(Movement::PointsArray* path);
|
||||||
|
|
||||||
// These two movement types should only be used with creatures having landing/takeoff animations
|
// These two movement types should only be used with creatures having landing/takeoff animations
|
||||||
void MoveLand(uint32 id, Position const& pos, float speed);
|
void MoveLand(uint32 id, Position const& pos, float speed = 0.0f);
|
||||||
void MoveLand(uint32 id, float x, float y, float z, float speed); // pussywizard: added for easy calling by passing 3 floats x, y, z
|
void MoveLand(uint32 id, float x, float y, float z, float speed = 0.0f); // pussywizard: added for easy calling by passing 3 floats x, y, z
|
||||||
void MoveTakeoff(uint32 id, Position const& pos, float speed);
|
void MoveTakeoff(uint32 id, Position const& pos, float speed = 0.0f);
|
||||||
void MoveTakeoff(uint32 id, float x, float y, float z, float speed); // pussywizard: added for easy calling by passing 3 floats x, y, z
|
void MoveTakeoff(uint32 id, float x, float y, float z, float speed = 0.0f); // pussywizard: added for easy calling by passing 3 floats x, y, z
|
||||||
|
|
||||||
void MoveCharge(float x, float y, float z, float speed = SPEED_CHARGE, uint32 id = EVENT_CHARGE, const Movement::PointsArray* path = nullptr, bool generatePath = false, float orientation = 0.0f);
|
void MoveCharge(float x, float y, float z, float speed = SPEED_CHARGE, uint32 id = EVENT_CHARGE, const Movement::PointsArray* path = nullptr, bool generatePath = false, float orientation = 0.0f);
|
||||||
void MoveKnockbackFrom(float srcX, float srcY, float speedXY, float speedZ);
|
void MoveKnockbackFrom(float srcX, float srcY, float speedXY, float speedZ);
|
||||||
|
|||||||
Reference in New Issue
Block a user