aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2012-04-08 12:17:43 +0200
committerMachiavelli <machiavelli.trinity@gmail.com>2012-04-08 17:03:44 +0200
commite636531da3603c10a9ebcb8a55d52d6cdb3a400a (patch)
tree2b9ec4c8c5db8c8fee18f4b4deb1fb942ec07068 /src/server/game/Entities/Unit
parent1922314858dee5be395a3eb2307e37cda8e094f2 (diff)
Core/Movement: Fix pushback issues and client freeze.
Diffstat (limited to 'src/server/game/Entities/Unit')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp19
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.h3
2 files changed, 17 insertions, 5 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index cf14bb02ed9..4f491c0ebe9 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -17598,26 +17598,35 @@ bool Unit::SetHover(bool enable)
void Unit::SendMovementHover()
{
+ if (GetTypeId() == TYPEID_PLAYER)
+ ToPlayer()->SendMovementSetHover(HasUnitMovementFlag(MOVEMENTFLAG_HOVER));
+
WorldPacket data(MSG_MOVE_HOVER, 64);
data.append(GetPackGUID());
BuildMovementPacket(&data);
- SendMessageToSet(&data, true);
+ SendMessageToSet(&data, false);
}
void Unit::SendMovementWaterWalking()
{
+ if (GetTypeId() == TYPEID_PLAYER)
+ ToPlayer()->SendMovementSetWaterWalking(HasUnitMovementFlag(MOVEMENTFLAG_WATERWALKING));
+
WorldPacket data(MSG_MOVE_WATER_WALK, 64);
data.append(GetPackGUID());
BuildMovementPacket(&data);
- SendMessageToSet(&data, true);
+ SendMessageToSet(&data, false);
}
void Unit::SendMovementFeatherFall()
{
+ if (GetTypeId() == TYPEID_PLAYER)
+ ToPlayer()->SendMovementSetFeatherFall(HasUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW));
+
WorldPacket data(MSG_MOVE_FEATHER_FALL, 64);
data.append(GetPackGUID());
BuildMovementPacket(&data);
- SendMessageToSet(&data, true);
+ SendMessageToSet(&data, false);
}
void Unit::SendMovementGravityChange()
@@ -17625,7 +17634,7 @@ void Unit::SendMovementGravityChange()
WorldPacket data(MSG_MOVE_GRAVITY_CHNG, 64);
data.append(GetPackGUID());
BuildMovementPacket(&data);
- SendMessageToSet(&data, true);
+ SendMessageToSet(&data, false);
}
void Unit::SendMovementCanFlyChange()
@@ -17650,5 +17659,5 @@ void Unit::SendMovementCanFlyChange()
WorldPacket data(MSG_MOVE_UPDATE_CAN_FLY, 64);
data.append(GetPackGUID());
BuildMovementPacket(&data);
- SendMessageToSet(&data, true);
+ SendMessageToSet(&data, false);
}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index fcbe1afa389..bb826c14dfc 100755
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -707,6 +707,9 @@ enum MovementFlags
MOVEMENTFLAG_MASK_TURNING =
MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT,
+ MOVEMENTFLAG_MASK_MOVING_FLY =
+ MOVEMENTFLAG_FLYING | MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING,
+
//! TODO if needed: add more flags to this masks that are exclusive to players
MOVEMENTFLAG_MASK_PLAYER_ONLY =
MOVEMENTFLAG_FLYING,