diff options
| author | Machiavelli <machiavelli.trinity@gmail.com> | 2012-04-08 12:17:43 +0200 |
|---|---|---|
| committer | Machiavelli <machiavelli.trinity@gmail.com> | 2012-04-08 17:03:44 +0200 |
| commit | e636531da3603c10a9ebcb8a55d52d6cdb3a400a (patch) | |
| tree | 2b9ec4c8c5db8c8fee18f4b4deb1fb942ec07068 /src/server/game/Entities/Unit | |
| parent | 1922314858dee5be395a3eb2307e37cda8e094f2 (diff) | |
Core/Movement: Fix pushback issues and client freeze.
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 19 | ||||
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 3 |
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, |
