aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-06-04 14:52:38 +0200
committerShauren <shauren.trinity@gmail.com>2013-06-04 14:52:38 +0200
commitcbd69f12bd2a4dcee2a1c2a9184c97e24724903f (patch)
tree9712557013b4eb6cb1b5ea4217a3ff23fbf4a2e5 /src
parentfae3015044bf36b648db64887c3f54934b1e2a70 (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.h9
-rw-r--r--src/server/game/Entities/Player/Player.cpp8
-rwxr-xr-xsrc/server/game/Entities/Vehicle/Vehicle.cpp4
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp4
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).