diff options
author | Shauren <shauren.trinity@gmail.com> | 2012-07-14 23:39:12 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2012-07-14 23:39:12 +0200 |
commit | 27ea130b55dd3d16092a3d58f2093b99abc0a46b (patch) | |
tree | dd6d8c1e0271bf24f849f5125726f5e4c0f8a6e0 | |
parent | 2d144e49254c39e2a8cbf20c5f93ff4d422b5ce1 (diff) |
Core/Movement
* Updated movement flags
* Cleaned up MovementStatusElements enum
* Updated and enabled MSG_MOVE_START_FORWARD
-rwxr-xr-x | src/server/game/Entities/Object/Object.cpp | 15 | ||||
-rwxr-xr-x | src/server/game/Entities/Object/Object.h | 4 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 5 | ||||
-rwxr-xr-x | src/server/game/Entities/Transport/Transport.cpp | 3 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 11 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.h | 43 | ||||
-rwxr-xr-x | src/server/game/Entities/Vehicle/Vehicle.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Handlers/MovementHandler.cpp | 707 | ||||
-rw-r--r-- | src/server/game/Movement/MovementStructures.h | 1860 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MoveSplineInit.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp | 16 |
15 files changed, 1399 insertions, 1285 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index d9d8c3c461a..6894928b551 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -47,6 +47,7 @@ #include "OutdoorPvPMgr.h" #include "MovementPacketBuilder.h" #include "DynamicTree.h" +#include "Unit.h" uint32 GuidHigh2TypeId(uint32 guid_hi) { @@ -331,13 +332,13 @@ void Object::_BuildMovementUpdate(ByteBuffer* data, uint16 flags) const data->WriteBit(0); data->WriteBit(!((movementFlags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (movementFlagsExtra & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING))); // Has pitch - data->WriteBit(movementFlags & MOVEMENTFLAG_SPLINE_ENABLED); // Has spline data + data->WriteBit(self->IsSplineEnabled()); // Has spline data data->WriteBit(movementFlagsExtra & MOVEMENTFLAG2_INTERPOLATED_TURNING);// Has fall data data->WriteBit(!(movementFlags & MOVEMENTFLAG_SPLINE_ELEVATION)); // Has spline elevation data->WriteBit(guid[5]); - data->WriteBit(movementFlags & MOVEMENTFLAG_ONTRANSPORT); // Has transport data + data->WriteBit(self->m_movementInfo.t_guid); // Has transport data data->WriteBit(0); // Is missing time - if (movementFlags & MOVEMENTFLAG_ONTRANSPORT) + if (self->m_movementInfo.t_guid) { ObjectGuid transGuid = self->m_movementInfo.t_guid; @@ -354,7 +355,7 @@ void Object::_BuildMovementUpdate(ByteBuffer* data, uint16 flags) const } data->WriteBit(guid[4]); - if (movementFlags & MOVEMENTFLAG_SPLINE_ENABLED) + if (self->IsSplineEnabled()) { data->WriteBit(1); // Has extended spline data Movement::PacketBuilder::WriteCreateBits(*self->movespline, *data); @@ -440,12 +441,12 @@ void Object::_BuildMovementUpdate(ByteBuffer* data, uint16 flags) const if (movementFlags & MOVEMENTFLAG_SPLINE_ELEVATION) *data << float(self->m_movementInfo.splineElevation); - if (movementFlags & MOVEMENTFLAG_SPLINE_ENABLED) + if (self->IsSplineEnabled()) Movement::PacketBuilder::WriteCreateData(*self->movespline, *data); *data << float(self->GetPositionZMinusOffset()); data->WriteByteSeq(guid[5]); - if (movementFlags & MOVEMENTFLAG_ONTRANSPORT) + if (self->m_movementInfo.t_guid) { ObjectGuid transGuid = self->m_movementInfo.t_guid; @@ -1298,7 +1299,7 @@ void MovementInfo::OutDebug() sLog->outString("flags2 %u", flags2); sLog->outString("time %u current time " UI64FMTD "", flags2, uint64(::time(NULL))); sLog->outString("position: `%s`", pos.ToString().c_str()); - if (flags & MOVEMENTFLAG_ONTRANSPORT) + if (t_guid) { sLog->outString("TRANSPORT:"); sLog->outString("guid: " UI64FMTD, t_guid); diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 01ad11ba2df..8e1677991f4 100755 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -529,16 +529,16 @@ struct MovementInfo // transport uint64 t_guid; Position t_pos; + int8 t_seat; uint32 t_time; uint32 t_time2; uint32 t_time3; - int8 t_seat; // swimming/flying float pitch; // falling uint32 fallTime; // jumping - float j_zspeed, j_sinAngle, j_cosAngle, j_xyspeed; + float j_zspeed, j_cosAngle, j_sinAngle, j_xyspeed; // spline float splineElevation; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e5df31734a4..88f2170fdfb 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2176,15 +2176,14 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati if (m_transport) { - if (options & TELE_TO_NOT_LEAVE_TRANSPORT) - AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); - else + if (!(options & TELE_TO_NOT_LEAVE_TRANSPORT)) { m_transport->RemovePassenger(this); m_transport = NULL; m_movementInfo.t_pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); m_movementInfo.t_time = 0; m_movementInfo.t_seat = -1; + m_movementInfo.t_guid = 0; } } diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index ef3e1331a4c..e44f67f128d 100755 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -642,8 +642,7 @@ uint32 Transport::AddNPCPassenger(uint32 tguid, uint32 entry, float x, float y, } creature->SetTransport(this); - creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); - creature->m_movementInfo.guid = GetGUID(); + creature->m_movementInfo.t_guid = GetGUID(); creature->m_movementInfo.t_pos.Relocate(x, y, z, o); if (anim) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 2435a403408..19a8ab32ac1 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -396,7 +396,7 @@ void Unit::UpdateSplineMovement(uint32 t_diff) m_movesplineTimer.Reset(POSITION_UPDATE_DELAY); Movement::Location loc = movespline->ComputePosition(); - if (HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + if (GetTransGUID()) { Position& pos = m_movementInfo.t_pos; pos.m_positionX = loc.x; @@ -420,7 +420,7 @@ void Unit::UpdateSplineMovement(uint32 t_diff) void Unit::DisableSpline() { - m_movementInfo.RemoveMovementFlag(MovementFlags(MOVEMENTFLAG_SPLINE_ENABLED|MOVEMENTFLAG_FORWARD)); + m_movementInfo.RemoveMovementFlag(MOVEMENTFLAG_FORWARD); movespline->_Interrupt(); } @@ -17644,7 +17644,7 @@ void Unit::BuildMovementPacket(ByteBuffer *data) const *data << GetPositionZMinusOffset(); *data << GetOrientation(); - bool onTransport = GetUnitMovementFlags() & MOVEMENTFLAG_ONTRANSPORT; + bool onTransport = m_movementInfo.t_guid != 0; bool hasInterpolatedMovement = m_movementInfo.flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT; bool time3 = false; bool swimming = ((GetUnitMovementFlags() & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) @@ -18180,3 +18180,8 @@ void Unit::SendMovementCanFlyChange() BuildMovementPacket(&data); SendMessageToSet(&data, false); } + +bool Unit::IsSplineEnabled() const +{ + return !movespline->Finalized(); +} diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 6d188fe3593..7471ae603f6 100755 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -675,28 +675,26 @@ enum MovementFlags MOVEMENTFLAG_PITCH_UP = 0x00000040, MOVEMENTFLAG_PITCH_DOWN = 0x00000080, MOVEMENTFLAG_WALKING = 0x00000100, // Walking - MOVEMENTFLAG_ONTRANSPORT = 0x00000200, // Used for flying on some creatures - MOVEMENTFLAG_DISABLE_GRAVITY = 0x00000400, // Former MOVEMENTFLAG_LEVITATING. This is used when walking is not possible. - MOVEMENTFLAG_ROOT = 0x00000800, // Must not be set along with MOVEMENTFLAG_MASK_MOVING - MOVEMENTFLAG_FALLING = 0x00001000, // damage dealt on that type of falling - MOVEMENTFLAG_FALLING_FAR = 0x00002000, - MOVEMENTFLAG_PENDING_STOP = 0x00004000, - MOVEMENTFLAG_PENDING_STRAFE_STOP = 0x00008000, - MOVEMENTFLAG_PENDING_FORWARD = 0x00010000, - MOVEMENTFLAG_PENDING_BACKWARD = 0x00020000, - MOVEMENTFLAG_PENDING_STRAFE_LEFT = 0x00040000, - MOVEMENTFLAG_PENDING_STRAFE_RIGHT = 0x00080000, - MOVEMENTFLAG_PENDING_ROOT = 0x00100000, - MOVEMENTFLAG_SWIMMING = 0x00200000, // appears with fly flag also - MOVEMENTFLAG_ASCENDING = 0x00400000, // press "space" when flying - MOVEMENTFLAG_DESCENDING = 0x00800000, - MOVEMENTFLAG_CAN_FLY = 0x01000000, // Appears when unit can fly AND also walk - MOVEMENTFLAG_FLYING = 0x02000000, // unit is actually flying. pretty sure this is only used for players. creatures use disable_gravity - MOVEMENTFLAG_SPLINE_ELEVATION = 0x04000000, // used for flight paths - MOVEMENTFLAG_SPLINE_ENABLED = 0x08000000, // used for flight paths - MOVEMENTFLAG_WATERWALKING = 0x10000000, // prevent unit from falling through water - MOVEMENTFLAG_FALLING_SLOW = 0x20000000, // active rogue safe fall spell (passive) - MOVEMENTFLAG_HOVER = 0x40000000, // hover, cannot jump + MOVEMENTFLAG_DISABLE_GRAVITY = 0x00000200, // Former MOVEMENTFLAG_LEVITATING. This is used when walking is not possible. + MOVEMENTFLAG_ROOT = 0x00000400, // Must not be set along with MOVEMENTFLAG_MASK_MOVING + MOVEMENTFLAG_FALLING = 0x00000800, // damage dealt on that type of falling + MOVEMENTFLAG_FALLING_FAR = 0x00001000, + MOVEMENTFLAG_PENDING_STOP = 0x00002000, + MOVEMENTFLAG_PENDING_STRAFE_STOP = 0x00004000, + MOVEMENTFLAG_PENDING_FORWARD = 0x00008000, + MOVEMENTFLAG_PENDING_BACKWARD = 0x00010000, + MOVEMENTFLAG_PENDING_STRAFE_LEFT = 0x00020000, + MOVEMENTFLAG_PENDING_STRAFE_RIGHT = 0x00040000, + MOVEMENTFLAG_PENDING_ROOT = 0x00080000, + MOVEMENTFLAG_SWIMMING = 0x00100000, // appears with fly flag also + MOVEMENTFLAG_ASCENDING = 0x00200000, // press "space" when flying + MOVEMENTFLAG_DESCENDING = 0x00400000, + MOVEMENTFLAG_CAN_FLY = 0x00800000, // Appears when unit can fly AND also walk + MOVEMENTFLAG_FLYING = 0x01000000, // unit is actually flying. pretty sure this is only used for players. creatures use disable_gravity + MOVEMENTFLAG_SPLINE_ELEVATION = 0x02000000, // used for flight paths + MOVEMENTFLAG_WATERWALKING = 0x04000000, // prevent unit from falling through water + MOVEMENTFLAG_FALLING_SLOW = 0x08000000, // active rogue safe fall spell (passive) + MOVEMENTFLAG_HOVER = 0x10000000, // hover, cannot jump // TODO: Check if PITCH_UP and PITCH_DOWN really belong here.. MOVEMENTFLAG_MASK_MOVING = @@ -2103,6 +2101,7 @@ class Unit : public WorldObject uint16 HasExtraUnitMovementFlag(uint16 f) const { return m_movementInfo.flags2 & f; } uint16 GetExtraUnitMovementFlags() const { return m_movementInfo.flags2; } void SetExtraUnitMovementFlags(uint16 f) { m_movementInfo.flags2 = f; } + bool IsSplineEnabled() const; float GetPositionZMinusOffset() const { diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index eb50f3fe229..3d36f6ccda5 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -342,7 +342,6 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId) if (seat->second.SeatInfo->m_flags && !(seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_ALLOW_TURNING)) unit->AddUnitState(UNIT_STATE_ONVEHICLE); - unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); VehicleSeatEntry const* veSeat = seat->second.SeatInfo; unit->m_movementInfo.t_pos.m_positionX = veSeat->m_attachmentOffsetX; unit->m_movementInfo.t_pos.m_positionY = veSeat->m_attachmentOffsetY; @@ -419,7 +418,6 @@ void Vehicle::RemovePassenger(Unit* unit) if (_me->IsInWorld()) { - unit->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT); unit->m_movementInfo.t_pos.Relocate(0, 0, 0, 0); unit->m_movementInfo.t_time = 0; unit->m_movementInfo.t_seat = 0; diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 57afc614545..df28e01d5c7 100755 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -277,7 +277,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) } /* handle special cases */ - if (movementInfo.flags & MOVEMENTFLAG_ONTRANSPORT) + if (movementInfo.t_guid) { // transports size limited // (also received at zeppelin leave by some reason with t_* as absolute in continent coordinates, can be safely skipped) @@ -339,7 +339,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) { GameObject* go = mover->GetMap()->GetGameObject(movementInfo.t_guid); if (!go || go->GetGoType() != GAMEOBJECT_TYPE_TRANSPORT) - movementInfo.flags &= ~MOVEMENTFLAG_ONTRANSPORT; + movementInfo.t_guid = 0; } } else if (plrMover && plrMover->GetTransport()) // if we were on a transport, leave @@ -595,167 +595,205 @@ void WorldSession::HandleSummonResponseOpcode(WorldPacket& recv_data) _player->SummonIfPossible(agree); } -void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi) +void WorldSession::ReadMovementInfo(WorldPacket& data, MovementInfo* mi) { - bool HaveTransportData = false, - HaveTransportTime2 = false, - HaveTransportTime3 = false, - HavePitch = false, - HaveFallData = false, - HaveFallDirection = false, - HaveSplineElevation = false, - HaveSpline = false; - - MovementStatusElements *sequence = GetMovementStatusElementsSequence(data.GetOpcode()); - if (sequence == NULL) - return; - - ObjectGuid guid; - ObjectGuid tguid; - - for (uint32 i = 0; i < MSE_COUNT; i++) - { - MovementStatusElements element = sequence[i]; - - if (element >= MSEGuidByte0 && element <= MSEGuidByte7) - { - guid[element - MSEGuidByte0] = data.ReadBit(); - continue; - } - - if (element >= MSETransportGuidByte0 && - element <= MSETransportGuidByte7) - { - if (HaveTransportData) - tguid[element - MSETransportGuidByte0] = data.ReadBit(); - continue; - } - - if (element >= MSEGuidByte0_2 && element <= MSEGuidByte7_2) - { - data.ReadByteSeq(guid[element - MSEGuidByte0_2]); - continue; - } - - if (element >= MSETransportGuidByte0_2 && - element <= MSETransportGuidByte7_2) - { - if (HaveTransportData) - data.ReadByteSeq(tguid[element - MSETransportGuidByte0_2]); - continue; - } - - switch (element) - { - case MSEFlags: - mi->flags = data.ReadBits(30); - break; - case MSEFlags2: - mi->flags2 = data.ReadBits(12); - break; - case MSETimestamp: - data >> mi->time; - break; - case MSEHavePitch: - HavePitch = data.ReadBit(); - break; - case MSEHaveFallData: - HaveFallData = data.ReadBit(); - break; - case MSEHaveFallDirection: - if (HaveFallData) - HaveFallDirection = data.ReadBit(); - break; - case MSEHaveTransportData: - HaveTransportData = data.ReadBit(); - break; - case MSETransportHaveTime2: - if (HaveTransportData) - HaveTransportTime2 = data.ReadBit(); - break; - case MSETransportHaveTime3: - if (HaveTransportData) - HaveTransportTime3 = data.ReadBit(); - break; - case MSEHaveSpline: - HaveSpline = data.ReadBit(); - break; - case MSEHaveSplineElev: - HaveSplineElevation = data.ReadBit(); - break; - case MSEPositionX: - data >> mi->pos.PositionXYZStream(); - break; - case MSEPositionY: - case MSEPositionZ: - break; // assume they always go as vector of 3 - case MSEPositionO: - data >> mi->pos.m_orientation; - break; - case MSEPitch: - if (HavePitch) - data >> mi->pitch; - break; - case MSEFallTime: - if (HaveFallData) - data >> mi->fallTime; - break; - case MSESplineElev: - if (HaveSplineElevation) - data >> mi->splineElevation; - break; - case MSEFallHorizontalSpeed: - if (HaveFallDirection) - data >> mi->j_xyspeed; - break; - case MSEFallVerticalSpeed: - if (HaveFallData) - data >> mi->j_zspeed; - break; - case MSEFallCosAngle: - if (HaveFallDirection) - data >> mi->j_cosAngle; - break; - case MSEFallSinAngle: - if (HaveFallDirection) - data >> mi->j_sinAngle; - break; - case MSETransportSeat: - if (HaveTransportData) - data >> mi->t_seat; - break; - case MSETransportPositionO: - if (HaveTransportData) - data >> mi->t_pos.m_orientation; - break; - case MSETransportPositionX: - if (HaveTransportData) - data >> mi->t_pos.PositionXYZStream(); - break; - case MSETransportPositionY: - case MSETransportPositionZ: - break; // assume they always go as vector of 3 - case MSETransportTime: - if (HaveTransportData) - data >> mi->t_time; - break; - case MSETransportTime2: - if (HaveTransportTime2) - data >> mi->t_time2; - break; - case MSETransportTime3: - if (HaveTransportTime3) - data >> mi->t_time3; - break; - default: - WPError(false, "Incorrect sequence element detected at ReadMovementInfo"); - } - } - - mi->guid = guid; - mi->t_guid = tguid; - - if (HaveTransportData && mi->pos.m_positionX != mi->t_pos.m_positionX) + bool hasMovementFlags = false; + bool hasMovementFlags2 = false; + bool hasTimestamp = false; + bool hasOrientation = false; + bool hasTransportData = false; + bool hasTransportTime2 = false; + bool hasTransportTime3 = false; + bool hasPitch = false; + bool hasFallData = false; + bool hasFallDirection = false; + bool hasSplineElevation = false; + bool hasSpline = false; + + MovementStatusElements* sequence = GetMovementStatusElementsSequence(data.GetOpcode()); + if (sequence == NULL) + { + sLog->outError("WorldSession::ReadMovementInfo: No movement sequence found for opcode 0x%04X", uint32(data.GetOpcode())); + return; + } + + ObjectGuid guid; + ObjectGuid tguid; + + for (uint32 i = 0; i < MSE_COUNT; ++i) + { + MovementStatusElements element = sequence[i]; + if (element == MSEEnd) + break; + + if (element >= MSEHasGuidByte0 && element <= MSEHasGuidByte7) + { + guid[element - MSEHasGuidByte0] = data.ReadBit(); + continue; + } + + if (element >= MSEHasTransportGuidByte0 && + element <= MSEHasTransportGuidByte7) + { + if (hasTransportData) + tguid[element - MSEHasTransportGuidByte0] = data.ReadBit(); + continue; + } + + if (element >= MSEGuidByte0 && element <= MSEGuidByte7) + { + data.ReadByteSeq(guid[element - MSEGuidByte0]); + continue; + } + + if (element >= MSETransportGuidByte0 && + element <= MSETransportGuidByte7) + { + if (hasTransportData) + data.ReadByteSeq(tguid[element - MSETransportGuidByte0]); + continue; + } + + switch (element) + { + case MSEHasMovementFlags: + hasMovementFlags = !data.ReadBit(); + break; + case MSEHasMovementFlags2: + hasMovementFlags2 = !data.ReadBit(); + break; + case MSEHasTimestamp: + hasTimestamp = !data.ReadBit(); + break; + case MSEHasOrientation: + hasOrientation = !data.ReadBit(); + break; + case MSEHasTransportData: + hasTransportData = data.ReadBit(); + break; + case MSEHasTransportTime2: + if (hasTransportData) + hasTransportTime2 = data.ReadBit(); + break; + case MSEHasTransportTime3: + if (hasTransportData) + hasTransportTime3 = data.ReadBit(); + break; + case MSEHasPitch: + hasPitch = !data.ReadBit(); + break; + case MSEHasFallData: + hasFallData = data.ReadBit(); + break; + case MSEHasFallDirection: + if (hasFallData) + hasFallDirection = data.ReadBit(); + break; + case MSEHasSplineElev: + hasSplineElevation = !data.ReadBit(); + break; + case MSEHasSpline: + hasSpline = data.ReadBit(); + break; + case MSEMovementFlags: + if (hasMovementFlags) + mi->flags = data.ReadBits(30); + break; + case MSEMovementFlags2: + if (hasMovementFlags2) + mi->flags2 = data.ReadBits(12); + break; + case MSETimestamp: + if (hasTimestamp) + data >> mi->time; + break; + case MSEPositionX: + data >> mi->pos.m_positionX; + break; + case MSEPositionY: + data >> mi->pos.m_positionY; + break; + case MSEPositionZ: + data >> mi->pos.m_positionZ; + break; + case MSEOrientation: + if (hasOrientation) + data >> mi->pos.m_orientation; + break; + case MSETransportPositionX: + if (hasTransportData) + data >> mi->t_pos.m_positionX; + break; + case MSETransportPositionY: + if (hasTransportData) + data >> mi->t_pos.m_positionY; + break; + case MSETransportPositionZ: + if (hasTransportData) + data >> mi->t_pos.m_positionZ; + break; + case MSETransportOrientation: + if (hasTransportData) + data >> mi->t_pos.m_orientation; + break; + case MSETransportSeat: + if (hasTransportData) + data >> mi->t_seat; + break; + case MSETransportTime: + if (hasTransportData) + data >> mi->t_time; + break; + case MSETransportTime2: + if (hasTransportData && hasTransportTime2) + data >> mi->t_time2; + break; + case MSETransportTime3: + if (hasTransportData && hasTransportTime3) + data >> mi->t_time3; + break; + case MSEPitch: + if (hasPitch) + data >> mi->pitch; + break; + case MSEFallTime: + if (hasFallData) + data >> mi->fallTime; + break; + case MSEFallVerticalSpeed: + if (hasFallData) + data >> mi->j_zspeed; + break; + case MSEFallCosAngle: + if (hasFallDirection) + data >> mi->j_cosAngle; + break; + case MSEFallSinAngle: + if (hasFallDirection) + data >> mi->j_sinAngle; + break; + case MSEFallHorizontalSpeed: + if (hasFallDirection) + data >> mi->j_xyspeed; + break; + case MSESplineElev: + if (hasSplineElevation) + data >> mi->splineElevation; + break; + case MSEZeroBit: + case MSEOneBit: + data.ReadBit(); + break; + default: + ASSERT(false && "Incorrect sequence element detected at ReadMovementInfo"); + break; + } + } + + mi->guid = guid; + mi->t_guid = tguid; + + if (hasTransportData && mi->pos.m_positionX != mi->t_pos.m_positionX) if (GetPlayer()->GetTransport()) GetPlayer()->GetTransport()->UpdatePosition(mi); @@ -834,157 +872,196 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi) void WorldSession::WriteMovementInfo(WorldPacket &data, MovementInfo* mi) { - bool HaveTransportData = mi->HasMovementFlag(MOVEMENTFLAG_ONTRANSPORT), - HaveTransportTime2 = (mi->flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT) != 0, - HaveTransportTime3 = false, - HavePitch = (mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING))) - || (mi->flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING), - HaveFallData = mi->HasExtraMovementFlag(MOVEMENTFLAG2_INTERPOLATED_TURNING), - HaveFallDirection = mi->HasMovementFlag(MOVEMENTFLAG_FALLING), - HaveSplineElevation = mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION), - HaveSpline = false; - - MovementStatusElements *sequence = GetMovementStatusElementsSequence(data.GetOpcode()); - if(!sequence) - return; - uint8 *guid = (uint8 *)&mi->guid; - uint8 *tguid = (uint8 *)&mi->t_guid; - for(uint32 i=0; i < MSE_COUNT; i++) - { - MovementStatusElements element = sequence[i]; - - if (element >= MSEGuidByte0 && element <= MSEGuidByte7) - { - data.WriteBit(guid[element - MSEGuidByte0]); - continue; - } - - if (element >= MSETransportGuidByte0 && - element <= MSETransportGuidByte7) - { - if (HaveTransportData) - data.WriteBit(tguid[element - MSETransportGuidByte0]); - continue; - } - - if (element >= MSEGuidByte0_2 && element <= MSEGuidByte7_2) - { - data.WriteByteSeq(guid[element - MSEGuidByte0_2]); - continue; - } - - if (element >= MSETransportGuidByte0_2 && - element <= MSETransportGuidByte7_2) - { - if (HaveTransportData) - data.WriteByteSeq(tguid[element - MSETransportGuidByte0_2]); - continue; - } - - switch (element) - { - case MSEFlags: - data.WriteBits(mi->flags, 30); - break; - case MSEFlags2: - data.WriteBits(mi->flags2, 12); - break; - case MSETimestamp: - data << mi->time; - break; - case MSEHavePitch: - data.WriteBit(HavePitch); - break; - case MSEHaveFallData: - data.WriteBit(HaveFallData); - break; - case MSEHaveFallDirection: - if (HaveFallData) - data.WriteBit(HaveFallDirection); - break; - case MSEHaveTransportData: - data.WriteBit(HaveTransportData); - break; - case MSETransportHaveTime2: - if (HaveTransportData) - data.WriteBit(HaveTransportTime2); - break; - case MSETransportHaveTime3: - if (HaveTransportData) - data.WriteBit(HaveTransportTime3); - break; - case MSEHaveSpline: - data.WriteBit(HaveSpline); - break; - case MSEHaveSplineElev: - data.WriteBit(HaveSplineElevation); - break; - case MSEPositionX: - data << mi->pos.PositionXYZStream(); - break; - case MSEPositionY: - case MSEPositionZ: - break; // assume they always go as vector of 3 - case MSEPositionO: - data << mi->pos.m_orientation; - break; - case MSEPitch: - if (HavePitch) - data << mi->pitch; - break; - case MSEFallTime: - if (HaveFallData) - data << mi->fallTime; - break; - case MSESplineElev: - if (HaveSplineElevation) - data << mi->splineElevation; - break; - case MSEFallHorizontalSpeed: - if (HaveFallDirection) - data << mi->j_xyspeed; - break; - case MSEFallVerticalSpeed: - if (HaveFallData) - data << mi->j_zspeed; - break; - case MSEFallCosAngle: - if (HaveFallDirection) - data << mi->j_cosAngle; - break; - case MSEFallSinAngle: - if (HaveFallDirection) - data << mi->j_sinAngle; - break; - case MSETransportSeat: - if (HaveTransportData) - data << mi->t_seat; - break; - case MSETransportPositionO: - if (HaveTransportData) - data << mi->t_pos.m_orientation; - break; - case MSETransportPositionX: - if (HaveTransportData) - data << mi->t_pos.PositionXYZStream(); - break; - case MSETransportPositionY: - case MSETransportPositionZ: - break; // assume they always go as vector of 3 - case MSETransportTime: - if (HaveTransportData) - data << mi->t_time; - break; - case MSETransportTime2: - if (HaveTransportTime2) - data << mi->t_time2; - break; - case MSETransportTime3: - if (HaveTransportTime3) - data << mi->t_time3; - break; - default: - WPError(false, "Incorrect sequence element detected at ReadMovementInfo"); - } - } + bool hasMovementFlags = mi->GetMovementFlags() != 0; + bool hasMovementFlags2 = mi->GetExtraMovementFlags() != 0; + bool hasTimestamp = mi->time != 0; + bool hasOrientation = !G3D::fuzzyEq(mi->pos.GetOrientation(), 0.0f); + bool hasTransportData = mi->t_guid != 0; + bool hasTransportTime2 = mi->HasExtraMovementFlag(MOVEMENTFLAG2_INTERPOLATED_MOVEMENT); + bool hasTransportTime3 = false; + bool hasPitch = mi->HasMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || mi->HasExtraMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING); + bool hasFallData = mi->HasExtraMovementFlag(MOVEMENTFLAG2_INTERPOLATED_TURNING); + bool hasFallDirection = mi->HasMovementFlag(MOVEMENTFLAG_FALLING); + bool hasSplineElevation = mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION); + bool hasSpline = false; + + MovementStatusElements* sequence = GetMovementStatusElementsSequence(data.GetOpcode()); + if (!sequence) + { + sLog->outError("WorldSession::WriteMovementInfo: No movement sequence found for opcode 0x%04X", uint32(data.GetOpcode())); + return; + } + + ObjectGuid guid = mi->guid; + ObjectGuid tguid = mi->t_guid; + + for(uint32 i = 0; i < MSE_COUNT; ++i) + { + MovementStatusElements element = sequence[i]; + + if (element >= MSEHasGuidByte0 && element <= MSEHasGuidByte7) + { + data.WriteBit(guid[element - MSEHasGuidByte0]); + continue; + } + + if (element >= MSEHasTransportGuidByte0 && + element <= MSEHasTransportGuidByte7) + { + if (hasTransportData) + data.WriteBit(tguid[element - MSEHasTransportGuidByte0]); + continue; + } + + if (element >= MSEGuidByte0 && element <= MSEGuidByte7) + { + data.WriteByteSeq(guid[element - MSEGuidByte0]); + continue; + } + + if (element >= MSETransportGuidByte0 && + element <= MSETransportGuidByte7) + { + if (hasTransportData) + data.WriteByteSeq(tguid[element - MSETransportGuidByte0]); + continue; + } + + switch (element) + { + case MSEHasMovementFlags: + data.WriteBit(!hasMovementFlags); + break; + case MSEHasMovementFlags2: + data.WriteBit(!hasMovementFlags2); + break; + case MSEHasTimestamp: + data.WriteBit(!hasTimestamp); + break; + case MSEHasOrientation: + data.WriteBit(!hasOrientation); + break; + case MSEHasTransportData: + data.WriteBit(hasTransportData); + break; + case MSEHasTransportTime2: + if (hasTransportData) + data.WriteBit(hasTransportTime2); + break; + case MSEHasTransportTime3: + if (hasTransportData) + data.WriteBit(hasTransportTime3); + break; + case MSEHasPitch: + data.WriteBit(!hasPitch); + break; + case MSEHasFallData: + data.WriteBit(hasFallData); + break; + case MSEHasFallDirection: + if (hasFallData) + data.WriteBit(hasFallDirection); + break; + case MSEHasSplineElev: + data.WriteBit(!hasSplineElevation); + break; + case MSEHasSpline: + data.WriteBit(hasSpline); + break; + case MSEMovementFlags: + if (hasMovementFlags) + data.WriteBits(mi->flags, 30); + break; + case MSEMovementFlags2: + if (hasMovementFlags2) + data.WriteBits(mi->flags2, 12); + break; + case MSETimestamp: + if (hasTimestamp) + data << mi->time; + break; + case MSEPositionX: + data << mi->pos.m_positionX; + break; + case MSEPositionY: + data << mi->pos.m_positionY; + break; + case MSEPositionZ: + data << mi->pos.m_positionZ; + break; + case MSEOrientation: + if (hasOrientation) + data << mi->pos.m_orientation; + break; + case MSETransportPositionX: + if (hasTransportData) + data << mi->t_pos.m_positionX; + break; + case MSETransportPositionY: + if (hasTransportData) + data << mi->t_pos.m_positionY; + break; + case MSETransportPositionZ: + if (hasTransportData) + data << mi->t_pos.m_positionZ; + break; + case MSETransportOrientation: + if (hasTransportData) + data << mi->t_pos.m_orientation; + break; + case MSETransportSeat: + if (hasTransportData) + data << mi->t_seat; + break; + case MSETransportTime: + if (hasTransportData) + data << mi->t_time; + break; + case MSETransportTime2: + if (hasTransportData && hasTransportTime2) + data << mi->t_time2; + break; + case MSETransportTime3: + if (hasTransportData && hasTransportTime3) + data << mi->t_time3; + break; + case MSEPitch: + if (hasPitch) + data << mi->pitch; + break; + case MSEFallTime: + if (hasFallData) + data << mi->fallTime; + break; + case MSEFallVerticalSpeed: + if (hasFallData) + data << mi->j_zspeed; + break; + case MSEFallCosAngle: + if (hasFallDirection) + data << mi->j_cosAngle; + break; + case MSEFallSinAngle: + if (hasFallDirection) + data << mi->j_sinAngle; + break; + case MSEFallHorizontalSpeed: + if (hasFallDirection) + data << mi->j_xyspeed; + break; + case MSESplineElev: + if (hasSplineElevation) + data << mi->splineElevation; + break; + case MSEZeroBit: + data.WriteBit(0); + break; + case MSEOneBit: + data.WriteBit(1); + break; + default: + ASSERT(false && "Incorrect sequence element detected at ReadMovementInfo"); + break; + } + } } diff --git a/src/server/game/Movement/MovementStructures.h b/src/server/game/Movement/MovementStructures.h index 84b6d79cbd5..87439bbedbc 100644 --- a/src/server/game/Movement/MovementStructures.h +++ b/src/server/game/Movement/MovementStructures.h @@ -21,10 +21,35 @@ enum MovementStatusElements { - MSEFlags, - MSEFlags2, - MSETimestamp, - MSEHavePitch, + MSEHasGuidByte0, + MSEHasGuidByte1, + MSEHasGuidByte2, + MSEHasGuidByte3, + MSEHasGuidByte4, + MSEHasGuidByte5, + MSEHasGuidByte6, + MSEHasGuidByte7, + MSEHasMovementFlags, + MSEHasMovementFlags2, + MSEHasTimestamp, + MSEHasOrientation, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasPitch, + MSEHasFallData, + MSEHasFallDirection, + MSEHasSplineElev, + MSEHasSpline, + MSEGuidByte0, MSEGuidByte1, MSEGuidByte2, @@ -33,11 +58,13 @@ enum MovementStatusElements MSEGuidByte5, MSEGuidByte6, MSEGuidByte7, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveTransportData, - MSETransportHaveTime2, - MSETransportHaveTime3, + MSEMovementFlags, + MSEMovementFlags2, + MSETimestamp, + MSEPositionX, + MSEPositionY, + MSEPositionZ, + MSEOrientation, MSETransportGuidByte0, MSETransportGuidByte1, MSETransportGuidByte2, @@ -46,1326 +73,1337 @@ enum MovementStatusElements MSETransportGuidByte5, MSETransportGuidByte6, MSETransportGuidByte7, - MSEHaveSpline, - MSEHaveSplineElev, - MSEPositionX, - MSEPositionY, - MSEPositionZ, - MSEPositionO, - MSEGuidByte0_2, - MSEGuidByte1_2, - MSEGuidByte2_2, - MSEGuidByte3_2, - MSEGuidByte4_2, - MSEGuidByte5_2, - MSEGuidByte6_2, - MSEGuidByte7_2, - MSEPitch, - MSEFallTime, - MSETransportGuidByte0_2, - MSETransportGuidByte1_2, - MSETransportGuidByte2_2, - MSETransportGuidByte3_2, - MSETransportGuidByte4_2, - MSETransportGuidByte5_2, - MSETransportGuidByte6_2, - MSETransportGuidByte7_2, - MSESplineElev, - MSEFallHorizontalSpeed, - MSEFallVerticalSpeed, - MSEFallCosAngle, - MSEFallSinAngle, - MSETransportSeat, - MSETransportPositionO, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, + MSETransportOrientation, + MSETransportSeat, MSETransportTime, MSETransportTime2, MSETransportTime3, + MSEPitch, + MSEFallTime, + MSEFallVerticalSpeed, + MSEFallCosAngle, + MSEFallSinAngle, + MSEFallHorizontalSpeed, + MSESplineElev, + + // Special + MSEZeroBit, // writes bit value 1 or skips read bit + MSEOneBit, // writes bit value 0 or skips read bit + MSEEnd, // marks end of parsing MSE_COUNT }; + //4.2.2 MovementStatusElements PlayerMoveSequence[] = { - MSEHaveSplineElev, - MSEHaveTransportData, - MSEGuidByte5, - MSETransportGuidByte2, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte0, - MSETransportHaveTime2, - MSETransportGuidByte7, - MSETransportHaveTime3, - MSETransportGuidByte6, - MSETransportGuidByte5, - MSEGuidByte7, - MSEGuidByte3, - MSEGuidByte1, + MSEHasSplineElev, + MSEHasTransportData, + MSEHasGuidByte5, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte0, + MSEHasTransportTime2, + MSEHasTransportGuidByte7, + MSEHasTransportTime3, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte5, + MSEHasGuidByte7, + MSEHasGuidByte3, + MSEHasGuidByte1, + MSEHasGuidByte4, + MSEHasGuidByte0, + MSEMovementFlags, + MSEHasPitch, + MSEHasGuidByte2, + MSEMovementFlags2, + MSEHasGuidByte6, + MSEHasFallData, + MSEHasFallDirection, + MSEHasSpline, MSEGuidByte4, MSEGuidByte0, - MSEFlags, - MSEHavePitch, - MSEGuidByte2, - MSEFlags2, + MSEOrientation, MSEGuidByte6, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveSpline, - MSEGuidByte4_2, - MSEGuidByte0_2, - MSEPositionO, - MSEGuidByte6_2, - MSEGuidByte7_2, + MSEGuidByte7, MSESplineElev, - MSETransportGuidByte4_2, - MSETransportGuidByte2_2, - MSETransportPositionO, + MSETransportGuidByte4, + MSETransportGuidByte2, + MSETransportOrientation, MSETransportTime, MSETransportSeat, - MSETransportGuidByte3_2, + MSETransportGuidByte3, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, - MSETransportGuidByte1_2, + MSETransportGuidByte1, MSETransportTime2, MSETransportTime3, - MSETransportGuidByte5_2, - MSETransportGuidByte0_2, - MSETransportGuidByte6_2, - MSETransportGuidByte7_2, - MSEGuidByte2_2, + MSETransportGuidByte5, + MSETransportGuidByte0, + MSETransportGuidByte6, + MSETransportGuidByte7, + MSEGuidByte2, MSETimestamp, - MSEGuidByte1_2, + MSEGuidByte1, MSEPitch, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEGuidByte5_2, - MSEGuidByte3_2, + MSEGuidByte5, + MSEGuidByte3, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, MSEFallVerticalSpeed, MSEFallTime, }; + //4.2.2 MovementStatusElements MovementFallLandSequence[] = { - MSEGuidByte4, - MSEGuidByte6, - MSEGuidByte3, - MSEHaveSpline, - MSEGuidByte2, - MSEFlags, - MSEGuidByte7, - MSEGuidByte1, - MSEFlags2, - MSEGuidByte5, - MSEGuidByte0, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHavePitch, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHaveSplineElev, - MSEPositionO, + MSEHasGuidByte4, + MSEHasGuidByte6, + MSEHasGuidByte3, + MSEHasSpline, + MSEHasGuidByte2, + MSEMovementFlags, + MSEHasGuidByte7, + MSEHasGuidByte1, + MSEMovementFlags2, + MSEHasGuidByte5, + MSEHasGuidByte0, + MSEHasFallData, + MSEHasFallDirection, + MSEHasPitch, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasSplineElev, + MSEOrientation, MSEPositionX, MSEPositionY, MSEPositionZ, MSETimestamp, - MSEGuidByte7_2, - MSEGuidByte2_2, + MSEGuidByte7, + MSEGuidByte2, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte0_2, + MSEGuidByte0, MSEPitch, - MSEGuidByte4_2, - MSEGuidByte6_2, - MSEGuidByte5_2, - MSEGuidByte3_2, + MSEGuidByte4, + MSEGuidByte6, + MSEGuidByte5, + MSEGuidByte3, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, MSESplineElev, - MSEGuidByte1_2, + MSEGuidByte1, }; + //4.2.2 MovementStatusElements MovementHeartBeatSequence[] = { - MSEFlags, - MSEHaveSpline, - MSEGuidByte0, - MSEGuidByte6, - MSEGuidByte1, - MSEGuidByte7, - MSEGuidByte2, - MSEGuidByte4, - MSEGuidByte3, - MSEFlags2, - MSEGuidByte5, - MSEHaveSplineElev, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHavePitch, - MSEHaveFallData, - MSEHaveFallDirection, + MSEMovementFlags, + MSEHasSpline, + MSEHasGuidByte0, + MSEHasGuidByte6, + MSEHasGuidByte1, + MSEHasGuidByte7, + MSEHasGuidByte2, + MSEHasGuidByte4, + MSEHasGuidByte3, + MSEMovementFlags2, + MSEHasGuidByte5, + MSEHasSplineElev, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasPitch, + MSEHasFallData, + MSEHasFallDirection, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEPositionO, - MSEGuidByte7_2, - MSEGuidByte5_2, + MSEOrientation, + MSEGuidByte7, + MSEGuidByte5, MSESplineElev, - MSEGuidByte1_2, - MSEGuidByte6_2, - MSEGuidByte4_2, - MSEGuidByte3_2, + MSEGuidByte1, + MSEGuidByte6, + MSEGuidByte4, + MSEGuidByte3, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, MSEPitch, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte2_2, - MSEGuidByte0_2, + MSEGuidByte2, + MSEGuidByte0, }; + //4.2.2 MovementStatusElements MovementJumpSequence[] = { - MSEHaveSpline, - MSEGuidByte0, - MSEGuidByte1, - MSEGuidByte4, - MSEFlags, - MSEGuidByte2, - MSEGuidByte5, - MSEGuidByte3, - MSEFlags2, - MSEGuidByte7, - MSEGuidByte6, - MSEHaveSplineElev, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHavePitch, - MSEPositionO, + MSEHasSpline, + MSEHasGuidByte0, + MSEHasGuidByte1, + MSEHasGuidByte4, + MSEMovementFlags, + MSEHasGuidByte2, + MSEHasGuidByte5, + MSEHasGuidByte3, + MSEMovementFlags2, + MSEHasGuidByte7, + MSEHasGuidByte6, + MSEHasSplineElev, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasFallData, + MSEHasFallDirection, + MSEHasPitch, + MSEOrientation, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, MSESplineElev, - MSEGuidByte0_2, - MSEGuidByte5_2, - MSEGuidByte3_2, + MSEGuidByte0, + MSEGuidByte5, + MSEGuidByte3, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte4_2, - MSEGuidByte1_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte4, + MSEGuidByte1, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte2_2, - MSEGuidByte6_2, - MSEGuidByte7_2, + MSEGuidByte2, + MSEGuidByte6, + MSEGuidByte7, MSEPitch, }; + //4.2.2 MovementStatusElements MovementSetFacingSequence[] = { - MSEFlags, - MSEGuidByte4, - MSEGuidByte2, - MSEHaveSpline, - MSEGuidByte3, - MSEGuidByte5, - MSEFlags2, - MSEGuidByte0, - MSEGuidByte7, - MSEGuidByte6, - MSEGuidByte1, - MSEHaveSplineElev, - MSEHavePitch, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEPositionO, + MSEMovementFlags, + MSEHasGuidByte4, + MSEHasGuidByte2, + MSEHasSpline, + MSEHasGuidByte3, + MSEHasGuidByte5, + MSEMovementFlags2, + MSEHasGuidByte0, + MSEHasGuidByte7, + MSEHasGuidByte6, + MSEHasGuidByte1, + MSEHasSplineElev, + MSEHasPitch, + MSEHasFallData, + MSEHasFallDirection, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEOrientation, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEGuidByte7_2, - MSEGuidByte5_2, + MSEGuidByte7, + MSEGuidByte5, MSESplineElev, - MSEGuidByte4_2, - MSEGuidByte1_2, - MSEGuidByte2_2, + MSEGuidByte4, + MSEGuidByte1, + MSEGuidByte2, MSEPitch, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte6_2, - MSEGuidByte0_2, + MSEGuidByte6, + MSEGuidByte0, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte3_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte3, }; + //4.2.2 MovementStatusElements MovementSetPitchSequence[] = { - MSEGuidByte1, - MSEGuidByte6, - MSEGuidByte7, - MSEGuidByte3, - MSEFlags, - MSEGuidByte5, - MSEGuidByte2, - MSEGuidByte0, - MSEHaveSpline, - MSEGuidByte4, - MSEFlags2, - MSEHaveSplineElev, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHavePitch, - MSEHaveFallData, - MSEHaveFallDirection, + MSEHasGuidByte1, + MSEHasGuidByte6, + MSEHasGuidByte7, + MSEHasGuidByte3, + MSEMovementFlags, + MSEHasGuidByte5, + MSEHasGuidByte2, + MSEHasGuidByte0, + MSEHasSpline, + MSEHasGuidByte4, + MSEMovementFlags2, + MSEHasSplineElev, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasPitch, + MSEHasFallData, + MSEHasFallDirection, MSEPositionX, MSEPositionY, MSEPositionZ, MSETimestamp, - MSEPositionO, - MSEGuidByte1_2, - MSEGuidByte4_2, + MSEOrientation, + MSEGuidByte1, + MSEGuidByte4, MSESplineElev, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, MSEPitch, - MSEGuidByte5_2, + MSEGuidByte5, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte0_2, - MSEGuidByte3_2, - MSEGuidByte6_2, - MSEGuidByte7_2, - MSEGuidByte2_2, + MSEGuidByte0, + MSEGuidByte3, + MSEGuidByte6, + MSEGuidByte7, + MSEGuidByte2, }; + //4.2.2 MovementStatusElements MovementStartBackwardSequence[] = { - MSEGuidByte5, - MSEFlags2, - MSEGuidByte2, - MSEGuidByte7, - MSEHaveSpline, - MSEFlags, - MSEGuidByte1, - MSEGuidByte3, - MSEGuidByte4, - MSEGuidByte6, - MSEGuidByte0, - MSEHaveSplineElev, - MSEHavePitch, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHaveFallData, - MSEHaveFallDirection, - MSEPositionO, + MSEHasGuidByte5, + MSEMovementFlags2, + MSEHasGuidByte2, + MSEHasGuidByte7, + MSEHasSpline, + MSEMovementFlags, + MSEHasGuidByte1, + MSEHasGuidByte3, + MSEHasGuidByte4, + MSEHasGuidByte6, + MSEHasGuidByte0, + MSEHasSplineElev, + MSEHasPitch, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasFallData, + MSEHasFallDirection, + MSEOrientation, MSEPositionX, MSEPositionY, MSEPositionZ, MSETimestamp, - MSEGuidByte3_2, - MSEGuidByte0_2, - MSEGuidByte1_2, + MSEGuidByte3, + MSEGuidByte0, + MSEGuidByte1, MSESplineElev, - MSEGuidByte4_2, + MSEGuidByte4, MSEPitch, - MSEGuidByte7_2, - MSEGuidByte2_2, - MSEGuidByte6_2, + MSEGuidByte7, + MSEGuidByte2, + MSEGuidByte6, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte5_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte5, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, }; -//4.2.2 -MovementStatusElements MovementStartForwardSequence[] = { - MSEFlags, + +//4.3.3 +MovementStatusElements MovementStartForwardSequence[] = +{ + MSEPositionY, + MSEPositionZ, + MSEPositionX, + MSEHasGuidByte5, + MSEHasGuidByte2, + MSEHasGuidByte0, + MSEZeroBit, + MSEHasMovementFlags, + MSEHasGuidByte7, + MSEHasGuidByte3, + MSEHasGuidByte1, + MSEHasOrientation, + MSEHasGuidByte6, + MSEHasSpline, + MSEHasSplineElev, + MSEHasGuidByte4, + MSEHasTransportData, + MSEHasTimestamp, + MSEHasPitch, + MSEHasMovementFlags2, + MSEHasFallData, + MSEMovementFlags, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte7, + MSEHasTransportGuidByte1, + MSEHasTransportTime3, + MSEHasTransportTime2, + MSEHasFallDirection, + MSEMovementFlags2, + MSEGuidByte2, + MSEGuidByte4, + MSEGuidByte6, MSEGuidByte1, MSEGuidByte7, - MSEFlags2, - MSEGuidByte6, + MSEGuidByte3, MSEGuidByte5, - MSEHaveSpline, MSEGuidByte0, - MSEGuidByte3, - MSEGuidByte4, - MSEGuidByte2, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveSplineElev, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHavePitch, - MSEPositionX, - MSEPositionY, - MSEPositionZ, - MSETimestamp, - MSEPositionO, - MSEGuidByte2_2, - MSEGuidByte3_2, - MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSESplineElev, - MSEGuidByte6_2, - MSEGuidByte0_2, - MSEGuidByte1_2, - MSEGuidByte7_2, - MSETransportSeat, - MSETransportPositionO, - MSETransportPositionX, + MSEFallTime, + MSETransportGuidByte3, MSETransportPositionY, MSETransportPositionZ, + MSETransportGuidByte1, + MSETransportGuidByte4, + MSETransportGuidByte7, + MSETransportOrientation, + MSETransportGuidByte2, + MSETransportPositionX, + MSETransportGuidByte5, + MSETransportTime3, MSETransportTime, + MSETransportGuidByte6, + MSETransportGuidByte0, + MSETransportSeat, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, - MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte5_2, - MSEGuidByte4_2, + MSESplineElev, MSEPitch, + MSEOrientation, + MSETimestamp, + + MSEEnd, }; + //4.2.2 MovementStatusElements MovementStartStrafeLeftSequence[] = { - MSEGuidByte5, - MSEFlags, - MSEHaveSpline, - MSEGuidByte6, - MSEGuidByte1, - MSEGuidByte2, - MSEFlags2, - MSEGuidByte7, - MSEGuidByte0, - MSEGuidByte3, - MSEGuidByte4, - MSEHavePitch, - MSEHaveSplineElev, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, + MSEHasGuidByte5, + MSEMovementFlags, + MSEHasSpline, + MSEHasGuidByte6, + MSEHasGuidByte1, + MSEHasGuidByte2, + MSEMovementFlags2, + MSEHasGuidByte7, + MSEHasGuidByte0, + MSEHasGuidByte3, + MSEHasGuidByte4, + MSEHasPitch, + MSEHasSplineElev, + MSEHasFallData, + MSEHasFallDirection, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEPositionO, + MSEOrientation, MSETimestamp, MSEPitch, MSESplineElev, - MSEGuidByte7_2, - MSEGuidByte5_2, + MSEGuidByte7, + MSEGuidByte5, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte4_2, - MSEGuidByte3_2, - MSEGuidByte2_2, - MSEGuidByte6_2, - MSEGuidByte0_2, - MSEGuidByte1_2, + MSEGuidByte4, + MSEGuidByte3, + MSEGuidByte2, + MSEGuidByte6, + MSEGuidByte0, + MSEGuidByte1, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, }; + //4.2.2 MovementStatusElements MovementStartStrafeRightSequence[] = { - MSEGuidByte3, - MSEGuidByte2, - MSEGuidByte4, - MSEGuidByte5, - MSEGuidByte0, - MSEGuidByte6, - MSEHaveSpline, - MSEFlags2, - MSEGuidByte1, - MSEFlags, - MSEGuidByte7, - MSEHaveSplineElev, - MSEHavePitch, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHaveFallData, - MSEHaveFallDirection, - MSEPositionO, + MSEHasGuidByte3, + MSEHasGuidByte2, + MSEHasGuidByte4, + MSEHasGuidByte5, + MSEHasGuidByte0, + MSEHasGuidByte6, + MSEHasSpline, + MSEMovementFlags2, + MSEHasGuidByte1, + MSEMovementFlags, + MSEHasGuidByte7, + MSEHasSplineElev, + MSEHasPitch, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasFallData, + MSEHasFallDirection, + MSEOrientation, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEGuidByte4_2, - MSEGuidByte1_2, - MSEGuidByte2_2, + MSEGuidByte4, + MSEGuidByte1, + MSEGuidByte2, MSESplineElev, - MSEGuidByte0_2, + MSEGuidByte0, MSEPitch, - MSEGuidByte6_2, - MSEGuidByte3_2, - MSEGuidByte7_2, - MSEGuidByte5_2, + MSEGuidByte6, + MSEGuidByte3, + MSEGuidByte7, + MSEGuidByte5, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, }; + //4.2.2 MovementStatusElements MovementStartTurnLeftSequence[] = { - MSEGuidByte5, - MSEGuidByte4, - MSEGuidByte6, - MSEGuidByte0, - MSEGuidByte1, - MSEGuidByte7, - MSEGuidByte2, - MSEGuidByte3, - MSEFlags, - MSEFlags2, - MSEHaveSpline, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHaveSplineElev, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHavePitch, + MSEHasGuidByte5, + MSEHasGuidByte4, + MSEHasGuidByte6, + MSEHasGuidByte0, + MSEHasGuidByte1, + MSEHasGuidByte7, + MSEHasGuidByte2, + MSEHasGuidByte3, + MSEMovementFlags, + MSEMovementFlags2, + MSEHasSpline, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasSplineElev, + MSEHasFallData, + MSEHasFallDirection, + MSEHasPitch, MSEPositionX, MSEPositionY, MSEPositionZ, MSETimestamp, - MSEPositionO, + MSEOrientation, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte4_2, - MSEGuidByte0_2, - MSEGuidByte7_2, - MSEGuidByte1_2, - MSEGuidByte6_2, - MSEGuidByte5_2, - MSEGuidByte3_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte4, + MSEGuidByte0, + MSEGuidByte7, + MSEGuidByte1, + MSEGuidByte6, + MSEGuidByte5, + MSEGuidByte3, MSESplineElev, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte2_2, + MSEGuidByte2, MSEPitch, }; + //4.2.2 MovementStatusElements MovementStartTurnRightSequence[] = { - MSEGuidByte4, - MSEGuidByte1, - MSEGuidByte6, - MSEGuidByte0, - MSEFlags, - MSEGuidByte5, - MSEFlags2, - MSEHaveSpline, - MSEGuidByte2, - MSEGuidByte3, - MSEGuidByte7, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHavePitch, - MSEHaveSplineElev, + MSEHasGuidByte4, + MSEHasGuidByte1, + MSEHasGuidByte6, + MSEHasGuidByte0, + MSEMovementFlags, + MSEHasGuidByte5, + MSEMovementFlags2, + MSEHasSpline, + MSEHasGuidByte2, + MSEHasGuidByte3, + MSEHasGuidByte7, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasFallData, + MSEHasFallDirection, + MSEHasPitch, + MSEHasSplineElev, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEPositionO, + MSEOrientation, MSETimestamp, - MSEGuidByte6_2, + MSEGuidByte6, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte2_2, - MSEGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte2, + MSEGuidByte4, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, MSEPitch, - MSEGuidByte7_2, - MSEGuidByte3_2, - MSEGuidByte1_2, - MSEGuidByte0_2, + MSEGuidByte7, + MSEGuidByte3, + MSEGuidByte1, + MSEGuidByte0, MSESplineElev, - MSEGuidByte5_2, + MSEGuidByte5, }; + //4.2.2 MovementStatusElements MovementStopSequence[] = { - MSEGuidByte2, - MSEGuidByte0, - MSEHaveSpline, - MSEFlags, - MSEGuidByte4, - MSEGuidByte6, - MSEGuidByte3, - MSEGuidByte5, - MSEGuidByte7, - MSEFlags2, - MSEGuidByte1, - MSEHavePitch, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHaveSplineElev, - MSEPositionO, + MSEHasGuidByte2, + MSEHasGuidByte0, + MSEHasSpline, + MSEMovementFlags, + MSEHasGuidByte4, + MSEHasGuidByte6, + MSEHasGuidByte3, + MSEHasGuidByte5, + MSEHasGuidByte7, + MSEMovementFlags2, + MSEHasGuidByte1, + MSEHasPitch, + MSEHasFallData, + MSEHasFallDirection, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasSplineElev, + MSEOrientation, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEGuidByte2_2, - MSEGuidByte3_2, + MSEGuidByte2, + MSEGuidByte3, MSEPitch, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte5_2, - MSEGuidByte7_2, + MSEGuidByte5, + MSEGuidByte7, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte1_2, - MSEGuidByte0_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte1, + MSEGuidByte0, MSESplineElev, - MSEGuidByte6_2, - MSEGuidByte4_2, + MSEGuidByte6, + MSEGuidByte4, }; + //4.2.2 MovementStatusElements MovementStopStrafeSequence[] = { - MSEGuidByte4, - MSEFlags2, - MSEGuidByte3, - MSEGuidByte1, - MSEFlags, - MSEGuidByte5, - MSEHaveSpline, - MSEGuidByte2, - MSEGuidByte6, - MSEGuidByte0, - MSEGuidByte7, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHavePitch, - MSEHaveSplineElev, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEPositionO, + MSEHasGuidByte4, + MSEMovementFlags2, + MSEHasGuidByte3, + MSEHasGuidByte1, + MSEMovementFlags, + MSEHasGuidByte5, + MSEHasSpline, + MSEHasGuidByte2, + MSEHasGuidByte6, + MSEHasGuidByte0, + MSEHasGuidByte7, + MSEHasFallData, + MSEHasFallDirection, + MSEHasPitch, + MSEHasSplineElev, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEOrientation, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEGuidByte1_2, - MSEGuidByte2_2, - MSEGuidByte6_2, - MSEGuidByte5_2, - MSEGuidByte7_2, - MSEGuidByte0_2, + MSEGuidByte1, + MSEGuidByte2, + MSEGuidByte6, + MSEGuidByte5, + MSEGuidByte7, + MSEGuidByte0, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte3_2, + MSEGuidByte3, MSEPitch, MSESplineElev, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte4, }; + //4.2.2 MovementStatusElements MovementStopTurnSequence[] = { - MSEGuidByte6, - MSEFlags, - MSEGuidByte2, - MSEGuidByte3, - MSEFlags2, - MSEGuidByte5, - MSEGuidByte7, - MSEGuidByte0, - MSEGuidByte4, - MSEGuidByte1, - MSEHaveSpline, - MSEHavePitch, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveSplineElev, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, + MSEHasGuidByte6, + MSEMovementFlags, + MSEHasGuidByte2, + MSEHasGuidByte3, + MSEMovementFlags2, + MSEHasGuidByte5, + MSEHasGuidByte7, + MSEHasGuidByte0, + MSEHasGuidByte4, + MSEHasGuidByte1, + MSEHasSpline, + MSEHasPitch, + MSEHasFallData, + MSEHasFallDirection, + MSEHasSplineElev, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEPositionO, - MSEGuidByte4_2, - MSEGuidByte5_2, - MSEGuidByte7_2, - MSEGuidByte1_2, + MSEOrientation, + MSEGuidByte4, + MSEGuidByte5, + MSEGuidByte7, + MSEGuidByte1, MSEPitch, - MSEGuidByte3_2, - MSEGuidByte6_2, + MSEGuidByte3, + MSEGuidByte6, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, MSESplineElev, - MSEGuidByte0_2, - MSEGuidByte2_2, + MSEGuidByte0, + MSEGuidByte2, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, }; + //4.2.2 MovementStatusElements MovementStartAscendSequence[] = { - MSEGuidByte3, - MSEGuidByte1, - MSEGuidByte5, - MSEFlags, - MSEGuidByte4, - MSEGuidByte6, - MSEGuidByte0, - MSEGuidByte7, - MSEFlags2, - MSEGuidByte2, - MSEHaveSpline, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHavePitch, - MSEHaveSplineElev, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, + MSEHasGuidByte3, + MSEHasGuidByte1, + MSEHasGuidByte5, + MSEMovementFlags, + MSEHasGuidByte4, + MSEHasGuidByte6, + MSEHasGuidByte0, + MSEHasGuidByte7, + MSEMovementFlags2, + MSEHasGuidByte2, + MSEHasSpline, + MSEHasFallData, + MSEHasFallDirection, + MSEHasPitch, + MSEHasSplineElev, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, MSEPositionX, MSEPositionY, MSEPositionZ, MSETimestamp, - MSEPositionO, - MSEGuidByte3_2, + MSEOrientation, + MSEGuidByte3, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, MSEPitch, - MSEGuidByte0_2, - MSEGuidByte5_2, + MSEGuidByte0, + MSEGuidByte5, MSESplineElev, - MSEGuidByte1_2, + MSEGuidByte1, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte4_2, - MSEGuidByte7_2, - MSEGuidByte2_2, - MSEGuidByte6_2, -}; -//4.2.2 -MovementStatusElements MovementStartDescendSequence[] = { - MSEGuidByte6, - MSEGuidByte1, - MSEGuidByte0, - MSEGuidByte3, - MSEFlags, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, MSEGuidByte4, MSEGuidByte7, - MSEHaveSpline, - MSEGuidByte5, - MSEFlags2, MSEGuidByte2, - MSEHaveSplineElev, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHavePitch, + MSEGuidByte6, +}; + +//4.2.2 +MovementStatusElements MovementStartDescendSequence[] = { + MSEHasGuidByte6, + MSEHasGuidByte1, + MSEHasGuidByte0, + MSEHasGuidByte3, + MSEMovementFlags, + MSEHasGuidByte4, + MSEHasGuidByte7, + MSEHasSpline, + MSEHasGuidByte5, + MSEMovementFlags2, + MSEHasGuidByte2, + MSEHasSplineElev, + MSEHasFallData, + MSEHasFallDirection, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasPitch, MSETimestamp, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEPositionO, + MSEOrientation, MSESplineElev, - MSEGuidByte7_2, - MSEGuidByte4_2, - MSEGuidByte2_2, - MSEGuidByte5_2, + MSEGuidByte7, + MSEGuidByte4, + MSEGuidByte2, + MSEGuidByte5, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte6_2, + MSEGuidByte6, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte0_2, - MSEGuidByte3_2, - MSEGuidByte1_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte0, + MSEGuidByte3, + MSEGuidByte1, MSEPitch, }; + //4.2.2 MovementStatusElements MovementStartSwimSequence[] = { - MSEGuidByte2, - MSEHaveSpline, - MSEGuidByte1, - MSEFlags, - MSEGuidByte3, - MSEGuidByte5, - MSEGuidByte0, - MSEGuidByte6, - MSEGuidByte7, - MSEFlags2, - MSEGuidByte4, - MSEHavePitch, - MSEHaveSplineElev, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, + MSEHasGuidByte2, + MSEHasSpline, + MSEHasGuidByte1, + MSEMovementFlags, + MSEHasGuidByte3, + MSEHasGuidByte5, + MSEHasGuidByte0, + MSEHasGuidByte6, + MSEHasGuidByte7, + MSEMovementFlags2, + MSEHasGuidByte4, + MSEHasPitch, + MSEHasSplineElev, + MSEHasFallData, + MSEHasFallDirection, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEPositionO, + MSEOrientation, MSETimestamp, MSEPitch, MSESplineElev, - MSEGuidByte2_2, - MSEGuidByte0_2, - MSEGuidByte5_2, - MSEGuidByte4_2, - MSEGuidByte7_2, - MSEGuidByte1_2, + MSEGuidByte2, + MSEGuidByte0, + MSEGuidByte5, + MSEGuidByte4, + MSEGuidByte7, + MSEGuidByte1, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, - MSEGuidByte3_2, + MSEGuidByte3, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, - MSEGuidByte6_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, + MSEGuidByte6, }; + //4.2.2 MovementStatusElements MovementStopAscendSequence[] = { - MSEGuidByte0, - MSEGuidByte3, - MSEFlags2, - MSEGuidByte1, - MSEGuidByte5, - MSEHaveSpline, - MSEGuidByte4, - MSEGuidByte2, - MSEFlags, - MSEGuidByte7, - MSEGuidByte6, - MSEHaveFallData, - MSEHaveFallDirection, - MSEHaveTransportData, - MSETransportGuidByte0, - MSETransportGuidByte6, - MSETransportGuidByte2, - MSETransportGuidByte5, - MSETransportGuidByte4, - MSETransportGuidByte1, - MSETransportGuidByte3, - MSETransportGuidByte7, - MSETransportHaveTime2, - MSETransportHaveTime3, - MSEHavePitch, - MSEHaveSplineElev, + MSEHasGuidByte0, + MSEHasGuidByte3, + MSEMovementFlags2, + MSEHasGuidByte1, + MSEHasGuidByte5, + MSEHasSpline, + MSEHasGuidByte4, + MSEHasGuidByte2, + MSEMovementFlags, + MSEHasGuidByte7, + MSEHasGuidByte6, + MSEHasFallData, + MSEHasFallDirection, + MSEHasTransportData, + MSEHasTransportGuidByte0, + MSEHasTransportGuidByte6, + MSEHasTransportGuidByte2, + MSEHasTransportGuidByte5, + MSEHasTransportGuidByte4, + MSEHasTransportGuidByte1, + MSEHasTransportGuidByte3, + MSEHasTransportGuidByte7, + MSEHasTransportTime2, + MSEHasTransportTime3, + MSEHasPitch, + MSEHasSplineElev, MSETimestamp, - MSEPositionO, + MSEOrientation, MSEPositionX, MSEPositionY, MSEPositionZ, - MSEGuidByte0_2, - MSEGuidByte1_2, - MSEGuidByte2_2, - MSEGuidByte7_2, + MSEGuidByte0, + MSEGuidByte1, + MSEGuidByte2, + MSEGuidByte7, MSEFallTime, MSEFallVerticalSpeed, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, MSETransportSeat, - MSETransportPositionO, + MSETransportOrientation, MSETransportPositionX, MSETransportPositionY, MSETransportPositionZ, MSETransportTime, MSETransportTime2, - MSETransportGuidByte3_2, - MSETransportGuidByte6_2, + MSETransportGuidByte3, + MSETransportGuidByte6, MSETransportTime3, - MSETransportGuidByte7_2, - MSETransportGuidByte5_2, - MSETransportGuidByte2_2, - MSETransportGuidByte1_2, - MSETransportGuidByte0_2, - MSETransportGuidByte4_2, + MSETransportGuidByte7, + MSETransportGuidByte5, + MSETransportGuidByte2, + MSETransportGuidByte1, + MSETransportGuidByte0, + MSETransportGuidByte4, MSEPitch, - MSEGuidByte5_2, - MSEGuidByte4_2, - MSEGuidByte3_2, + MSEGuidByte5, + MSEGuidByte4, + MSEGuidByte3, MSESplineElev, - MSEGuidByte6_2, + MSEGuidByte6, }; MovementStatusElements* GetMovementStatusElementsSequence(Opcodes opcode) { - switch(opcode) + switch (opcode) { - case SMSG_PLAYER_MOVE: - return PlayerMoveSequence; - case MSG_MOVE_FALL_LAND: - return MovementFallLandSequence; + //case SMSG_PLAYER_MOVE: + // return PlayerMoveSequence; + //case MSG_MOVE_FALL_LAND: + // return MovementFallLandSequence; //case MSG_MOVE_HEARTBEAT: // return MovementHeartBeatSequence; - case MSG_MOVE_JUMP: - return MovementJumpSequence; + //case MSG_MOVE_JUMP: + // return MovementJumpSequence; //case MSG_MOVE_SET_FACING: // return MovementSetFacingSequence; //case MSG_MOVE_SET_PITCH: // return MovementSetPitchSequence; - case MSG_MOVE_START_BACKWARD: - return MovementStartBackwardSequence; + //case MSG_MOVE_START_BACKWARD: + // return MovementStartBackwardSequence; case MSG_MOVE_START_FORWARD: return MovementStartForwardSequence; - case MSG_MOVE_START_STRAFE_LEFT: - return MovementStartStrafeLeftSequence; - case MSG_MOVE_START_STRAFE_RIGHT: - return MovementStartStrafeRightSequence; - case MSG_MOVE_START_TURN_LEFT: - return MovementStartTurnLeftSequence; - case MSG_MOVE_START_TURN_RIGHT: - return MovementStartTurnRightSequence; - case MSG_MOVE_STOP: - return MovementStopSequence; - case MSG_MOVE_STOP_STRAFE: - return MovementStopStrafeSequence; - case MSG_MOVE_STOP_TURN: - return MovementStopTurnSequence; - case MSG_MOVE_START_ASCEND: - return MovementStartAscendSequence; - case MSG_MOVE_START_DESCEND: - return MovementStartDescendSequence; - case MSG_MOVE_START_SWIM: - return MovementStartSwimSequence; - case MSG_MOVE_STOP_ASCEND: - return MovementStopAscendSequence; + //case MSG_MOVE_START_STRAFE_LEFT: + // return MovementStartStrafeLeftSequence; + //case MSG_MOVE_START_STRAFE_RIGHT: + // return MovementStartStrafeRightSequence; + //case MSG_MOVE_START_TURN_LEFT: + // return MovementStartTurnLeftSequence; + //case MSG_MOVE_START_TURN_RIGHT: + // return MovementStartTurnRightSequence; + //case MSG_MOVE_STOP: + // return MovementStopSequence; + //case MSG_MOVE_STOP_STRAFE: + // return MovementStopStrafeSequence; + //case MSG_MOVE_STOP_TURN: + // return MovementStopTurnSequence; + //case MSG_MOVE_START_ASCEND: + // return MovementStartAscendSequence; + //case MSG_MOVE_START_DESCEND: + // return MovementStartDescendSequence; + //case MSG_MOVE_START_SWIM: + // return MovementStartSwimSequence; + //case MSG_MOVE_STOP_ASCEND: + // return MovementStopAscendSequence; default: break; } + return NULL; } diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp index c539dd3cc39..ba5c59c1078 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.cpp +++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp @@ -63,7 +63,7 @@ namespace Movement bool transport = false; Location real_position(unit.GetPositionX(), unit.GetPositionY(), unit.GetPositionZMinusOffset(), unit.GetOrientation()); // Elevators also use MOVEMENTFLAG_ONTRANSPORT but we do not keep track of their position changes - if (unit.HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && unit.GetTransGUID()) + if (unit.GetTransGUID()) { transport = true; real_position.x = unit.GetTransOffsetX(); @@ -91,7 +91,7 @@ namespace Movement else moveFlags &= ~MOVEMENTFLAG_WALKING; - moveFlags |= (MOVEMENTFLAG_SPLINE_ENABLED|MOVEMENTFLAG_FORWARD); + moveFlags |= MOVEMENTFLAG_FORWARD; if (!args.HasVelocity) args.velocity = unit.GetSpeed(SelectSpeedType(moveFlags)); @@ -120,7 +120,7 @@ namespace Movement MoveSplineInit::MoveSplineInit(Unit& m) : unit(m) { // Elevators also use MOVEMENTFLAG_ONTRANSPORT but we do not keep track of their position changes - args.TransformForTransport = unit.HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && unit.GetTransGUID(); + args.TransformForTransport = unit.GetTransGUID(); // mix existing state into new args.flags.walkmode = unit.m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALKING); args.flags.flying = unit.m_movementInfo.HasMovementFlag((MovementFlags)(MOVEMENTFLAG_CAN_FLY|MOVEMENTFLAG_DISABLE_GRAVITY)); diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index b7fa07ad430..bdf8a23412d 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -735,7 +735,7 @@ void InitOpcodes() //DEFINE_OPCODE_HANDLER(MSG_MOVE_START_ASCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); //DEFINE_OPCODE_HANDLER(MSG_MOVE_START_BACKWARD, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); //DEFINE_OPCODE_HANDLER(MSG_MOVE_START_DESCEND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); - //DEFINE_OPCODE_HANDLER(MSG_MOVE_START_FORWARD, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); + DEFINE_OPCODE_HANDLER(MSG_MOVE_START_FORWARD, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); //DEFINE_OPCODE_HANDLER(MSG_MOVE_START_PITCH_DOWN, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); //DEFINE_OPCODE_HANDLER(MSG_MOVE_START_PITCH_UP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); //DEFINE_OPCODE_HANDLER(MSG_MOVE_START_STRAFE_LEFT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes ); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index f3ae9009572..d08f814c479 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -166,8 +166,6 @@ void WorldSession::SendPacket(WorldPacket const* packet) if (packet->GetOpcode() == NULL_OPCODE || packet->GetOpcode() == UNKNOWN_OPCODE) { sLog->outError("Prevented sending of %s", packet->GetOpcode() == NULL_OPCODE ? "NULL_OPCODE" : "UNKNOWN_OPCODE"); - //ACE_Stack_Trace trace; - //sLog->outError("%s", trace.c_str()); return; } diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 813c43288d0..b777fe8d9dc 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -433,7 +433,7 @@ public: { me->SetVisible(false); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - me->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT | MOVEMENTFLAG_DISABLE_GRAVITY); + me->AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); me->SetSpeed(MOVE_WALK, 5.0f, true); wp_reached = false; count = 0; @@ -466,7 +466,7 @@ public: instance->SetData(GAMEOBJECT_PUMPKIN_SHRINE, 0); //hide gameobject break; case 19: - me->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT | MOVEMENTFLAG_DISABLE_GRAVITY); + me->RemoveUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); break; case 20: { diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 8a64d45abcb..be657761def 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -264,7 +264,7 @@ public: { OrbsEmpowered = 0; EmpowerCount = 0; - me->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT | MOVEMENTFLAG_DISABLE_GRAVITY); + me->AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->setActive(true); @@ -452,7 +452,7 @@ public: summoned->CastSpell(summoned, SPELL_SHADOW_CHANNELING, false); break; case CREATURE_ANVEENA: - summoned->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT | MOVEMENTFLAG_DISABLE_GRAVITY); + summoned->AddUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY); summoned->CastSpell(summoned, SPELL_ANVEENA_PRISON, true); summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); break; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index 18c972b966c..14713787164 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -130,9 +130,9 @@ bool GrandChampionsOutVehicle(Creature* me) if (pGrandChampion1 && pGrandChampion2 && pGrandChampion3) { - if (!pGrandChampion1->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && - !pGrandChampion2->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && - !pGrandChampion3->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + if (!pGrandChampion1->m_movementInfo.t_guid && + !pGrandChampion2->m_movementInfo.t_guid && + !pGrandChampion3->m_movementInfo.t_guid) return true; } @@ -384,7 +384,7 @@ public: } }else uiPhaseTimer -= uiDiff; - if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + if (!UpdateVictim() || me->m_movementInfo.t_guid) return; if (uiInterceptTimer <= uiDiff) @@ -528,7 +528,7 @@ public: uiFireBallTimer = 5000; } else uiFireBallTimer -= uiDiff; - if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + if (!UpdateVictim() || me->m_movementInfo.t_guid) return; if (uiFireBallTimer <= uiDiff) @@ -666,7 +666,7 @@ public: } }else uiPhaseTimer -= uiDiff; - if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + if (!UpdateVictim() || me->m_movementInfo.t_guid) return; if (uiChainLightningTimer <= uiDiff) @@ -812,7 +812,7 @@ public: } }else uiPhaseTimer -= uiDiff; - if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + if (!UpdateVictim() || me->m_movementInfo.t_guid) return; if (uiLightningArrowsTimer <= uiDiff) @@ -960,7 +960,7 @@ public: } } else uiPhaseTimer -= uiDiff; - if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT)) + if (!UpdateVictim() || me->m_movementInfo.t_guid) return; if (uiEviscerateTimer <= uiDiff) |