diff options
author | Shauren <shauren.trinity@gmail.com> | 2013-06-04 14:52:38 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2013-06-04 14:52:38 +0200 |
commit | cbd69f12bd2a4dcee2a1c2a9184c97e24724903f (patch) | |
tree | 9712557013b4eb6cb1b5ea4217a3ff23fbf4a2e5 /src | |
parent | fae3015044bf36b648db64887c3f54934b1e2a70 (diff) |
Core/Movement: Refactored removing transport part of movement info structure into a separate method. Also corrects seat set after exiting vehicle
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.h | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 8 | ||||
-rwxr-xr-x | src/server/game/Entities/Vehicle/Vehicle.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Handlers/MovementHandler.cpp | 4 |
4 files changed, 13 insertions, 12 deletions
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 9acd3cc3026..ffbcd38049f 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -442,6 +442,15 @@ struct MovementInfo void SetFallTime(uint32 time) { fallTime = time; } + void ClearTransport() + { + t_guid = 0; + t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); + t_seat = -1; + t_time = 0; + t_time2 = 0; + } + void OutDebug(); }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7b183c508ae..ebd94b84079 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2116,9 +2116,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati { m_transport->RemovePassenger(this); m_transport = NULL; - m_movementInfo.t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); - m_movementInfo.t_time = 0; - m_movementInfo.t_seat = -1; + m_movementInfo.ClearTransport(); RepopAtGraveyard(); // teleport to near graveyard if on transport, looks blizz like :) } @@ -2144,9 +2142,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati { m_transport->RemovePassenger(this); m_transport = NULL; - m_movementInfo.t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); - m_movementInfo.t_time = 0; - m_movementInfo.t_seat = -1; + m_movementInfo.ClearTransport(); } } diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 6d7d3f2b2ff..86ea67c2d0f 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -519,9 +519,7 @@ void Vehicle::RemovePassenger(Unit* unit) if (_me->IsInWorld()) { unit->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); - unit->m_movementInfo.t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); - unit->m_movementInfo.t_time = 0; - unit->m_movementInfo.t_seat = 0; + unit->m_movementInfo.ClearTransport(); } // only for flyable vehicles diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index abb4b9310be..3270b19fd48 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -348,9 +348,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData) { plrMover->m_transport->RemovePassenger(plrMover); plrMover->m_transport = NULL; - movementInfo.t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); - movementInfo.t_time = 0; - movementInfo.t_seat = -1; + movementInfo.ClearTransport(); } // fall damage generation (ignore in flight case that can be triggered also at lags in moment teleportation to another map). |