diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/MovementInfo.h | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/MovementPackets.cpp | 7 |
4 files changed, 13 insertions, 6 deletions
diff --git a/src/server/game/Entities/Object/MovementInfo.h b/src/server/game/Entities/Object/MovementInfo.h index 7dcc695721e..97d10d86105 100644 --- a/src/server/game/Entities/Object/MovementInfo.h +++ b/src/server/game/Entities/Object/MovementInfo.h @@ -110,6 +110,12 @@ struct MovementInfo void OutDebug(); }; +enum class MovementForceType : uint8 +{ + SingleDirectional = 0, // always in a single direction + Gravity = 1 // pushes/pulls away from a single point +}; + struct MovementForce { ObjectGuid ID; @@ -117,7 +123,7 @@ struct MovementForce TaggedPosition<Position::XYZ> Direction; uint32 TransportID = 0; float Magnitude = 0.0f; - uint8 Type = 0; + MovementForceType Type = MovementForceType::SingleDirectional; int32 Unused910 = 0; }; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 296f5a445a1..c4a62aecb66 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12731,7 +12731,7 @@ void Unit::SendSetVehicleRecId(uint32 vehicleId) SendMessageToSet(setVehicleRec.Write(), true); } -void Unit::ApplyMovementForce(ObjectGuid id, Position origin, float magnitude, uint8 type, Position direction /*= {}*/, ObjectGuid transportGuid /*= ObjectGuid::Empty*/) +void Unit::ApplyMovementForce(ObjectGuid id, Position origin, float magnitude, MovementForceType type, Position direction /*= {}*/, ObjectGuid transportGuid /*= ObjectGuid::Empty*/) { if (!_movementForces) _movementForces = std::make_unique<MovementForces>(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 4bd10311718..1229461f673 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1219,7 +1219,7 @@ class TC_GAME_API Unit : public WorldObject void SendSetVehicleRecId(uint32 vehicleId); MovementForces const* GetMovementForces() const { return _movementForces.get(); } - void ApplyMovementForce(ObjectGuid id, Position origin, float magnitude, uint8 type, Position direction = {}, ObjectGuid transportGuid = ObjectGuid::Empty); + void ApplyMovementForce(ObjectGuid id, Position origin, float magnitude, MovementForceType type, Position direction = {}, ObjectGuid transportGuid = ObjectGuid::Empty); void RemoveMovementForce(ObjectGuid id); bool SetIgnoreMovementForces(bool ignore); void UpdateMovementForcesModMagnitude(); diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 7e2e142a630..c18c3ea5e1a 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -21,6 +21,7 @@ #include "MovementTypedefs.h" #include "PacketUtilities.h" #include "Unit.h" +#include "Util.h" ByteBuffer& operator<<(ByteBuffer& data, MovementInfo const& movementInfo) { @@ -438,7 +439,7 @@ void WorldPackets::Movement::CommonMovement::WriteMovementForceWithDirection(Mov { data << movementForce.ID; data << movementForce.Origin; - if (movementForce.Type == 1 && objectPosition) // gravity + if (movementForce.Type == MovementForceType::Gravity && objectPosition) { TaggedPosition<Position::XYZ> direction; if (movementForce.Magnitude != 0.0f) @@ -468,7 +469,7 @@ void WorldPackets::Movement::CommonMovement::WriteMovementForceWithDirection(Mov data << uint32(movementForce.TransportID); data << float(movementForce.Magnitude); - data.WriteBits(movementForce.Type, 2); + data.WriteBits(AsUnderlyingType(movementForce.Type), 2); data.WriteBit(movementForce.Unused910 != 0); data.FlushBits(); @@ -696,7 +697,7 @@ ByteBuffer& operator>>(ByteBuffer& data, MovementForce& movementForce) data >> movementForce.Direction; data >> movementForce.TransportID; data >> movementForce.Magnitude; - movementForce.Type = data.ReadBits(2); + movementForce.Type = MovementForceType(data.ReadBits(2)); bool has910 = data.ReadBit(); if (has910) data >> movementForce.Unused910; |