Rebase resync

This commit is contained in:
Antz 2020-02-17 09:19:44 +00:00
parent a0797532e8
commit 1997c1e903
3106 changed files with 11118 additions and 627576 deletions

View file

@ -136,6 +136,25 @@ void TransportBase::CalculateGlobalPositionOf(float lx, float ly, float lz, floa
go = NormalizeOrientation(lo + m_owner->GetOrientation());
}
// Helper function to check if a unit is boarded onto this transporter (or a transporter boarded onto this) recursively
bool TransportBase::HasOnBoard(WorldObject const* passenger) const
{
MANGOS_ASSERT(passenger);
// For efficiency we go down from the (possible) passenger until we reached our owner, or until we reached no passenger
// Note, this will not catch, if self and passenger are boarded onto the same transporter (as it should not)
while (passenger->IsBoarded())
{
// pasenger is boarded onto this
if (passenger->GetTransportInfo()->GetTransport() == m_owner)
return true;
else
passenger = passenger->GetTransportInfo()->GetTransport();
}
return false;
}
void TransportBase::BoardPassenger(WorldObject* passenger, float lx, float ly, float lz, float lo, uint8 seat)
{
TransportInfo* transportInfo = new TransportInfo(passenger, this, lx, ly, lz, lo, seat);
@ -149,7 +168,7 @@ void TransportBase::BoardPassenger(WorldObject* passenger, float lx, float ly, f
void TransportBase::UnBoardPassenger(WorldObject* passenger)
{
PassengerMap::const_iterator itr = m_passengers.find(passenger);
PassengerMap::iterator itr = m_passengers.find(passenger);
if (itr == m_passengers.end())
return;