fix(Core/Movement): followers match their target's motion speed (#25085)
Co-authored-by: killerwife <killerwife@gmail.com>
This commit is contained in:
@@ -995,6 +995,30 @@ std::string Object::GetDebugInfo() const
|
||||
return sstr.str();
|
||||
}
|
||||
|
||||
UnitMoveType MovementInfo::GetSpeedType(uint32 moveFlags)
|
||||
{
|
||||
if (moveFlags & MOVEMENTFLAG_FLYING)
|
||||
{
|
||||
if (moveFlags & MOVEMENTFLAG_BACKWARD)
|
||||
return MOVE_FLIGHT_BACK;
|
||||
|
||||
return MOVE_FLIGHT;
|
||||
}
|
||||
else if (moveFlags & MOVEMENTFLAG_SWIMMING)
|
||||
{
|
||||
if (moveFlags & MOVEMENTFLAG_BACKWARD)
|
||||
return MOVE_SWIM_BACK;
|
||||
|
||||
return MOVE_SWIM;
|
||||
}
|
||||
else if (moveFlags & MOVEMENTFLAG_WALKING)
|
||||
return MOVE_WALK;
|
||||
else if (moveFlags & MOVEMENTFLAG_BACKWARD)
|
||||
return MOVE_RUN_BACK;
|
||||
|
||||
return MOVE_RUN;
|
||||
}
|
||||
|
||||
void MovementInfo::OutDebug()
|
||||
{
|
||||
LOG_INFO("movement", "MOVEMENT INFO");
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "ObjectGuid.h"
|
||||
#include "Optional.h"
|
||||
#include "Position.h"
|
||||
#include "UnitDefines.h"
|
||||
#include "UpdateData.h"
|
||||
#include "UpdateMask.h"
|
||||
#include "ObjectVisibilityContainer.h"
|
||||
@@ -344,6 +345,9 @@ struct MovementInfo
|
||||
void RemoveMovementFlag(uint32 flag) { flags &= ~flag; }
|
||||
[[nodiscard]] bool HasMovementFlag(uint32 flag) const { return flags & flag; }
|
||||
|
||||
[[nodiscard]] UnitMoveType GetSpeedType() const { return GetSpeedType(flags); }
|
||||
[[nodiscard]] static UnitMoveType GetSpeedType(uint32 moveFlags);
|
||||
|
||||
[[nodiscard]] uint16 GetExtraMovementFlags() const { return flags2; }
|
||||
void AddExtraMovementFlag(uint16 flag) { flags2 |= flag; }
|
||||
[[nodiscard]] bool HasExtraMovementFlag(uint16 flag) const { return flags2 & flag; }
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef ACORE_UNITDEFINES_H
|
||||
#define ACORE_UNITDEFINES_H
|
||||
|
||||
#include "Define.h"
|
||||
#include "EnumFlag.h"
|
||||
|
||||
@@ -487,3 +490,5 @@ enum SplineType
|
||||
SPLINETYPE_FACING_TARGET = 3,
|
||||
SPLINETYPE_FACING_ANGLE = 4
|
||||
};
|
||||
|
||||
#endif // ACORE_UNITDEFINES_H
|
||||
|
||||
Reference in New Issue
Block a user