aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-03-03 20:26:45 +0100
committerShauren <shauren.trinity@gmail.com>2017-03-03 20:26:45 +0100
commit16698e5b25f295236692363d1f2466d9e71f9f15 (patch)
tree4384ce7aa445a50c34d21d0059a900bf8be7489e /src
parent660a46e20adc6a3bca35219012e29c49b3b469e3 (diff)
Core/Movement: Defined many unknown MovementFlags2
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp8
-rw-r--r--src/server/game/Entities/Unit/Unit.h42
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.cpp1
-rw-r--r--src/server/game/Movement/Spline/MovementTypedefs.h2
-rw-r--r--src/server/game/Movement/Spline/MovementUtil.cpp47
6 files changed, 52 insertions, 50 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index f80f132ca0a..75af771b6c5 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1494,7 +1494,7 @@ void MovementInfo::OutDebug()
TC_LOG_DEBUG("misc", "position: `%s`", transport.pos.ToString().c_str());
TC_LOG_DEBUG("misc", "seat: %i", transport.seat);
TC_LOG_DEBUG("misc", "time: %u", transport.time);
- if (flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT)
+ if (transport.prevTime)
TC_LOG_DEBUG("misc", "prevTime: %u", transport.prevTime);
if (transport.vehicleId)
TC_LOG_DEBUG("misc", "vehicleId: %u", transport.vehicleId);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 6ea885e8d78..3485b7c4add 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -15661,15 +15661,15 @@ bool Unit::SetCanTurnWhileFalling(bool enable)
return true;
}
-bool Unit::SetDoubleJump(bool enable)
+bool Unit::SetCanDoubleJump(bool enable)
{
- if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP))
+ if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_DOUBLE_JUMP))
return false;
if (enable)
- AddExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP);
+ AddExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_DOUBLE_JUMP);
else
- RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_DOUBLE_JUMP);
+ RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_CAN_DOUBLE_JUMP);
static OpcodeServer const doubleJumpOpcodeTable[2] =
{
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 0337939cdbe..a6f622d8eed 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -829,8 +829,7 @@ enum MovementFlags
MOVEMENTFLAG_MASK_MOVING =
MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD | MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT |
- MOVEMENTFLAG_FALLING | MOVEMENTFLAG_FALLING_FAR | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING |
- MOVEMENTFLAG_SPLINE_ELEVATION,
+ MOVEMENTFLAG_FALLING | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING,
MOVEMENTFLAG_MASK_TURNING =
MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT | MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN,
@@ -855,24 +854,25 @@ enum MovementFlags
enum MovementFlags2
{
- MOVEMENTFLAG2_NONE = 0x00000000,
- MOVEMENTFLAG2_NO_STRAFE = 0x00000001,
- MOVEMENTFLAG2_NO_JUMPING = 0x00000002,
- MOVEMENTFLAG2_FULL_SPEED_TURNING = 0x00000004,
- MOVEMENTFLAG2_FULL_SPEED_PITCHING = 0x00000008,
- MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING = 0x00000010,
- MOVEMENTFLAG2_UNK5 = 0x00000020,
- MOVEMENTFLAG2_UNK6 = 0x00000040,
- MOVEMENTFLAG2_UNK7 = 0x00000080,
- MOVEMENTFLAG2_UNK8 = 0x00000100,
- MOVEMENTFLAG2_UNK9 = 0x00000200,
- MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS = 0x00000400,
- MOVEMENTFLAG2_UNK11 = 0x00000800,
- MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING = 0x00001000,
- MOVEMENTFLAG2_INTERPOLATED_MOVEMENT = 0x00002000,
- MOVEMENTFLAG2_INTERPOLATED_TURNING = 0x00004000,
- MOVEMENTFLAG2_INTERPOLATED_PITCHING = 0x00008000,
- MOVEMENTFLAG2_DOUBLE_JUMP = 0x00010000
+ MOVEMENTFLAG2_NONE = 0x00000000,
+ MOVEMENTFLAG2_NO_STRAFE = 0x00000001,
+ MOVEMENTFLAG2_NO_JUMPING = 0x00000002,
+ MOVEMENTFLAG2_FULL_SPEED_TURNING = 0x00000004,
+ MOVEMENTFLAG2_FULL_SPEED_PITCHING = 0x00000008,
+ MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING = 0x00000010,
+ MOVEMENTFLAG2_IS_VEHICLE_EXIT_VOLUNTARY = 0x00000020,
+ MOVEMENTFLAG2_JUMP_SPLINE_IN_AIR = 0x00000040,
+ MOVEMENTFLAG2_ANIM_TIER_IN_TRANS = 0x00000080,
+ MOVEMENTFLAG2_WATERWALKING_FULL_PITCH = 0x00000100, // will always waterwalk, even if facing the camera directly down
+ MOVEMENTFLAG2_VEHICLE_PASSENGER_IS_TRANSITION_ALLOWED = 0x00000200,
+ MOVEMENTFLAG2_CAN_SWIM_TO_FLY_TRANS = 0x00000400,
+ MOVEMENTFLAG2_UNK11 = 0x00000800, // terrain normal calculation is disabled if this flag is not present, client automatically handles setting this flag
+ MOVEMENTFLAG2_CAN_TURN_WHILE_FALLING = 0x00001000,
+ MOVEMENTFLAG2_UNK13 = 0x00002000, // set automatically by the client for aura 373
+ MOVEMENTFLAG2_IGNORE_MOVEMENT_FORCES = 0x00004000,
+ MOVEMENTFLAG2_UNK15 = 0x00008000,
+ MOVEMENTFLAG2_CAN_DOUBLE_JUMP = 0x00010000,
+ MOVEMENTFLAG2_DOUBLE_JUMP = 0x00020000
};
enum UnitTypeMask
@@ -1707,7 +1707,7 @@ class TC_GAME_API Unit : public WorldObject
bool SetCollision(bool disable);
bool SetCanTransitionBetweenSwimAndFly(bool enable);
bool SetCanTurnWhileFalling(bool enable);
- bool SetDoubleJump(bool enable);
+ bool SetCanDoubleJump(bool enable);
void SendSetVehicleRecId(uint32 vehicleId);
void SetInFront(WorldObject const* target);
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp
index 9dfea155053..db8d00856b7 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.cpp
+++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp
@@ -186,6 +186,7 @@ namespace Movement
args.walk = unit->HasUnitMovementFlag(MOVEMENTFLAG_WALKING);
args.flags.flying = unit->HasUnitMovementFlag(MovementFlags(MOVEMENTFLAG_CAN_FLY | MOVEMENTFLAG_DISABLE_GRAVITY));
args.flags.smoothGroundPath = true; // enabled by default, CatmullRom mode or client config "pathSmoothing" will disable this
+ args.flags.steering = unit->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_STEERING);
}
void MoveSplineInit::SetFacing(const Unit* target)
diff --git a/src/server/game/Movement/Spline/MovementTypedefs.h b/src/server/game/Movement/Spline/MovementTypedefs.h
index 56d8842e700..82777116678 100644
--- a/src/server/game/Movement/Spline/MovementTypedefs.h
+++ b/src/server/game/Movement/Spline/MovementTypedefs.h
@@ -77,7 +77,7 @@ namespace Movement
typedef counter<uint32, 0xFFFFFFFF> UInt32Counter;
- TC_GAME_API extern float gravity;
+ float constexpr gravity = static_cast<float>(19.29110527038574);
TC_GAME_API extern UInt32Counter splineIdGen;
TC_GAME_API extern std::string MovementFlags_ToString(uint32 flags);
TC_GAME_API extern std::string MovementFlagsExtra_ToString(uint32 flags);
diff --git a/src/server/game/Movement/Spline/MovementUtil.cpp b/src/server/game/Movement/Spline/MovementUtil.cpp
index 050d6cd61e0..4d5340acdca 100644
--- a/src/server/game/Movement/Spline/MovementUtil.cpp
+++ b/src/server/game/Movement/Spline/MovementUtil.cpp
@@ -20,17 +20,16 @@
namespace Movement
{
- float gravity = static_cast<float>(19.29110527038574);
UInt32Counter splineIdGen;
/// Velocity bounds that makes fall speed limited
- float terminalVelocity = 60.148003f;
- float terminalSafefallVelocity = 7.0f;
+ float constexpr terminalVelocity = 60.148003f;
+ float constexpr terminalSafefallVelocity = 7.0f;
- const float terminal_length = float(terminalVelocity * terminalVelocity) / (2.0f * gravity);
- const float terminal_safeFall_length = (terminalSafefallVelocity * terminalSafefallVelocity) / (2.0f * gravity);
- const float terminal_fallTime = float(terminalVelocity / gravity); // the time that needed to reach terminalVelocity
- const float terminal_safeFall_fallTime = float(terminalSafefallVelocity / gravity); // the time that needed to reach terminalVelocity with safefall
+ float constexpr terminal_length = float(terminalVelocity * terminalVelocity) / (2.0f * gravity);
+ float constexpr terminal_safeFall_length = (terminalSafefallVelocity * terminalSafefallVelocity) / (2.0f * gravity);
+ float constexpr terminal_fallTime = float(terminalVelocity / gravity); // the time that needed to reach terminalVelocity
+ float constexpr terminal_safeFall_fallTime = float(terminalSafefallVelocity / gravity); // the time that needed to reach terminalVelocity with safefall
float computeFallTime(float path_length, bool isSafeFall)
{
@@ -121,22 +120,24 @@ namespace Movement
char const* MovementFlagExtraNames[] =
{
- STRINGIZE(NoStrafe ),
- STRINGIZE(NoJump ),
- STRINGIZE(FullSpeedTurning ),
- STRINGIZE(FullSpeedPitching ),
- STRINGIZE(Allow_Pitching ),
- STRINGIZE(Unk6 ),
- STRINGIZE(Unk7 ),
- STRINGIZE(Unk8 ),
- STRINGIZE(Unk9 ),
- STRINGIZE(Unk10 ),
- STRINGIZE(Unk11 ),
- STRINGIZE(Unk12 ),
- STRINGIZE(Unk13 ),
- STRINGIZE(Interpolated_Movement),
- STRINGIZE(Interpolated_Turning ),
- STRINGIZE(Interpolated_Pitching),
+ STRINGIZE(NoStrafe ), // 0x00000001
+ STRINGIZE(NoJump ), // 0x00000002
+ STRINGIZE(FullSpeedTurning ), // 0x00000004
+ STRINGIZE(FullSpeedPitching ), // 0x00000008
+ STRINGIZE(Allow_Pitching ), // 0x00000010
+ STRINGIZE(VehicleExitVoluntary ), // 0x00000020
+ STRINGIZE(JumpSplineInAir ), // 0x00000040
+ STRINGIZE(AnimTierInTrans ), // 0x00000080
+ STRINGIZE(WaterwalkingFullPitch ), // 0x00000100
+ STRINGIZE(VehiclePassengerIsTransitionAllowed), // 0x00000200
+ STRINGIZE(CanSwimToFlyTrans ), // 0x00000400
+ STRINGIZE(Unk11 ), // 0x00000800
+ STRINGIZE(CanTurnWhileFalling ), // 0x00001000
+ STRINGIZE(Unkt13 ), // 0x00002000
+ STRINGIZE(IgnoreMovementForces ), // 0x00004000
+ STRINGIZE(Unk15 ), // 0x00008000
+ STRINGIZE(CanDoubleJump ), // 0x00010000
+ STRINGIZE(DoubleJump ), // 0x00020000
};
char const* SplineFlagNames[32] =