diff options
author | megamage <none@none> | 2009-04-21 15:43:03 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-04-21 15:43:03 -0500 |
commit | 06667c40dd0eb6858247b7fdfbd6156a46acd8b6 (patch) | |
tree | d441566a44b42e084cc413eda10768544731682e /src/game/Unit.cpp | |
parent | c25158f836c3fb50010edac8bdabb9bf78475fd2 (diff) |
*Fix some bugs about vehicle.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r-- | src/game/Unit.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 365e55cd22d..fbbfa3a2638 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -52,6 +52,7 @@ #include "Traveller.h" #include "TemporarySummon.h" #include "Vehicle.h" +#include "Transports.h" #include <math.h> @@ -13535,6 +13536,46 @@ void Unit::ExitVehicle() m_Vehicle = NULL; } +void Unit::BuildMovementPacket(ByteBuffer *data) const +{ + // 0x00000200 + if(GetUnitMovementFlags() & MOVEMENTFLAG_ONTRANSPORT) + { + if(m_Vehicle) + *data << (uint64)m_Vehicle->GetGUID(); + else if(GetTransport()) + *data << (uint64)GetTransport()->GetGUID(); + else + *data << (uint64)0; + *data << float (GetTransOffsetX()); + *data << float (GetTransOffsetY()); + *data << float (GetTransOffsetZ()); + *data << float (GetTransOffsetO()); + *data << uint32(GetTransTime()); + *data << uint8 (GetTransSeat()); + } + + // 0x02200000 + if((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING2)) + || (m_movementInfo.unk1 & 0x20)) + *data << (float)m_movementInfo.s_pitch; + + *data << (uint32)m_movementInfo.fallTime; + + // 0x00001000 + if(GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING) + { + *data << (float)m_movementInfo.j_unk; + *data << (float)m_movementInfo.j_sinAngle; + *data << (float)m_movementInfo.j_cosAngle; + *data << (float)m_movementInfo.j_xyspeed; + } + + // 0x04000000 + if(GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE) + *data << (float)m_movementInfo.u_unk1; +} + void Unit::NearTeleportTo( float x, float y, float z, float orientation, bool casting /*= false*/ ) { if(GetTypeId() == TYPEID_PLAYER) |