diff options
author | Shauren <shauren.trinity@gmail.com> | 2017-03-03 20:26:45 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2017-03-03 20:26:45 +0100 |
commit | 16698e5b25f295236692363d1f2466d9e71f9f15 (patch) | |
tree | 4384ce7aa445a50c34d21d0059a900bf8be7489e /src | |
parent | 660a46e20adc6a3bca35219012e29c49b3b469e3 (diff) |
Core/Movement: Defined many unknown MovementFlags2
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 42 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MoveSplineInit.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MovementTypedefs.h | 2 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MovementUtil.cpp | 47 |
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] = |