aboutsummaryrefslogtreecommitdiff
path: root/src/game/Vehicle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Vehicle.cpp')
-rw-r--r--src/game/Vehicle.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/game/Vehicle.cpp b/src/game/Vehicle.cpp
index a4a09389552..d7ad2d31baa 100644
--- a/src/game/Vehicle.cpp
+++ b/src/game/Vehicle.cpp
@@ -376,6 +376,30 @@ void Vehicle::RemovePassenger(Unit *unit)
//CastSpell(this, 45472, true); // Parachute
}
+void Vehicle::RelocatePassengers(float x, float y, float z, float ang)
+{
+ Map *map = me->GetMap();
+ assert(map != NULL);
+
+ // not sure that absolute position calculation is correct, it must depend on vehicle orientation and pitch angle
+ for (SeatMap::const_iterator itr = m_Seats.begin(); itr != m_Seats.end(); ++itr)
+ if (Unit *passenger = itr->second.passenger)
+ {
+ if (passenger->GetTypeId() == TYPEID_PLAYER)
+ map->PlayerRelocation((Player*)passenger,
+ x + passenger->m_movementInfo.t_x,
+ y + passenger->m_movementInfo.t_y,
+ z + passenger->m_movementInfo.t_z,
+ ang + passenger->m_movementInfo.t_o);
+ else
+ map->CreatureRelocation((Creature*)passenger,
+ x + passenger->m_movementInfo.t_x,
+ y + passenger->m_movementInfo.t_y,
+ z + passenger->m_movementInfo.t_z,
+ ang + passenger->m_movementInfo.t_o);
+ }
+}
+
void Vehicle::Dismiss()
{
sLog.outDebug("Vehicle::Dismiss %u", me->GetEntry());