aboutsummaryrefslogtreecommitdiff
path: root/src/game/Vehicle.cpp
diff options
context:
space:
mode:
authorsilver1ce <none@none>2010-01-16 11:43:47 +0200
committersilver1ce <none@none>2010-01-16 11:43:47 +0200
commit2c03836a7c82803059b1b477d568d47ca2849179 (patch)
tree22eb3a8be45e1a453498765949c54e8db70a5a71 /src/game/Vehicle.cpp
parentf7ed03458acc345554a2700eaa1810a6351f4263 (diff)
some changes into grid relocations, cleanup
player with incorrect coordinates wouldn't be added into map, fixed problem that sometimes grid not marked as active even with players inside --HG-- branch : trunk
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());