aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/MovementInfo.h8
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
-rw-r--r--src/server/game/Server/Packets/MovementPackets.cpp7
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;