diff options
| author | Rat <gmstreetrat@gmail.com> | 2011-11-27 16:06:29 +0100 |
|---|---|---|
| committer | Rat <gmstreetrat@gmail.com> | 2011-11-27 16:06:29 +0100 |
| commit | 7fdefceb4389eaf7ee6a4ae34a73b861bbcdea5c (patch) | |
| tree | 78c6bab4e2603d27d29a5d72c04872c708de2970 /src/server/game/Entities/Unit | |
| parent | 8eac7e3fdc3c1bb1f319cc53c3b0f858f17b3901 (diff) | |
Core/Packets: updated update_object structure
Welcome ingame!
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index be095d05e1f..a2bf6947734 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -156,7 +156,7 @@ m_vehicleKit(NULL), m_unitTypeMask(UNIT_MASK_NONE), m_HostileRefManager(this) m_objectType |= TYPEMASK_UNIT; m_objectTypeId = TYPEID_UNIT; - m_updateFlag = (UPDATEFLAG_HIGHGUID | UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION); + m_updateFlag = (UPDATEFLAG_LIVING | UPDATEFLAG_HAS_POSITION); m_attackTimer[BASE_ATTACK] = 0; m_attackTimer[OFF_ATTACK] = 0; @@ -17141,13 +17141,30 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const (*data).writeBits(GetUnitMovementFlags(), 30); (*data).writeBits(m_movementInfo.flags2, 12); + + if (data->writeBit(GetUnitMovementFlags() & MOVEMENTFLAG_ONTRANSPORT)) + { + data->writeBit(m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT); + data->writeBit(0); // Flag for time3 + } + + data->writeBit((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING)); + + if (data->writeBit(m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_TURNING)) + data->writeBit(GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING); + + data->writeBit(GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE_ELEVATION); + + // has spline data + data->writeBit(0); + + *data << uint64(GetGUID()); // added in 4.2.0 *data << uint32(getMSTime()); // time *data << GetPositionX(); *data << GetPositionY(); *data << GetPositionZ(); *data << GetOrientation(); - // 0x00000200 if (GetUnitMovementFlags() & MOVEMENTFLAG_ONTRANSPORT) { if (m_vehicle) @@ -17161,27 +17178,29 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const *data << float (GetTransOffsetY()); *data << float (GetTransOffsetZ()); *data << float (GetTransOffsetO()); - *data << uint32(GetTransTime()); *data << uint8 (GetTransSeat()); + *data << uint32(GetTransTime()); + + if (m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT) + *data << uint32(m_movementInfo.t_time2); } - // 0x02200000 - if ((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) - || (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING)) + if ((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (m_movementInfo.flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING)) *data << (float)m_movementInfo.pitch; - *data << (uint32)m_movementInfo.fallTime; - - // 0x00001000 - if (GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING) + if (m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_TURNING) { + *data << (uint32)m_movementInfo.fallTime; *data << (float)m_movementInfo.j_zspeed; - *data << (float)m_movementInfo.j_sinAngle; - *data << (float)m_movementInfo.j_cosAngle; - *data << (float)m_movementInfo.j_xyspeed; + + if (GetUnitMovementFlags() & MOVEMENTFLAG_JUMPING) + { + *data << (float)m_movementInfo.j_sinAngle; + *data << (float)m_movementInfo.j_cosAngle; + *data << (float)m_movementInfo.j_xyspeed; + } } - // 0x04000000 if (GetUnitMovementFlags() & MOVEMENTFLAG_SPLINE_ELEVATION) *data << (float)m_movementInfo.splineElevation; } |
