aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp4
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp148
-rw-r--r--src/server/game/Entities/Player/Player.cpp256
-rw-r--r--src/server/game/Entities/Player/Player.h4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp562
-rw-r--r--src/server/game/Entities/Unit/Unit.h17
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp3
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp32
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp19
-rw-r--r--src/server/game/Movement/MovementStructures.cpp5010
-rw-r--r--src/server/game/Movement/MovementStructures.h2188
-rw-r--r--src/server/game/Scripting/MapScripts.cpp6
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp26
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h16
-rw-r--r--src/server/game/Server/WorldSession.h1
-rw-r--r--src/server/scripts/Commands/cs_cheat.cpp15
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp10
-rw-r--r--src/server/scripts/Commands/cs_gm.cpp10
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp3
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp3
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp8
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp5
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp6
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp3
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp10
-rw-r--r--src/server/scripts/Northrend/zone_zuldrak.cpp3
-rw-r--r--src/server/scripts/Spells/spell_item.cpp3
30 files changed, 5237 insertions, 3148 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index f1328bbd259..0b665b2e571 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -735,7 +735,7 @@ void SmartAI::SetRun(bool run)
void SmartAI::SetFly(bool fly)
{
me->SetDisableGravity(fly);
- me->SendMovementFlagUpdate();
+ me->SendMovementDisableGravity();
}
void SmartAI::SetSwim(bool swim)
@@ -744,7 +744,7 @@ void SmartAI::SetSwim(bool swim)
me->AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
else
me->RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
- me->SendMovementFlagUpdate();
+ me->SendMovementSwimming();
}
void SmartAI::sGossipHello(Player* player)
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 892f44dba73..705d1d8bd3a 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2570,52 +2570,10 @@ bool Creature::SetWalk(bool enable)
if (!Unit::SetWalk(enable))
return false;
- ObjectGuid guid = GetGUID();
- WorldPacket data;
- if (enable)
- {
- data.Initialize(SMSG_SPLINE_MOVE_SET_WALK_MODE, 9);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[0]);
-
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- }
- else
- {
- data.Initialize(SMSG_SPLINE_MOVE_SET_RUN_MODE, 9);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[1]);
-
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[3]);
- }
-
- SendMessageToSet(&data, false);
+ if (!movespline->Initialized())
+ return true;
+
+ SendMovementWalkMode();
return true;
}
@@ -2629,52 +2587,7 @@ bool Creature::SetDisableGravity(bool disable, bool packetOnly/*=false*/)
if (!movespline->Initialized())
return true;
- ObjectGuid guid = GetGUID();
- WorldPacket data;
- if (disable)
- {
- data.Initialize(SMSG_SPLINE_MOVE_GRAVITY_DISABLE, 9);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[6]);
-
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[0]);
- }
- else
- {
- data.Initialize(SMSG_SPLINE_MOVE_GRAVITY_ENABLE, 9);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[0]);
-
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[5]);
- }
-
- SendMessageToSet(&data, false);
+ SendMovementDisableGravity();
return true;
}
@@ -2692,53 +2605,10 @@ bool Creature::SetHover(bool enable)
if (!movespline->Initialized())
return true;
- //! Not always a packet is sent
- ObjectGuid guid = GetGUID();
- WorldPacket data;
- if (enable)
- {
- data.Initialize(SMSG_SPLINE_MOVE_SET_HOVER, 9);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[5]);
-
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[6]);
- }
- else
- {
- data.Initialize(SMSG_SPLINE_MOVE_UNSET_HOVER, 9);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[2]);
-
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[1]);
- }
-
- SendMessageToSet(&data, false);
+ // If creature hovers using aura, the hover movement opcode is sent from aura handler
+ if (!HasAuraType(SPELL_AURA_HOVER))
+ SendMovementHover();
+
return true;
}
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 73adc61b185..ad01c99a747 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -79,6 +79,7 @@
#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
+#include "MovementStructures.h"
#define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS)
@@ -5097,7 +5098,8 @@ void Player::BuildPlayerRepop()
// convert player body to ghost
SetHealth(1);
- SendMovementSetWaterWalking(true);
+ AddUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
+ SendMovementWaterWalking();
if (!GetSession()->isLogingOut())
SetRooted(false);
@@ -5139,7 +5141,8 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness)
setDeathState(ALIVE);
- SendMovementSetWaterWalking(false);
+ RemoveUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
+ SendMovementWaterWalking();
SetRooted(false);
m_deathTimer = 0;
@@ -26792,256 +26795,19 @@ VoidStorageItem* Player::GetVoidStorageItem(uint64 id, uint8& slot) const
return NULL;
}
-void Player::SendMovementSetCanFly(bool apply)
-{
- ObjectGuid guid = GetGUID();
- WorldPacket data;
- if (apply)
- {
- data.Initialize(SMSG_MOVE_SET_CAN_FLY, 1 + 8 + 4);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[3]);
-
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[3]);
-
- data << uint32(0); //! movement counter
-
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[5]);
- }
- else
- {
- data.Initialize(SMSG_MOVE_UNSET_CAN_FLY, 1 + 8 + 4);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[7]);
-
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[6]);
-
- data << uint32(0); //! movement counter
-
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[7]);
- }
- SendDirectMessage(&data);
-}
-
void Player::SendMovementSetCanTransitionBetweenSwimAndFly(bool apply)
{
- WorldPacket data(apply ?
+ Movement::PacketSender(this, NULL_OPCODE, apply ?
SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY :
- SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY, 12);
- data.append(GetPackGUID());
- data << uint32(0); //! movement counter
- SendDirectMessage(&data);
-}
-
-void Player::SendMovementSetHover(bool apply)
-{
- ObjectGuid guid = GetGUID();
- WorldPacket data;
- if (apply)
- {
- data.Initialize(SMSG_MOVE_SET_HOVER, 12);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[7]);
-
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[7]);
- data << uint32(0); // movement counter
- }
- else
- {
- data.Initialize(SMSG_MOVE_UNSET_HOVER, 12);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[0]);
-
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[0]);
- data << uint32(0); // movement counter
- }
-
- SendDirectMessage(&data);
-}
-
-void Player::SendMovementSetWaterWalking(bool apply)
-{
- ObjectGuid guid = GetGUID();
- WorldPacket data;
- if (apply)
- {
- data.Initialize(SMSG_MOVE_WATER_WALK, 1 + 4 + 8);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[2]);
-
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[2]);
- data << uint32(0); //! movement counter
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[6]);
- }
- else
- {
- data.Initialize(SMSG_MOVE_LAND_WALK, 1 + 4 + 8);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[7]);
-
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[2]);
- data << uint32(0); //! movement counter
- }
- SendDirectMessage(&data);
-}
-
-void Player::SendMovementSetFeatherFall(bool apply)
-{
- ObjectGuid guid = GetGUID();
- WorldPacket data;
-
- if (apply)
- {
- data.Initialize(SMSG_MOVE_FEATHER_FALL, 1 + 4 + 8);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[6]);
-
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[2]);
- data << uint32(0); //! movement counter
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[6]);
- }
- else
- {
- data.Initialize(SMSG_MOVE_NORMAL_FALL, 1 + 4 + 8);
-
- data << uint32(0); //! movement counter
-
- data.WriteBit(guid[3]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[2]);
-
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[6]);
- }
-
- SendDirectMessage(&data);
+ SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY).Send();
}
void Player::SendMovementSetCollisionHeight(float height)
{
- ObjectGuid guid = GetGUID();
- WorldPacket data(SMSG_MOVE_SET_COLLISION_HEIGHT, 2 + 8 + 4 + 4);
- data.WriteBits(0, 2);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[3]);
- data.FlushBits();
-
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[5]);
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[7]);
- data << float(height);
-
- SendDirectMessage(&data);
+ static MovementStatusElements const heightElement = MSEExtraFloat;
+ Movement::ExtraMovementStatusElement extra(&heightElement);
+ extra.Data.floatData = height;
+ Movement::PacketSender(this, NULL_OPCODE, SMSG_MOVE_SET_COLLISION_HEIGHT, SMSG_MOVE_UPDATE_COLLISION_HEIGHT, &extra).Send();
}
float Player::GetCollisionHeight(bool mounted) const
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index e0b24c919a6..55c0e5a1eb9 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2488,11 +2488,7 @@ class Player : public Unit, public GridObject<Player>
/*! These methods send different packets to the client in apply and unapply case.
These methods are only sent to the current unit.
*/
- void SendMovementSetCanFly(bool apply);
void SendMovementSetCanTransitionBetweenSwimAndFly(bool apply);
- void SendMovementSetHover(bool apply);
- void SendMovementSetWaterWalking(bool apply);
- void SendMovementSetFeatherFall(bool apply);
void SendMovementSetCollisionHeight(float height);
bool CanFly() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); }
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index f06f3fbfdd5..1c8f1dc552d 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -8606,7 +8606,7 @@ void Unit::SetCharm(Unit* charm, bool apply)
if (_isWalkingBeforeCharm)
{
charm->SetWalk(false);
- charm->SendMovementFlagUpdate();
+ charm->SendMovementWalkMode();
}
m_Controlled.insert(charm);
@@ -8644,7 +8644,7 @@ void Unit::SetCharm(Unit* charm, bool apply)
if (charm->IsWalking() != _isWalkingBeforeCharm)
{
charm->SetWalk(_isWalkingBeforeCharm);
- charm->SendMovementFlagUpdate(true); // send packet to self, to update movement state on player.
+ charm->SendMovementWalkMode();
}
if (charm->GetTypeId() == TYPEID_PLAYER
@@ -11168,418 +11168,35 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
propagateSpeedChange();
- WorldPacket data;
- ObjectGuid guid = GetGUID();
- if (!forced)
+ static Opcodes const moveTypeToOpcode[MAX_MOVE_TYPE][3] =
+ {
+ {SMSG_SPLINE_MOVE_SET_WALK_SPEED, SMSG_MOVE_SET_WALK_SPEED, SMSG_MOVE_UPDATE_WALK_SPEED },
+ {SMSG_SPLINE_MOVE_SET_RUN_SPEED, SMSG_MOVE_SET_RUN_SPEED, SMSG_MOVE_UPDATE_RUN_SPEED },
+ {SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED, SMSG_MOVE_SET_RUN_BACK_SPEED, SMSG_MOVE_UPDATE_RUN_BACK_SPEED },
+ {SMSG_SPLINE_MOVE_SET_SWIM_SPEED, SMSG_MOVE_SET_SWIM_SPEED, SMSG_MOVE_UPDATE_SWIM_SPEED },
+ {SMSG_SPLINE_MOVE_SET_SWIM_BACK_SPEED, SMSG_MOVE_SET_SWIM_BACK_SPEED, SMSG_MOVE_UPDATE_SWIM_BACK_SPEED },
+ {SMSG_SPLINE_MOVE_SET_TURN_RATE, SMSG_MOVE_SET_TURN_RATE, SMSG_MOVE_UPDATE_TURN_RATE },
+ {SMSG_SPLINE_MOVE_SET_FLIGHT_SPEED, SMSG_MOVE_SET_FLIGHT_SPEED, SMSG_MOVE_UPDATE_FLIGHT_SPEED },
+ {SMSG_SPLINE_MOVE_SET_FLIGHT_BACK_SPEED, SMSG_MOVE_SET_FLIGHT_BACK_SPEED, SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED},
+ {SMSG_SPLINE_MOVE_SET_PITCH_RATE, SMSG_MOVE_SET_PITCH_RATE, SMSG_MOVE_UPDATE_PITCH_RATE },
+ };
+
+ if (GetTypeId() == TYPEID_PLAYER)
{
- switch (mtype)
- {
- case MOVE_WALK:
- data.Initialize(SMSG_SPLINE_MOVE_SET_WALK_SPEED, 8+4+2+4+4+4+4+4+4+4);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[4]);
- data.FlushBits();
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[3]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[5]);
- break;
- case MOVE_RUN:
- data.Initialize(SMSG_SPLINE_MOVE_SET_RUN_SPEED, 1 + 8 + 4);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[2]);
- data.FlushBits();
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[4]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[1]);
- break;
- case MOVE_RUN_BACK:
- data.Initialize(SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED, 1 + 8 + 4);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[4]);
- data.FlushBits();
- data.WriteByteSeq(guid[1]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[7]);
- break;
- case MOVE_SWIM:
- data.Initialize(SMSG_SPLINE_MOVE_SET_SWIM_SPEED, 1 + 8 + 4);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[1]);
- data.FlushBits();
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[4]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- break;
- case MOVE_SWIM_BACK:
- data.Initialize(SMSG_SPLINE_MOVE_SET_SWIM_BACK_SPEED, 1 + 8 + 4);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[2]);
- data.FlushBits();
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[6]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[2]);
- break;
- case MOVE_TURN_RATE:
- data.Initialize(SMSG_SPLINE_MOVE_SET_TURN_RATE, 1 + 8 + 4);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[0]);
- data.FlushBits();
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[0]);
- break;
- case MOVE_FLIGHT:
- data.Initialize(SMSG_SPLINE_MOVE_SET_FLIGHT_SPEED, 1 + 8 + 4);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[2]);
- data.FlushBits();
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[6]);
- data << float(GetSpeed(mtype));
- break;
- case MOVE_FLIGHT_BACK:
- data.Initialize(SMSG_SPLINE_MOVE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[7]);
- data.FlushBits();
- data.WriteByteSeq(guid[5]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[4]);
- break;
- case MOVE_PITCH_RATE:
- data.Initialize(SMSG_SPLINE_MOVE_SET_PITCH_RATE, 1 + 8 + 4);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[2]);
- data.FlushBits();
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[2]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[4]);
- break;
- default:
- sLog->outError(LOG_FILTER_UNITS, "Unit::SetSpeed: Unsupported move type (%d), data not sent to client.", mtype);
- return;
- }
+ // register forced speed changes for WorldSession::HandleForceSpeedChangeAck
+ // and do it only for real sent packets and use run for run/mounted as client expected
+ ++ToPlayer()->m_forced_speed_changes[mtype];
- SendMessageToSet(&data, true);
+ if (!isInCombat())
+ if (Pet* pet = ToPlayer()->GetPet())
+ pet->SetSpeed(mtype, m_speed_rate[mtype], forced);
}
- else
- {
- if (GetTypeId() == TYPEID_PLAYER)
- {
- // register forced speed changes for WorldSession::HandleForceSpeedChangeAck
- // and do it only for real sent packets and use run for run/mounted as client expected
- ++ToPlayer()->m_forced_speed_changes[mtype];
- if (!isInCombat())
- if (Pet* pet = ToPlayer()->GetPet())
- pet->SetSpeed(mtype, m_speed_rate[mtype], forced);
- }
+ static MovementStatusElements const speedVal = MSEExtraFloat;
+ Movement::ExtraMovementStatusElement extra(&speedVal);
+ extra.Data.floatData = GetSpeed(mtype);
- switch (mtype)
- {
- case MOVE_WALK:
- data.Initialize(SMSG_MOVE_SET_WALK_SPEED, 1 + 8 + 4 + 4);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[7]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[5]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[2]);
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- break;
- case MOVE_RUN:
- data.Initialize(SMSG_MOVE_SET_RUN_SPEED, 1 + 8 + 4 + 4);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[4]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[4]);
- data << uint32(m_movementCounter++);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[2]);
- break;
- case MOVE_RUN_BACK:
- data.Initialize(SMSG_MOVE_SET_RUN_BACK_SPEED, 1 + 8 + 4 + 4);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[7]);
- data.WriteByteSeq(guid[5]);
- data << uint32(m_movementCounter++);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[6]);
- break;
- case MOVE_SWIM:
- data.Initialize(SMSG_MOVE_SET_SWIM_SPEED, 1 + 8 + 4 + 4);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[6]);
- data.WriteByteSeq(guid[0]);
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[2]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[4]);
- break;
- case MOVE_SWIM_BACK:
- data.Initialize(SMSG_MOVE_SET_SWIM_BACK_SPEED, 1 + 8 + 4 + 4);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[7]);
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[1]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[2]);
- break;
- case MOVE_TURN_RATE:
- data.Initialize(SMSG_MOVE_SET_TURN_RATE, 1 + 8 + 4 + 4);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[3]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[2]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[0]);
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[4]);
- break;
- case MOVE_FLIGHT:
- data.Initialize(SMSG_MOVE_SET_FLIGHT_SPEED, 1 + 8 + 4 + 4);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[4]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[5]);
- data << float(GetSpeed(mtype));
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[4]);
- break;
- case MOVE_FLIGHT_BACK:
- data.Initialize(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4 + 4);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[4]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[5]);
- data.WriteByteSeq(guid[3]);
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[6]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[0]);
- data.WriteByteSeq(guid[5]);
- data.WriteByteSeq(guid[7]);
- break;
- case MOVE_PITCH_RATE:
- data.Initialize(SMSG_MOVE_SET_PITCH_RATE, 1 + 8 + 4 + 4);
- data.WriteBit(guid[1]);
- data.WriteBit(guid[2]);
- data.WriteBit(guid[6]);
- data.WriteBit(guid[7]);
- data.WriteBit(guid[0]);
- data.WriteBit(guid[3]);
- data.WriteBit(guid[5]);
- data.WriteBit(guid[4]);
- data << float(GetSpeed(mtype));
- data.WriteByteSeq(guid[6]);
- data.WriteByteSeq(guid[4]);
- data.WriteByteSeq(guid[0]);
- data << uint32(m_movementCounter++);
- data.WriteByteSeq(guid[1]);
- data.WriteByteSeq(guid[2]);
- data.WriteByteSeq(guid[7]);
- data.WriteByteSeq(guid[3]);
- data.WriteByteSeq(guid[5]);
- break;
- default:
- sLog->outError(LOG_FILTER_UNITS, "Unit::SetSpeed: Unsupported move type (%d), data not sent to client.", mtype);
- return;
- }
- SendMessageToSet(&data, true);
- }
+ Movement::PacketSender(this, moveTypeToOpcode[mtype][0], moveTypeToOpcode[mtype][1], moveTypeToOpcode[mtype][2], &extra).Send();
}
void Unit::setDeathState(DeathState s)
@@ -13663,13 +13280,6 @@ void Unit::StopMoving()
init.Launch();
}
-void Unit::SendMovementFlagUpdate(bool self /* = false */)
-{
- WorldPacket data;
- BuildHeartBeatMsg(&data);
- SendMessageToSet(&data, self);
-}
-
bool Unit::IsSitState() const
{
uint8 s = getStandState();
@@ -16440,13 +16050,7 @@ void Unit::NearTeleportTo(float x, float y, float z, float orientation, bool cas
}
}
-void Unit::BuildHeartBeatMsg(WorldPacket* data)
-{
- data->Initialize(MSG_MOVE_HEARTBEAT, 32);
- WriteMovementInfo(*data);
-}
-
-void Unit::ReadMovementInfo(WorldPacket& data, MovementInfo* mi)
+void Unit::ReadMovementInfo(WorldPacket& data, MovementInfo* mi, Movement::ExtraMovementStatusElement* extras /*= NULL*/)
{
if (GetTypeId() != TYPEID_PLAYER)
return;
@@ -16460,7 +16064,7 @@ void Unit::ReadMovementInfo(WorldPacket& data, MovementInfo* mi)
MovementStatusElements* sequence = GetMovementStatusElementsSequence(data.GetOpcode());
if (sequence == NULL)
{
- sLog->outError(LOG_FILTER_NETWORKIO, "WorldSession::ReadMovementInfo: No movement sequence found for opcode 0x%04X", uint32(data.GetOpcode()));
+ sLog->outError(LOG_FILTER_NETWORKIO, "Unit::ReadMovementInfo: No movement sequence found for opcode %s", GetOpcodeNameForLogging(data.GetOpcode()).c_str());
return;
}
@@ -16501,15 +16105,6 @@ void Unit::ReadMovementInfo(WorldPacket& data, MovementInfo* mi)
continue;
}
- if (element >= MSESpeedWalk &&
- element <= MSESpeedPitchRate)
- {
- /// @TODO: Possibly verify with current speed - but need to keep in mind that core
- /// might trigger multiple changes before client has a chance to reply so only check the last value
- data.read_skip<float>();
- continue;
- }
-
switch (element)
{
case MSEHasMovementFlags:
@@ -16590,7 +16185,7 @@ void Unit::ReadMovementInfo(WorldPacket& data, MovementInfo* mi)
break;
case MSETransportOrientation:
if (hasTransportData)
- mi->pos.SetOrientation(data.read<float>());
+ mi->t_pos.SetOrientation(data.read<float>());
break;
case MSETransportSeat:
if (hasTransportData)
@@ -16643,6 +16238,9 @@ void Unit::ReadMovementInfo(WorldPacket& data, MovementInfo* mi)
case MSEOneBit:
data.ReadBit();
break;
+ case MSEExtraElement:
+ extras->ReadNextElement(data);
+ break;
default:
ASSERT(false && "Incorrect sequence element detected at ReadMovementInfo");
break;
@@ -16729,7 +16327,7 @@ void Unit::ReadMovementInfo(WorldPacket& data, MovementInfo* mi)
#undef REMOVE_VIOLATING_FLAGS
}
-void Unit::WriteMovementInfo(WorldPacket& data)
+void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusElement* extras /*= NULL*/)
{
Unit const* mover = GetCharmerGUID() ? GetCharmer() : this;
if (Player const* player = ToPlayer())
@@ -16773,7 +16371,7 @@ void Unit::WriteMovementInfo(WorldPacket& data)
MovementStatusElements* sequence = GetMovementStatusElementsSequence(data.GetOpcode());
if (!sequence)
{
- sLog->outError(LOG_FILTER_NETWORKIO, "Unit::WriteMovementInfo: No movement sequence found for opcode 0x%04X", uint32(data.GetOpcode()));
+ sLog->outError(LOG_FILTER_NETWORKIO, "Unit::WriteMovementInfo: No movement sequence found for opcode %s", GetOpcodeNameForLogging(data.GetOpcode()).c_str());
return;
}
@@ -16814,13 +16412,6 @@ void Unit::WriteMovementInfo(WorldPacket& data)
continue;
}
- if (element >= MSESpeedWalk &&
- element <= MSESpeedPitchRate)
- {
- data << mover->GetSpeed(UnitMoveType(element - MSESpeedWalk));
- continue;
- }
-
switch (element)
{
case MSEHasMovementFlags:
@@ -16956,6 +16547,9 @@ void Unit::WriteMovementInfo(WorldPacket& data)
case MSEOneBit:
data.WriteBit(1);
break;
+ case MSEExtraElement:
+ extras->WriteNextElement(data);
+ break;
default:
ASSERT(false && "Incorrect sequence element detected at ReadMovementInfo");
break;
@@ -16965,7 +16559,7 @@ void Unit::WriteMovementInfo(WorldPacket& data)
void Unit::SendTeleportPacket(Position& pos)
{
- // MSG_MOVE_UPDATE_TELEPORT is sent to nearby players to signal the teleport
+ // SMSG_MOVE_UPDATE_TELEPORT is sent to nearby players to signal the teleport
// MSG_MOVE_TELEPORT is sent to self in order to trigger MSG_MOVE_TELEPORT_ACK and update the position server side
// This oldPos actually contains the destination position if the Unit is a Player.
@@ -16977,7 +16571,7 @@ void Unit::SendTeleportPacket(Position& pos)
ObjectGuid guid = GetGUID();
ObjectGuid transGuid = GetTransGUID();
- WorldPacket data(MSG_MOVE_UPDATE_TELEPORT, 38);
+ WorldPacket data(SMSG_MOVE_UPDATE_TELEPORT, 38);
WriteMovementInfo(data);
if (GetTypeId() == TYPEID_PLAYER)
@@ -17436,63 +17030,59 @@ bool Unit::SetHover(bool enable)
void Unit::SendMovementHover()
{
- if (GetTypeId() == TYPEID_PLAYER)
- ToPlayer()->SendMovementSetHover(HasUnitMovementFlag(MOVEMENTFLAG_HOVER));
-
- WorldPacket data(MSG_MOVE_HOVER, 64);
- WriteMovementInfo(data);
- SendMessageToSet(&data, false);
+ if (HasUnitMovementFlag(MOVEMENTFLAG_HOVER))
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_HOVER, SMSG_MOVE_SET_HOVER).Send();
+ else
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_UNSET_HOVER, SMSG_MOVE_UNSET_HOVER).Send();
}
void Unit::SendMovementWaterWalking()
{
- if (GetTypeId() == TYPEID_PLAYER)
- ToPlayer()->SendMovementSetWaterWalking(HasUnitMovementFlag(MOVEMENTFLAG_WATERWALKING));
-
- WorldPacket data(MSG_MOVE_WATER_WALK, 64);
- WriteMovementInfo(data);
- SendMessageToSet(&data, false);
+ if (HasUnitMovementFlag(MOVEMENTFLAG_WATERWALKING))
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_WATER_WALK, SMSG_MOVE_WATER_WALK).Send();
+ else
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_LAND_WALK, SMSG_MOVE_LAND_WALK).Send();
}
void Unit::SendMovementFeatherFall()
{
- if (GetTypeId() == TYPEID_PLAYER)
- ToPlayer()->SendMovementSetFeatherFall(HasUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW));
+ if (HasUnitMovementFlag(MOVEMENTFLAG_FALLING_SLOW))
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_FEATHER_FALL, SMSG_MOVE_FEATHER_FALL).Send();
+ else
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_NORMAL_FALL, SMSG_MOVE_NORMAL_FALL).Send();
+}
- WorldPacket data(MSG_MOVE_FEATHER_FALL, 64);
- WriteMovementInfo(data);
- SendMessageToSet(&data, false);
+void Unit::SendMovementCanFlyChange()
+{
+ if (HasUnitMovementFlag(MOVEMENTFLAG_CAN_FLY))
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_FLYING, SMSG_MOVE_SET_CAN_FLY).Send();
+ else
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_UNSET_FLYING, SMSG_MOVE_UNSET_CAN_FLY).Send();
}
-void Unit::SendMovementGravityChange()
+void Unit::SendMovementDisableGravity()
{
- WorldPacket data(MSG_MOVE_GRAVITY_CHNG, 64);
- WriteMovementInfo(data);
- SendMessageToSet(&data, false);
+ if (HasUnitMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY))
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_GRAVITY_DISABLE, SMSG_MOVE_GRAVITY_DISABLE).Send();
+ else
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_GRAVITY_ENABLE, SMSG_MOVE_GRAVITY_ENABLE).Send();
}
-void Unit::SendMovementCanFlyChange()
+void Unit::SendMovementWalkMode()
{
- /*!
- if ( a3->MoveFlags & MOVEMENTFLAG_CAN_FLY )
- {
- v4->MoveFlags |= 0x1000000u;
- result = 1;
- }
- else
- {
- if ( v4->MoveFlags & MOVEMENTFLAG_FLYING )
- CMovement::DisableFlying(v4);
- v4->MoveFlags &= 0xFEFFFFFFu;
- result = 1;
- }
- */
- if (GetTypeId() == TYPEID_PLAYER)
- ToPlayer()->SendMovementSetCanFly(CanFly());
+ ///@ TODO: Find proper opcode for walk mode setting in player mind controlling a player case
+ if (HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_WALK_MODE, SMSG_SPLINE_MOVE_SET_WALK_MODE).Send();
+ else
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_SET_RUN_MODE, SMSG_SPLINE_MOVE_SET_WALK_MODE).Send();
+}
- WorldPacket data(MSG_MOVE_UPDATE_CAN_FLY, 64);
- WriteMovementInfo(data);
- SendMessageToSet(&data, false);
+void Unit::SendMovementSwimming()
+{
+ if (HasUnitMovementFlag(MOVEMENTFLAG_SWIMMING))
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_START_SWIM, NULL_OPCODE).Send();
+ else
+ Movement::PacketSender(this, SMSG_SPLINE_MOVE_STOP_SWIM, NULL_OPCODE).Send();
}
bool Unit::IsSplineEnabled() const
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index d3125b5275a..a5eeb1613ff 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -354,6 +354,10 @@ class Vehicle;
class VehicleJoinEvent;
class TransportBase;
class SpellCastTargets;
+namespace Movement
+{
+ class ExtraMovementStatusElement;
+}
typedef std::list<Unit*> UnitList;
typedef std::list< std::pair<Aura*, uint8> > DispelChargesList;
@@ -1593,9 +1597,6 @@ class Unit : public WorldObject
void JumpTo(WorldObject* obj, float speedZ);
void MonsterMoveWithSpeed(float x, float y, float z, float speed, bool generatePath = false, bool forceDestination = false);
- //void SetFacing(float ori, WorldObject* obj = NULL);
- //void SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player = NULL);
- void SendMovementFlagUpdate(bool self = false);
/*! These methods send the same packet to the client in apply and unapply case.
The client-side interpretation of this packet depends on the presence of relevant movementflags
@@ -1605,8 +1606,10 @@ class Unit : public WorldObject
void SendMovementHover();
void SendMovementFeatherFall();
void SendMovementWaterWalking();
- void SendMovementGravityChange();
void SendMovementCanFlyChange();
+ void SendMovementDisableGravity();
+ void SendMovementWalkMode();
+ void SendMovementSwimming();
bool IsLevitating() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY);}
bool IsWalking() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_WALKING);}
@@ -1625,8 +1628,6 @@ class Unit : public WorldObject
void SendClearTarget();
- void BuildHeartBeatMsg(WorldPacket* data);
-
bool isAlive() const { return (m_deathState == ALIVE); }
bool isDying() const { return (m_deathState == JUST_DIED); }
bool isDead() const { return (m_deathState == DEAD || m_deathState == CORPSE); }
@@ -2111,8 +2112,8 @@ class Unit : public WorldObject
void _ExitVehicle(Position const* exitPosition = NULL);
void _EnterVehicle(Vehicle* vehicle, int8 seatId, AuraApplication const* aurApp = NULL);
- void ReadMovementInfo(WorldPacket& data, MovementInfo* mi);
- void WriteMovementInfo(WorldPacket& data);
+ void ReadMovementInfo(WorldPacket& data, MovementInfo* mi, Movement::ExtraMovementStatusElement* extras = NULL);
+ void WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusElement* extras = NULL);
bool isMoving() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_MASK_MOVING); }
bool isTurning() const { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_MASK_TURNING); }
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index cdc6ef1f2cb..90b8ae93661 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1054,7 +1054,8 @@ void WorldSession::HandlePlayerLogin(LoginQueryHolder* holder)
pCurrChar->CastSpell(pCurrChar, 20584, true, 0);// auras SPELL_AURA_INCREASE_SPEED(+speed in wisp form), SPELL_AURA_INCREASE_SWIM_SPEED(+swim speed in wisp form), SPELL_AURA_TRANSFORM (to wisp form)
pCurrChar->CastSpell(pCurrChar, 8326, true, 0); // auras SPELL_AURA_GHOST, SPELL_AURA_INCREASE_SPEED(why?), SPELL_AURA_INCREASE_SWIM_SPEED(why?)
- pCurrChar->SendMovementSetWaterWalking(true);
+ pCurrChar->AddUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
+ pCurrChar->SendMovementWaterWalking();
}
pCurrChar->ContinueTaxiFlight();
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 2b904537b1e..892a926d2c3 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -30,6 +30,7 @@
#include "WaypointMovementGenerator.h"
#include "InstanceSaveMgr.h"
#include "ObjectMgr.h"
+#include "MovementStructures.h"
void WorldSession::HandleMoveWorldportAckOpcode(WorldPacket& /*recvPacket*/)
{
@@ -425,28 +426,19 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPacket &recvData)
uint32 opcode = recvData.GetOpcode();
/* extract packet */
- uint64 guid;
- uint32 unk1;
- float newspeed;
-
- recvData.readPackGUID(guid);
+ MovementInfo movementInfo;
+ static MovementStatusElements const speedElement = MSEExtraFloat;
+ Movement::ExtraMovementStatusElement extras(&speedElement);
+ GetPlayer()->ReadMovementInfo(recvData, &movementInfo, &extras);
// now can skip not our packet
- if (_player->GetGUID() != guid)
+ if (_player->GetGUID() != movementInfo.guid)
{
recvData.rfinish(); // prevent warnings spam
return;
}
- // continue parse packet
-
- recvData >> unk1; // counter or moveEvent
-
- MovementInfo movementInfo;
- movementInfo.guid = guid;
- GetPlayer()->ReadMovementInfo(recvData, &movementInfo);
-
- recvData >> newspeed;
+ float newspeed = extras.Data.floatData;
/*----------------*/
// client ACK send one packet for mounted/run case and need skip all except last from its
@@ -615,3 +607,13 @@ void WorldSession::HandleSummonResponseOpcode(WorldPacket& recvData)
_player->SummonIfPossible(agree);
}
+
+void WorldSession::HandleSetCollisionHeightAck(WorldPacket& recvPacket)
+{
+ sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_MOVE_SET_COLLISION_HEIGHT_ACK");
+
+ static MovementStatusElements const heightElement = MSEExtraFloat;
+ Movement::ExtraMovementStatusElement extra(&heightElement);
+ MovementInfo movementInfo;
+ GetPlayer()->ReadMovementInfo(recvPacket, &movementInfo, &extra);
+}
diff --git a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp
index 81442570940..2c3d5b3bf61 100755
--- a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.cpp
@@ -19,6 +19,7 @@
#include "IdleMovementGenerator.h"
#include "CreatureAI.h"
#include "Creature.h"
+#include <G3D/g3dmath.h>
IdleMovementGenerator si_idleMovement;
@@ -44,25 +45,17 @@ void RotateMovementGenerator::Initialize(Unit* owner)
owner->SetInFront(owner->getVictim());
owner->AddUnitState(UNIT_STATE_ROTATING);
-
owner->AttackStop();
}
bool RotateMovementGenerator::Update(Unit* owner, uint32 diff)
{
float angle = owner->GetOrientation();
- if (m_direction == ROTATE_DIRECTION_LEFT)
- {
- angle += (float)diff * static_cast<float>(M_PI * 2) / m_maxDuration;
- while (angle >= static_cast<float>(M_PI * 2)) angle -= static_cast<float>(M_PI * 2);
- }
- else
- {
- angle -= (float)diff * static_cast<float>(M_PI * 2) / m_maxDuration;
- while (angle < 0) angle += static_cast<float>(M_PI * 2);
- }
- owner->SetOrientation(angle);
- owner->SendMovementFlagUpdate(); // this is a hack. we do not have anything correct to send in the beginning
+ angle += (float(diff) * static_cast<float>(M_PI * 2) / m_maxDuration) * (m_direction == ROTATE_DIRECTION_LEFT ? 1.0f : -1.0f);
+ angle = G3D::wrap(angle, 0.0f, float(G3D::twoPi()));
+
+ owner->SetOrientation(angle); // UpdateSplinePosition does not set orientation with UNIT_STATE_ROTATING
+ owner->SetFacingTo(angle); // Send spline movement to clients
if (m_duration > diff)
m_duration -= diff;
diff --git a/src/server/game/Movement/MovementStructures.cpp b/src/server/game/Movement/MovementStructures.cpp
new file mode 100644
index 00000000000..d1bc5f20b9f
--- /dev/null
+++ b/src/server/game/Movement/MovementStructures.cpp
@@ -0,0 +1,5010 @@
+/*
+* Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
+* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
+*
+* This program is free software; you can redistribute it and/or modify it
+* under the terms of the GNU General Public License as published by the
+* Free Software Foundation; either version 2 of the License, or (at your
+* option) any later version.
+*
+* This program is distributed in the hope that it will be useful, but WITHOUT
+* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+* more details.
+*
+* You should have received a copy of the GNU General Public License along
+* with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "MovementStructures.h"
+#include "Player.h"
+
+//4.3.4
+MovementStatusElements PlayerMoveSequence[] =
+{
+ MSEHasFallData,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasMovementFlags2,
+ MSEHasSpline,
+ MSEHasTimestamp,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEMovementFlags2,
+ MSEHasGuidByte7,
+ MSEHasMovementFlags,
+ MSEHasOrientation,
+ MSEHasGuidByte2,
+ MSEHasSplineElevation,
+ MSEZeroBit,
+ MSEHasGuidByte4,
+ MSEHasFallDirection,
+ MSEHasGuidByte5,
+ MSEHasTransportData,
+ MSEMovementFlags,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte2,
+ MSEHasPitch,
+ MSEGuidByte5,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSESplineElevation,
+ MSEGuidByte7,
+ MSEPositionY,
+ MSEGuidByte3,
+ MSETransportTime3,
+ MSETransportGuidByte6,
+ MSETransportSeat,
+ MSETransportGuidByte5,
+ MSETransportPositionX,
+ MSETransportGuidByte1,
+ MSETransportOrientation,
+ MSETransportGuidByte2,
+ MSETransportTime2,
+ MSETransportGuidByte0,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETransportGuidByte4,
+ MSETransportGuidByte3,
+ MSETransportPositionY,
+ MSETransportTime,
+ MSEGuidByte4,
+ MSEPositionX,
+ MSEGuidByte6,
+ MSEPositionZ,
+ MSETimestamp,
+ MSEGuidByte2,
+ MSEPitch,
+ MSEGuidByte0,
+ MSEOrientation,
+ MSEGuidByte1,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementFallLandSequence[] =
+{
+ MSEPositionX,
+ MSEPositionY,
+ MSEPositionZ,
+ MSEHasTransportData,
+ MSEHasGuidByte7,
+ MSEHasGuidByte1,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte3,
+ MSEHasSplineElevation,
+ MSEHasOrientation,
+ MSEHasGuidByte6,
+ MSEHasTimestamp,
+ MSEZeroBit,
+ MSEHasPitch,
+ MSEHasGuidByte4,
+ MSEHasSpline,
+ MSEHasGuidByte5,
+ MSEHasMovementFlags,
+ MSEHasFallData,
+ MSEHasGuidByte0,
+ MSEHasGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte7,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte5,
+ MSETransportTime,
+ MSETransportPositionZ,
+ MSETransportPositionY,
+ MSETransportPositionX,
+ MSETransportGuidByte5,
+ MSETransportTime3,
+ MSETransportGuidByte1,
+ MSETransportSeat,
+ MSETransportTime2,
+ MSETransportGuidByte4,
+ MSETransportOrientation,
+ MSETransportGuidByte0,
+ MSETransportGuidByte7,
+ MSETransportGuidByte3,
+ MSETransportGuidByte6,
+ MSETransportGuidByte2,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEPitch,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementHeartBeatSequence[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEHasPitch,
+ MSEHasTimestamp,
+ MSEHasFallData,
+ MSEHasMovementFlags2,
+ MSEHasTransportData,
+ MSEHasGuidByte7,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasOrientation,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEHasSplineElevation,
+ MSEHasSpline,
+ MSEZeroBit,
+ MSEHasGuidByte6,
+ MSEHasMovementFlags,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte5,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportOrientation,
+ MSETransportGuidByte4,
+ MSETransportPositionY,
+ MSETransportTime,
+ MSETransportPositionX,
+ MSETransportGuidByte5,
+ MSETransportGuidByte1,
+ MSETransportGuidByte3,
+ MSETransportGuidByte7,
+ MSETransportTime3,
+ MSETransportTime2,
+ MSETransportGuidByte2,
+ MSETransportGuidByte0,
+ MSETransportGuidByte6,
+ MSEOrientation,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEPitch,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementJumpSequence[] =
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasTimestamp,
+ MSEHasGuidByte5,
+ MSEHasMovementFlags,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte0,
+ MSEHasTransportData,
+ MSEHasGuidByte3,
+ MSEHasPitch,
+ MSEHasGuidByte7,
+ MSEHasFallData,
+ MSEHasSpline,
+ MSEHasOrientation,
+ MSEHasGuidByte1,
+ MSEHasSplineElevation,
+ MSEZeroBit,
+ MSEHasGuidByte2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime3,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte2,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSETransportGuidByte1,
+ MSETransportGuidByte7,
+ MSETransportPositionX,
+ MSETransportGuidByte4,
+ MSETransportTime3,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSETransportTime2,
+ MSETransportTime,
+ MSETransportGuidByte6,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportPositionY,
+ MSETransportGuidByte3,
+ MSETransportGuidByte2,
+ MSETransportGuidByte5,
+ MSEPitch,
+ MSETimestamp,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetFacingSequence[] =
+{
+ MSEPositionX,
+ MSEPositionY,
+ MSEPositionZ,
+ MSEHasGuidByte6,
+ MSEHasTransportData,
+ MSEHasGuidByte4,
+ MSEHasSpline,
+ MSEHasGuidByte0,
+ MSEHasOrientation,
+ MSEHasTimestamp,
+ MSEHasPitch,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasFallData,
+ MSEHasSplineElevation,
+ MSEHasMovementFlags,
+ MSEHasGuidByte3,
+ MSEZeroBit,
+ MSEHasGuidByte1,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSETransportGuidByte0,
+ MSETransportPositionX,
+ MSETransportGuidByte1,
+ MSETransportTime2,
+ MSETransportGuidByte4,
+ MSETransportPositionZ,
+ MSETransportOrientation,
+ MSETransportGuidByte2,
+ MSETransportTime3,
+ MSETransportGuidByte3,
+ MSETransportSeat,
+ MSETransportPositionY,
+ MSETransportGuidByte5,
+ MSETransportGuidByte6,
+ MSETransportTime,
+ MSETransportGuidByte7,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSESplineElevation,
+ MSEOrientation,
+ MSETimestamp,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetPitchSequence[] =
+{
+ MSEPositionX,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEHasFallData,
+ MSEHasMovementFlags,
+ MSEHasGuidByte1,
+ MSEHasOrientation,
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags2,
+ MSEHasTransportData,
+ MSEHasSplineElevation,
+ MSEHasGuidByte6,
+ MSEHasPitch,
+ MSEHasGuidByte4,
+ MSEHasSpline,
+ MSEHasGuidByte2,
+ MSEZeroBit,
+ MSEHasTimestamp,
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportTime2,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSETransportGuidByte4,
+ MSETransportGuidByte3,
+ MSETransportGuidByte6,
+ MSETransportOrientation,
+ MSETransportGuidByte1,
+ MSETransportTime3,
+ MSETransportTime,
+ MSETransportGuidByte2,
+ MSETransportPositionZ,
+ MSETransportGuidByte0,
+ MSETransportTime2,
+ MSETransportPositionY,
+ MSETransportGuidByte5,
+ MSETransportSeat,
+ MSETransportGuidByte7,
+ MSETransportPositionX,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEPitch,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartBackwardSequence[] =
+{
+ MSEPositionX,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEHasTransportData,
+ MSEHasGuidByte3,
+ MSEHasGuidByte0,
+ MSEHasGuidByte2,
+ MSEHasTimestamp,
+ MSEHasGuidByte7,
+ MSEHasPitch,
+ MSEZeroBit,
+ MSEHasMovementFlags,
+ MSEHasOrientation,
+ MSEHasSpline,
+ MSEHasMovementFlags2,
+ MSEHasFallData,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime3,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSETransportPositionZ,
+ MSETransportGuidByte2,
+ MSETransportTime3,
+ MSETransportGuidByte0,
+ MSETransportGuidByte5,
+ MSETransportPositionY,
+ MSETransportGuidByte1,
+ MSETransportPositionX,
+ MSETransportTime2,
+ MSETransportGuidByte4,
+ MSETransportOrientation,
+ MSETransportSeat,
+ MSETransportGuidByte7,
+ MSETransportTime,
+ MSETransportGuidByte6,
+ MSETransportGuidByte3,
+ MSEPitch,
+ MSETimestamp,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEOrientation,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartForwardSequence[] =
+{
+ MSEPositionY,
+ MSEPositionZ,
+ MSEPositionX,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEZeroBit,
+ MSEHasMovementFlags,
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasOrientation,
+ MSEHasGuidByte6,
+ MSEHasSpline,
+ MSEHasSplineElevation,
+ MSEHasGuidByte4,
+ MSEHasTransportData,
+ MSEHasTimestamp,
+ MSEHasPitch,
+ MSEHasMovementFlags2,
+ MSEHasFallData,
+ MSEMovementFlags,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime3,
+ MSEHasTransportTime2,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte0,
+ MSEFallVerticalSpeed,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSETransportGuidByte3,
+ MSETransportPositionY,
+ MSETransportPositionZ,
+ MSETransportGuidByte1,
+ MSETransportGuidByte4,
+ MSETransportGuidByte7,
+ MSETransportOrientation,
+ MSETransportGuidByte2,
+ MSETransportPositionX,
+ MSETransportGuidByte5,
+ MSETransportTime3,
+ MSETransportTime,
+ MSETransportGuidByte6,
+ MSETransportGuidByte0,
+ MSETransportSeat,
+ MSETransportTime2,
+ MSESplineElevation,
+ MSEPitch,
+ MSEOrientation,
+ MSETimestamp,
+
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartStrafeLeftSequence[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEHasSplineElevation,
+ MSEHasGuidByte5,
+ MSEHasPitch,
+ MSEHasGuidByte6,
+ MSEHasTimestamp,
+ MSEHasGuidByte1,
+ MSEZeroBit,
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasGuidByte2,
+ MSEHasFallData,
+ MSEHasOrientation,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte7,
+ MSEHasSpline,
+ MSEHasMovementFlags,
+ MSEHasTransportData,
+ MSEHasFallDirection,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte0,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSETransportSeat,
+ MSETransportGuidByte2,
+ MSETransportTime2,
+ MSETransportGuidByte3,
+ MSETransportPositionZ,
+ MSETransportTime3,
+ MSETransportGuidByte0,
+ MSETransportGuidByte7,
+ MSETransportPositionY,
+ MSETransportGuidByte5,
+ MSETransportGuidByte1,
+ MSETransportOrientation,
+ MSETransportTime,
+ MSETransportGuidByte6,
+ MSETransportGuidByte4,
+ MSETransportPositionX,
+ MSETimestamp,
+ MSEOrientation,
+ MSEPitch,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartStrafeRightSequence[] =
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasPitch,
+ MSEHasGuidByte1,
+ MSEHasOrientation,
+ MSEHasGuidByte4,
+ MSEHasSpline,
+ MSEZeroBit,
+ MSEHasGuidByte5,
+ MSEHasFallData,
+ MSEHasSplineElevation,
+ MSEHasTimestamp,
+ MSEHasMovementFlags,
+ MSEHasGuidByte2,
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags2,
+ MSEHasTransportData,
+ MSEHasGuidByte0,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime3,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSETransportGuidByte5,
+ MSETransportGuidByte1,
+ MSETransportGuidByte6,
+ MSETransportPositionY,
+ MSETransportOrientation,
+ MSETransportGuidByte0,
+ MSETransportGuidByte2,
+ MSETransportSeat,
+ MSETransportPositionX,
+ MSETransportTime3,
+ MSETransportTime,
+ MSETransportGuidByte4,
+ MSETransportGuidByte7,
+ MSETransportTime2,
+ MSETransportPositionZ,
+ MSETransportGuidByte3,
+ MSEPitch,
+ MSEOrientation,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartTurnLeftSequence[] =
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEZeroBit,
+ MSEHasGuidByte1,
+ MSEHasOrientation,
+ MSEHasSpline,
+ MSEHasMovementFlags,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasTransportData,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasPitch,
+ MSEHasTimestamp,
+ MSEHasFallData,
+ MSEMovementFlags2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte6,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSETransportGuidByte0,
+ MSETransportPositionX,
+ MSETransportTime,
+ MSETransportSeat,
+ MSETransportPositionZ,
+ MSETransportGuidByte4,
+ MSETransportOrientation,
+ MSETransportGuidByte2,
+ MSETransportGuidByte6,
+ MSETransportGuidByte1,
+ MSETransportGuidByte3,
+ MSETransportPositionY,
+ MSETransportTime3,
+ MSETransportTime2,
+ MSETransportGuidByte5,
+ MSETransportGuidByte7,
+ MSETimestamp,
+ MSEPitch,
+ MSEOrientation,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartTurnRightSequence[] =
+{
+ MSEPositionX,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasMovementFlags,
+ MSEHasSpline,
+ MSEHasGuidByte0,
+ MSEHasOrientation,
+ MSEHasTransportData,
+ MSEHasGuidByte7,
+ MSEZeroBit,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte1,
+ MSEHasTimestamp,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasSplineElevation,
+ MSEHasPitch,
+ MSEHasFallData,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportTime3,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte5,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSETransportPositionY,
+ MSETransportGuidByte0,
+ MSETransportGuidByte4,
+ MSETransportGuidByte1,
+ MSETransportGuidByte6,
+ MSETransportGuidByte2,
+ MSETransportSeat,
+ MSETransportOrientation,
+ MSETransportGuidByte5,
+ MSETransportTime3,
+ MSETransportPositionZ,
+ MSETransportPositionX,
+ MSETransportTime,
+ MSETransportGuidByte7,
+ MSETransportGuidByte3,
+ MSETransportTime2,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEPitch,
+ MSEOrientation,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStopSequence[] =
+{
+ MSEPositionX,
+ MSEPositionY,
+ MSEPositionZ,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEHasSpline,
+ MSEHasOrientation,
+ MSEHasGuidByte7,
+ MSEHasMovementFlags,
+ MSEHasGuidByte5,
+ MSEHasFallData,
+ MSEHasMovementFlags2,
+ MSEHasTransportData,
+ MSEHasTimestamp,
+ MSEHasGuidByte4,
+ MSEHasGuidByte1,
+ MSEZeroBit,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEHasPitch,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte2,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSETransportGuidByte4,
+ MSETransportGuidByte7,
+ MSETransportTime,
+ MSETransportSeat,
+ MSETransportPositionZ,
+ MSETransportTime3,
+ MSETransportGuidByte2,
+ MSETransportGuidByte0,
+ MSETransportPositionY,
+ MSETransportGuidByte1,
+ MSETransportGuidByte3,
+ MSETransportTime2,
+ MSETransportPositionX,
+ MSETransportOrientation,
+ MSETransportGuidByte5,
+ MSETransportGuidByte6,
+ MSETimestamp,
+ MSEOrientation,
+ MSEPitch,
+ MSESplineElevation,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStopStrafeSequence[] =
+{
+ MSEPositionY,
+ MSEPositionZ,
+ MSEPositionX,
+ MSEHasPitch,
+ MSEHasTimestamp,
+ MSEHasGuidByte2,
+ MSEHasFallData,
+ MSEHasGuidByte7,
+ MSEHasSplineElevation,
+ MSEHasGuidByte3,
+ MSEHasOrientation,
+ MSEHasMovementFlags2,
+ MSEHasTransportData,
+ MSEHasMovementFlags,
+ MSEHasSpline,
+ MSEHasGuidByte0,
+ MSEZeroBit,
+ MSEHasGuidByte6,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime3,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSETransportSeat,
+ MSETransportGuidByte6,
+ MSETransportPositionZ,
+ MSETransportTime3,
+ MSETransportGuidByte1,
+ MSETransportGuidByte3,
+ MSETransportGuidByte2,
+ MSETransportGuidByte4,
+ MSETransportGuidByte5,
+ MSETransportTime,
+ MSETransportOrientation,
+ MSETransportPositionX,
+ MSETransportGuidByte0,
+ MSETransportPositionY,
+ MSETransportTime2,
+ MSETransportGuidByte7,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEPitch,
+ MSETimestamp,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStopTurnSequence[] =
+{
+ MSEPositionX,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEHasGuidByte5,
+ MSEHasGuidByte4,
+ MSEHasFallData,
+ MSEZeroBit,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasSpline,
+ MSEHasMovementFlags,
+ MSEHasGuidByte2,
+ MSEHasGuidByte6,
+ MSEHasPitch,
+ MSEHasTransportData,
+ MSEHasGuidByte3,
+ MSEHasSplineElevation,
+ MSEHasTimestamp,
+ MSEHasMovementFlags2,
+ MSEHasOrientation,
+ MSEHasGuidByte7,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSESplineElevation,
+ MSETransportPositionX,
+ MSETransportGuidByte5,
+ MSETransportSeat,
+ MSETransportGuidByte2,
+ MSETransportGuidByte3,
+ MSETransportOrientation,
+ MSETransportTime2,
+ MSETransportTime3,
+ MSETransportGuidByte7,
+ MSETransportGuidByte1,
+ MSETransportGuidByte0,
+ MSETransportGuidByte4,
+ MSETransportPositionY,
+ MSETransportPositionZ,
+ MSETransportTime,
+ MSETransportGuidByte6,
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSETimestamp,
+ MSEPitch,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartAscendSequence[] =
+{
+ MSEPositionX,
+ MSEPositionY,
+ MSEPositionZ,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte7,
+ MSEZeroBit,
+ MSEHasGuidByte5,
+ MSEHasTransportData,
+ MSEHasGuidByte2,
+ MSEHasSplineElevation,
+ MSEHasFallData,
+ MSEHasSpline,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte6,
+ MSEHasMovementFlags,
+ MSEHasPitch,
+ MSEHasTimestamp,
+ MSEHasOrientation,
+ MSEHasGuidByte4,
+ MSEMovementFlags,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSETransportGuidByte3,
+ MSETransportGuidByte5,
+ MSETransportGuidByte4,
+ MSETransportSeat,
+ MSETransportGuidByte2,
+ MSETransportOrientation,
+ MSETransportPositionY,
+ MSETransportGuidByte7,
+ MSETransportTime2,
+ MSETransportPositionZ,
+ MSETransportTime3,
+ MSETransportGuidByte6,
+ MSETransportTime,
+ MSETransportGuidByte0,
+ MSETransportGuidByte1,
+ MSETransportPositionX,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEOrientation,
+ MSEPitch,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartDescendSequence[] =
+{
+ MSEPositionY,
+ MSEPositionZ,
+ MSEPositionX,
+ MSEHasGuidByte0,
+ MSEHasPitch,
+ MSEHasFallData,
+ MSEHasGuidByte4,
+ MSEHasOrientation,
+ MSEHasTimestamp,
+ MSEHasMovementFlags2,
+ MSEHasMovementFlags,
+ MSEHasGuidByte6,
+ MSEZeroBit,
+ MSEHasGuidByte1,
+ MSEHasTransportData,
+ MSEHasSpline,
+ MSEHasSplineElevation,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte5,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEPitch,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportTime3,
+ MSETransportGuidByte6,
+ MSETransportTime2,
+ MSETransportGuidByte1,
+ MSETransportTime,
+ MSETransportGuidByte4,
+ MSETransportPositionY,
+ MSETransportPositionX,
+ MSETransportGuidByte7,
+ MSETransportGuidByte3,
+ MSETransportGuidByte5,
+ MSETransportGuidByte2,
+ MSETransportOrientation,
+ MSETransportGuidByte0,
+ MSEFallTime,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSETimestamp,
+ MSEOrientation,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartSwimSequence[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEHasGuidByte3,
+ MSEHasSplineElevation,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEZeroBit,
+ MSEHasPitch,
+ MSEHasGuidByte0,
+ MSEHasOrientation,
+ MSEHasMovementFlags,
+ MSEHasFallData,
+ MSEHasGuidByte5,
+ MSEHasTransportData,
+ MSEHasMovementFlags2,
+ MSEHasTimestamp,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasSpline,
+ MSEHasGuidByte2,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime3,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEPitch,
+ MSETransportTime2,
+ MSETransportGuidByte2,
+ MSETransportPositionY,
+ MSETransportGuidByte3,
+ MSETransportTime,
+ MSETransportPositionX,
+ MSETransportOrientation,
+ MSETransportTime3,
+ MSETransportGuidByte6,
+ MSETransportGuidByte5,
+ MSETransportGuidByte4,
+ MSETransportPositionZ,
+ MSETransportGuidByte1,
+ MSETransportGuidByte7,
+ MSETransportGuidByte0,
+ MSETransportSeat,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEOrientation,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStopSwimSequence[] =
+{
+ MSEPositionX,
+ MSEPositionY,
+ MSEPositionZ,
+ MSEHasSpline,
+ MSEHasPitch,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEHasGuidByte7,
+ MSEHasSplineElevation,
+ MSEHasMovementFlags,
+ MSEHasGuidByte4,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte2,
+ MSEHasGuidByte6,
+ MSEHasTransportData,
+ MSEHasOrientation,
+ MSEZeroBit,
+ MSEHasTimestamp,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasFallData,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte5,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSETransportTime3,
+ MSETransportGuidByte4,
+ MSETransportTime,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportGuidByte3,
+ MSETransportGuidByte2,
+ MSETransportPositionY,
+ MSETransportGuidByte7,
+ MSETransportGuidByte1,
+ MSETransportGuidByte6,
+ MSETransportGuidByte5,
+ MSETransportTime2,
+ MSETransportPositionX,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSEFallVerticalSpeed,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSETimestamp,
+ MSEPitch,
+ MSEOrientation,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStopAscendSequence[] =
+{
+ MSEPositionZ,
+ MSEPositionY,
+ MSEPositionX,
+ MSEHasGuidByte3,
+ MSEHasGuidByte2,
+ MSEHasFallData,
+ MSEHasGuidByte7,
+ MSEHasOrientation,
+ MSEHasPitch,
+ MSEHasSpline,
+ MSEZeroBit,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasMovementFlags,
+ MSEHasGuidByte0,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEHasTransportData,
+ MSEHasMovementFlags2,
+ MSEHasTimestamp,
+ MSEHasGuidByte5,
+ MSEHasTransportTime2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSETransportGuidByte5,
+ MSETransportPositionY,
+ MSETransportGuidByte7,
+ MSETransportGuidByte2,
+ MSETransportGuidByte6,
+ MSETransportTime2,
+ MSETransportTime3,
+ MSETransportOrientation,
+ MSETransportGuidByte3,
+ MSETransportGuidByte4,
+ MSETransportSeat,
+ MSETransportGuidByte1,
+ MSETransportTime,
+ MSETransportGuidByte0,
+ MSETransportPositionX,
+ MSETransportPositionZ,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEPitch,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStopPitchSequence[] =
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEHasFallData,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasPitch,
+ MSEHasSpline,
+ MSEHasOrientation,
+ MSEZeroBit,
+ MSEHasMovementFlags2,
+ MSEHasSplineElevation,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasTimestamp,
+ MSEHasTransportData,
+ MSEHasMovementFlags,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSETimestamp,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSETransportGuidByte5,
+ MSETransportGuidByte2,
+ MSETransportTime2,
+ MSETransportPositionX,
+ MSETransportOrientation,
+ MSETransportGuidByte6,
+ MSETransportGuidByte3,
+ MSETransportGuidByte1,
+ MSETransportPositionZ,
+ MSETransportTime3,
+ MSETransportGuidByte0,
+ MSETransportGuidByte4,
+ MSETransportTime,
+ MSETransportPositionY,
+ MSETransportSeat,
+ MSETransportGuidByte7,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartPitchDownSequence[] =
+{
+ MSEPositionX,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEHasMovementFlags,
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasPitch,
+ MSEZeroBit,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasTimestamp,
+ MSEHasSplineElevation,
+ MSEHasMovementFlags2,
+ MSEHasTransportData,
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEHasSpline,
+ MSEHasOrientation,
+ MSEHasFallData,
+ MSEHasGuidByte2,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSETransportTime3,
+ MSETransportGuidByte3,
+ MSETransportTime2,
+ MSETransportGuidByte5,
+ MSETransportGuidByte1,
+ MSETransportPositionY,
+ MSETransportGuidByte6,
+ MSETransportGuidByte4,
+ MSETransportTime,
+ MSETransportPositionZ,
+ MSETransportPositionX,
+ MSETransportGuidByte0,
+ MSETransportSeat,
+ MSETransportGuidByte2,
+ MSETransportGuidByte7,
+ MSETransportOrientation,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEPitch,
+ MSEOrientation,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementStartPitchUpSequence[] =
+{
+ MSEPositionZ,
+ MSEPositionY,
+ MSEPositionX,
+ MSEHasGuidByte4,
+ MSEHasMovementFlags,
+ MSEHasMovementFlags2,
+ MSEHasSpline,
+ MSEHasGuidByte2,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEZeroBit,
+ MSEHasSplineElevation,
+ MSEHasFallData,
+ MSEHasGuidByte0,
+ MSEHasTransportData,
+ MSEHasGuidByte1,
+ MSEHasGuidByte5,
+ MSEHasPitch,
+ MSEHasTimestamp,
+ MSEHasOrientation,
+ MSEHasGuidByte7,
+ MSEMovementFlags2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSETransportPositionX,
+ MSETransportGuidByte1,
+ MSETransportGuidByte3,
+ MSETransportGuidByte2,
+ MSETransportGuidByte0,
+ MSETransportTime,
+ MSETransportPositionZ,
+ MSETransportOrientation,
+ MSETransportGuidByte7,
+ MSETransportTime2,
+ MSETransportSeat,
+ MSETransportGuidByte6,
+ MSETransportGuidByte5,
+ MSETransportTime3,
+ MSETransportPositionY,
+ MSETransportGuidByte4,
+ MSEFallTime,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSEOrientation,
+ MSESplineElevation,
+ MSEPitch,
+ MSETimestamp,
+ MSEEnd,
+};
+
+MovementStatusElements MoveChngTransport[]=
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasGuidByte2,
+ MSEHasTransportData,
+ MSEHasSpline,
+ MSEHasOrientation,
+ MSEHasGuidByte6,
+ MSEHasTimestamp,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasPitch,
+ MSEZeroBit,
+ MSEHasGuidByte3,
+ MSEHasSplineElevation,
+ MSEHasGuidByte1,
+ MSEHasFallData,
+ MSEHasMovementFlags,
+ MSEHasMovementFlags2,
+
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte3,
+
+ MSETransportPositionY,
+ MSETransportSeat,
+ MSETransportGuidByte1,
+ MSETransportGuidByte0,
+ MSETransportGuidByte2,
+ MSETransportGuidByte3,
+ MSETransportGuidByte6,
+ MSETransportPositionZ,
+ MSETransportPositionX,
+ MSETransportTime3,
+ MSETransportTime,
+ MSETransportGuidByte7,
+ MSETransportGuidByte5,
+ MSETransportGuidByte4,
+ MSETransportOrientation,
+ MSETransportTime2,
+
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+
+ MSEOrientation,
+ MSEPitch,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEEnd,
+};
+
+// 4.3.4
+MovementStatusElements MoveSplineDone[] =
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasGuidByte6,
+ MSEHasOrientation,
+ MSEHasFallData,
+ MSEHasTimestamp,
+ MSEHasGuidByte2,
+ MSEHasSplineElevation,
+ MSEHasGuidByte4,
+ MSEHasTransportData,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags,
+ MSEHasGuidByte0,
+ MSEZeroBit,
+ MSEHasGuidByte1,
+ MSEHasGuidByte5,
+ MSEHasPitch,
+ MSEHasSpline,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte7,
+
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte0,
+
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte3,
+
+ MSEFallVerticalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+
+ MSEPitch,
+ MSEOrientation,
+
+ MSETransportGuidByte1,
+ MSETransportTime3,
+ MSETransportGuidByte7,
+ MSETransportTime,
+ MSETransportPositionY,
+ MSETransportPositionX,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportOrientation,
+ MSETransportGuidByte0,
+ MSETransportTime2,
+ MSETransportGuidByte2,
+ MSETransportGuidByte3,
+ MSETransportGuidByte5,
+ MSETransportGuidByte6,
+ MSETransportGuidByte4,
+
+ MSETimestamp,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+// 4.3.4
+MovementStatusElements MoveNotActiveMover[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEHasMovementFlags2,
+ MSEHasTransportData,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEHasGuidByte3,
+ MSEZeroBit,
+ MSEHasTimestamp,
+ MSEHasGuidByte0,
+ MSEHasOrientation,
+ MSEHasGuidByte5,
+ MSEHasPitch,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasSpline,
+ MSEHasGuidByte2,
+ MSEHasFallData,
+ MSEHasMovementFlags,
+
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte3,
+
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte3,
+
+ MSEFallVerticalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+
+ MSETransportTime3,
+ MSETransportGuidByte1,
+ MSETransportTime2,
+ MSETransportOrientation,
+ MSETransportGuidByte0,
+ MSETransportSeat,
+ MSETransportGuidByte4,
+ MSETransportGuidByte6,
+ MSETransportGuidByte3,
+ MSETransportGuidByte5,
+ MSETransportPositionY,
+ MSETransportPositionX,
+ MSETransportGuidByte2,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETransportTime,
+
+ MSETimestamp,
+ MSESplineElevation,
+ MSEPitch,
+ MSEOrientation,
+
+ MSEEnd,
+};
+
+// 4.3.4
+MovementStatusElements DismissControlledVehicle[] =
+{
+ MSEPositionY,
+ MSEPositionZ,
+ MSEPositionX,
+ MSEHasSplineElevation,
+ MSEHasFallData,
+ MSEHasTransportData,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte2,
+ MSEHasOrientation,
+ MSEHasGuidByte0,
+ MSEHasGuidByte6,
+ MSEHasPitch,
+ MSEHasTimestamp,
+ MSEHasGuidByte1,
+ MSEZeroBit,
+ MSEHasSpline,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags,
+ MSEHasGuidByte5,
+
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime2,
+
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte0,
+
+ MSETimestamp,
+
+ MSETransportTime3,
+ MSETransportGuidByte4,
+ MSETransportGuidByte7,
+ MSETransportTime2,
+ MSETransportGuidByte6,
+ MSETransportTime,
+ MSETransportPositionZ,
+ MSETransportGuidByte0,
+ MSETransportPositionX,
+ MSETransportGuidByte3,
+ MSETransportSeat,
+ MSETransportPositionY,
+ MSETransportOrientation,
+ MSETransportGuidByte1,
+ MSETransportGuidByte5,
+ MSETransportGuidByte2,
+
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+
+ MSEOrientation,
+ MSESplineElevation,
+ MSEPitch,
+ MSEEnd,
+};
+
+// 4.3.4
+MovementStatusElements MoveUpdateTeleport[] =
+{
+ MSEPositionZ,
+ MSEPositionY,
+ MSEPositionX,
+ MSEHasOrientation,
+
+ MSEHasSpline,
+ MSEHasMovementFlags,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasFallData,
+ MSEHasGuidByte0,
+ MSEHasTransportData,
+ MSEHasGuidByte5,
+
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte2,
+
+ MSEZeroBit,
+
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasPitch,
+ MSEHasMovementFlags2,
+ MSEHasTimestamp,
+
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEHasSplineElevation,
+ MSEMovementFlags,
+ MSEHasGuidByte1,
+
+ MSEGuidByte7,
+ MSETransportGuidByte3,
+ MSETransportGuidByte4,
+ MSETransportOrientation,
+ MSETransportTime3,
+ MSETransportGuidByte1,
+ MSETransportTime2,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETransportGuidByte0,
+ MSETransportGuidByte6,
+ MSETransportGuidByte5,
+ MSETransportGuidByte2,
+ MSETransportSeat,
+ MSETransportTime,
+ MSETransportPositionY,
+ MSETransportPositionX,
+
+ MSEGuidByte6,
+ MSEPitch,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte1,
+
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSETimestamp,
+ MSEGuidByte0,
+
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetRunMode[] =
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasTimestamp,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte1,
+ MSEHasSpline,
+ MSEHasMovementFlags,
+ MSEHasGuidByte7,
+ MSEHasTransportData,
+ MSEZeroBit,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasSplineElevation,
+ MSEHasGuidByte5,
+ MSEHasPitch,
+ MSEHasGuidByte6,
+ MSEHasGuidByte4,
+ MSEHasFallData,
+ MSEHasOrientation,
+ MSEHasGuidByte2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte2,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSEPitch,
+ MSETransportTime2,
+ MSETransportGuidByte3,
+ MSETransportPositionX,
+ MSETransportSeat,
+ MSETransportGuidByte5,
+ MSETransportGuidByte1,
+ MSETransportPositionZ,
+ MSETransportGuidByte2,
+ MSETransportGuidByte7,
+ MSETransportOrientation,
+ MSETransportGuidByte4,
+ MSETransportTime,
+ MSETransportTime3,
+ MSETransportGuidByte0,
+ MSETransportPositionY,
+ MSETransportGuidByte6,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetWalkMode[] =
+{
+ MSEPositionY,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasGuidByte6,
+ MSEHasSpline,
+ MSEHasTimestamp,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasMovementFlags,
+ MSEHasPitch,
+ MSEHasGuidByte7,
+ MSEHasSplineElevation,
+ MSEHasGuidByte4,
+ MSEHasOrientation,
+ MSEHasTransportData,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEZeroBit,
+ MSEHasMovementFlags2,
+ MSEHasFallData,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte7,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSETransportGuidByte2,
+ MSETransportGuidByte5,
+ MSETransportSeat,
+ MSETransportPositionZ,
+ MSETransportGuidByte3,
+ MSETransportGuidByte6,
+ MSETransportGuidByte0,
+ MSETransportTime,
+ MSETransportGuidByte4,
+ MSETransportTime2,
+ MSETransportOrientation,
+ MSETransportPositionX,
+ MSETransportTime3,
+ MSETransportGuidByte7,
+ MSETransportPositionY,
+ MSETransportGuidByte1,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSESplineElevation,
+ MSEPitch,
+ MSETimestamp,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetCanFly[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEHasTransportData,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasFallData,
+ MSEHasGuidByte0,
+ MSEHasMovementFlags,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte5,
+ MSEHasTimestamp,
+ MSEHasSplineElevation,
+ MSEHasSpline,
+ MSEHasOrientation,
+ MSEHasGuidByte7,
+ MSEZeroBit,
+ MSEHasPitch,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte5,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSETransportPositionZ,
+ MSETransportGuidByte3,
+ MSETransportGuidByte5,
+ MSETransportGuidByte4,
+ MSETransportSeat,
+ MSETransportPositionX,
+ MSETransportGuidByte2,
+ MSETransportTime2,
+ MSETransportPositionY,
+ MSETransportGuidByte1,
+ MSETransportTime,
+ MSETransportGuidByte7,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSETransportGuidByte6,
+ MSETransportTime3,
+ MSESplineElevation,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEPitch,
+ MSETimestamp,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetCanTransitionBetweenSwimAndFlyAck[] =
+{
+ MSEPositionZ,
+ MSEPositionY,
+ MSECounter,
+ MSEPositionX,
+ MSEHasGuidByte3,
+ MSEHasOrientation,
+ MSEHasTransportData,
+ MSEHasMovementFlags,
+ MSEHasMovementFlags2,
+ MSEHasSplineElevation,
+ MSEHasTimestamp,
+ MSEHasSpline,
+ MSEZeroBit,
+ MSEHasFallData,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasPitch,
+ MSEHasGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte1,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+ MSETransportPositionY,
+ MSETransportPositionZ,
+ MSETransportGuidByte5,
+ MSETransportGuidByte1,
+ MSETransportGuidByte4,
+ MSETransportTime,
+ MSETransportSeat,
+ MSETransportGuidByte3,
+ MSETransportGuidByte0,
+ MSETransportGuidByte2,
+ MSETransportGuidByte7,
+ MSETransportPositionX,
+ MSETransportTime2,
+ MSETransportGuidByte6,
+ MSETransportOrientation,
+ MSETransportTime3,
+ MSEPitch,
+ MSEOrientation,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementUpdateSwimSpeed[] =
+{
+ MSEHasMovementFlags,
+ MSEHasGuidByte2,
+ MSEMovementFlags,
+ MSEHasGuidByte3,
+ MSEZeroBit,
+ MSEHasGuidByte7,
+ MSEHasFallDirection,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasOrientation,
+ MSEHasGuidByte1,
+ MSETransportGuidByte2,
+ MSETransportPositionX,
+ MSETransportGuidByte6,
+ MSETransportOrientation,
+ MSETransportGuidByte0,
+ MSETransportGuidByte4,
+ MSETransportPositionY,
+ MSETransportTime,
+ MSETransportGuidByte1,
+ MSETransportGuidByte7,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportGuidByte3,
+ MSETransportGuidByte5,
+ MSEPositionX,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEGuidByte7,
+ MSETimestamp,
+ MSEPositionY,
+ MSEPositionZ,
+ MSEExtraElement,
+ MSEGuidByte4,
+ MSEOrientation,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementUpdateRunSpeed[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEExtraElement,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEHasMovementFlags,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEMovementFlags,
+ MSEHasGuidByte7,
+ MSEHasGuidByte0,
+ MSEHasOrientation,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte0,
+ MSEHasFallDirection,
+ MSEHasGuidByte4,
+ MSEZeroBit,
+ MSETransportGuidByte4,
+ MSETransportGuidByte5,
+ MSETransportPositionX,
+ MSETransportOrientation,
+ MSETransportGuidByte1,
+ MSETransportGuidByte0,
+ MSETransportGuidByte6,
+ MSETransportTime,
+ MSETransportGuidByte7,
+ MSETransportSeat,
+ MSETransportPositionY,
+ MSETransportGuidByte3,
+ MSETransportGuidByte2,
+ MSETransportPositionZ,
+ MSETimestamp,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEPitch,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEOrientation,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementUpdateFlightSpeed[] =
+{
+ MSEPositionY,
+ MSEExtraElement,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasMovementFlags,
+ MSEHasGuidByte4,
+ MSEZeroBit,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEMovementFlags,
+ MSEHasGuidByte2,
+ MSEHasOrientation,
+ MSEHasGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEHasFallDirection,
+ MSEHasGuidByte0,
+ MSEPitch,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSETransportOrientation,
+ MSETransportTime,
+ MSETransportGuidByte5,
+ MSETransportGuidByte4,
+ MSETransportGuidByte6,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETransportGuidByte0,
+ MSETransportGuidByte2,
+ MSETransportGuidByte3,
+ MSETransportPositionY,
+ MSETransportGuidByte1,
+ MSETransportSeat,
+ MSETransportPositionX,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSETimestamp,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEOrientation,
+ MSEGuidByte3,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementUpdateCollisionHeight[] =
+{
+ MSEPositionZ,
+ MSEExtraElement,
+ MSEPositionX,
+ MSEPositionY,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasOrientation,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEZeroBit,
+ MSEHasGuidByte2,
+ MSEHasMovementFlags,
+ MSEHasFallDirection,
+ MSEHasGuidByte1,
+ MSEMovementFlags,
+ MSEGuidByte3,
+ MSETransportGuidByte7,
+ MSETransportTime,
+ MSETransportGuidByte4,
+ MSETransportGuidByte5,
+ MSETransportOrientation,
+ MSETransportPositionX,
+ MSETransportGuidByte6,
+ MSETransportGuidByte0,
+ MSETransportPositionY,
+ MSETransportGuidByte2,
+ MSETransportPositionZ,
+ MSETransportGuidByte3,
+ MSETransportGuidByte1,
+ MSETransportSeat,
+ MSEPitch,
+ MSEGuidByte6,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEGuidByte7,
+ MSEOrientation,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSETimestamp,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementForceRunSpeedChangeAck[] =
+{
+ MSECounter,
+ MSEPositionX,
+ MSEExtraElement,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasGuidByte1,
+ MSEHasGuidByte7,
+ MSEHasOrientation,
+ MSEHasFallData,
+ MSEHasGuidByte0,
+ MSEHasSpline,
+ MSEHasTransportData,
+ MSEHasTimestamp,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte6,
+ MSEZeroBit,
+ MSEHasSplineElevation,
+ MSEHasPitch,
+ MSEHasGuidByte5,
+ MSEHasMovementFlags,
+ MSEHasGuidByte3,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte4,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSETransportPositionZ,
+ MSETransportGuidByte6,
+ MSETransportGuidByte1,
+ MSETransportPositionY,
+ MSETransportGuidByte0,
+ MSETransportGuidByte5,
+ MSETransportTime2,
+ MSETransportPositionX,
+ MSETransportTime,
+ MSETransportGuidByte7,
+ MSETransportOrientation,
+ MSETransportGuidByte3,
+ MSETransportTime3,
+ MSETransportGuidByte2,
+ MSETransportSeat,
+ MSETransportGuidByte4,
+ MSEFallVerticalSpeed,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSESplineElevation,
+ MSEPitch,
+ MSETimestamp,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetCollisionHeightAck[] =
+{
+ MSEExtraElement,
+ MSEPositionX,
+ MSEPositionZ,
+ MSECounter,
+ MSEPositionY,
+ MSEHasGuidByte6,
+ MSEHasGuidByte4,
+ MSEZeroBit,
+ MSEZeroBit,
+ MSEHasPitch,
+ MSEHasGuidByte5,
+ MSEZeroBit,
+ MSEHasGuidByte2,
+ MSEHasGuidByte1,
+ MSEHasFallData,
+ MSEHasGuidByte3,
+ MSEHasSpline,
+ MSEHasGuidByte7,
+ MSEHasMovementFlags,
+ MSEHasTransportData,
+ MSEHasTimestamp,
+ MSEHasSplineElevation,
+ MSEHasMovementFlags2,
+ MSEHasOrientation,
+ MSEHasGuidByte0,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSETransportPositionX,
+ MSETransportGuidByte4,
+ MSETransportTime2,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSETransportPositionY,
+ MSETransportGuidByte7,
+ MSETransportSeat,
+ MSETransportGuidByte5,
+ MSETransportGuidByte2,
+ MSETransportTime,
+ MSETransportGuidByte6,
+ MSETransportGuidByte3,
+ MSETransportGuidByte1,
+ MSETransportTime3,
+ MSETransportPositionZ,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementForceFlightSpeedChangeAck[] =
+{
+ MSECounter,
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEExtraElement,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEZeroBit,
+ MSEHasMovementFlags,
+ MSEHasSplineElevation,
+ MSEHasGuidByte3,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte7,
+ MSEHasTransportData,
+ MSEHasGuidByte0,
+ MSEHasFallData,
+ MSEHasTimestamp,
+ MSEHasPitch,
+ MSEHasSpline,
+ MSEHasOrientation,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte4,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSETransportGuidByte6,
+ MSETransportGuidByte0,
+ MSETransportSeat,
+ MSETransportTime2,
+ MSETransportOrientation,
+ MSETransportGuidByte1,
+ MSETransportGuidByte5,
+ MSETransportTime3,
+ MSETransportGuidByte2,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETransportGuidByte3,
+ MSETransportGuidByte4,
+ MSETransportPositionX,
+ MSETransportTime,
+ MSETransportPositionY,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEPitch,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementSetCanFlyAck[] =
+{
+ MSEPositionY,
+ MSECounter,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEHasGuidByte3,
+ MSEHasTimestamp,
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasOrientation,
+ MSEHasFallData,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEHasSplineElevation,
+ MSEHasMovementFlags2,
+ MSEZeroBit,
+ MSEHasGuidByte7,
+ MSEHasSpline,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasMovementFlags,
+ MSEHasTransportData,
+ MSEHasPitch,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSETransportTime2,
+ MSETransportGuidByte6,
+ MSETransportTime,
+ MSETransportTime3,
+ MSETransportGuidByte7,
+ MSETransportPositionZ,
+ MSETransportGuidByte3,
+ MSETransportPositionY,
+ MSETransportGuidByte5,
+ MSETransportPositionX,
+ MSETransportGuidByte2,
+ MSETransportOrientation,
+ MSETransportSeat,
+ MSETransportGuidByte1,
+ MSETransportGuidByte0,
+ MSETransportGuidByte4,
+ MSEFallTime,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSEPitch,
+ MSEOrientation,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementForceSwimSpeedChangeAck[] =
+{
+ MSEPositionX,
+ MSECounter,
+ MSEExtraElement,
+ MSEPositionY,
+ MSEPositionZ,
+ MSEHasGuidByte4,
+ MSEHasOrientation,
+ MSEHasPitch,
+ MSEHasTransportData,
+ MSEHasMovementFlags,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasFallData,
+ MSEHasGuidByte2,
+ MSEHasGuidByte7,
+ MSEHasTimestamp,
+ MSEZeroBit,
+ MSEHasGuidByte5,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEHasSpline,
+ MSEHasGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSETransportGuidByte0,
+ MSETransportTime3,
+ MSETransportTime2,
+ MSETransportPositionX,
+ MSETransportGuidByte7,
+ MSETransportSeat,
+ MSETransportPositionY,
+ MSETransportGuidByte5,
+ MSETransportPositionZ,
+ MSETransportOrientation,
+ MSETransportTime,
+ MSETransportGuidByte2,
+ MSETransportGuidByte6,
+ MSETransportGuidByte3,
+ MSETransportGuidByte1,
+ MSETransportGuidByte4,
+ MSEFallTime,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallVerticalSpeed,
+ MSEOrientation,
+ MSEPitch,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementForceWalkSpeedChangeAck[] =
+{
+ MSEPositionZ,
+ MSEPositionY,
+ MSEExtraElement,
+ MSEPositionX,
+ MSECounter,
+ MSEHasGuidByte0,
+ MSEHasMovementFlags2,
+ MSEHasTimestamp,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEHasMovementFlags,
+ MSEHasFallData,
+ MSEHasOrientation,
+ MSEHasSpline,
+ MSEZeroBit,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasSplineElevation,
+ MSEHasTransportData,
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasPitch,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEFallVerticalSpeed,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallTime,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETransportGuidByte5,
+ MSETransportPositionX,
+ MSETransportGuidByte0,
+ MSETransportTime,
+ MSETransportTime3,
+ MSETransportPositionY,
+ MSETransportGuidByte2,
+ MSETransportGuidByte4,
+ MSETransportGuidByte1,
+ MSETransportGuidByte3,
+ MSETransportOrientation,
+ MSETransportSeat,
+ MSETransportGuidByte6,
+ MSETransportTime2,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEOrientation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementForceRunBackSpeedChangeAck[] =
+{
+ MSEExtraElement,
+ MSECounter,
+ MSEPositionX,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasTimestamp,
+ MSEHasTransportData,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEHasGuidByte3,
+ MSEHasOrientation,
+ MSEHasFallData,
+ MSEHasMovementFlags2,
+ MSEHasMovementFlags,
+ MSEHasGuidByte7,
+ MSEHasSpline,
+ MSEHasPitch,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEZeroBit,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte5,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSETransportGuidByte5,
+ MSETransportSeat,
+ MSETransportGuidByte6,
+ MSETransportGuidByte1,
+ MSETransportGuidByte0,
+ MSETransportGuidByte2,
+ MSETransportPositionY,
+ MSETransportTime3,
+ MSETransportPositionX,
+ MSETransportOrientation,
+ MSETransportGuidByte3,
+ MSETransportTime,
+ MSETransportTime2,
+ MSETransportGuidByte4,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementUpdateRunBackSpeed[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasGuidByte0,
+ MSEZeroBit,
+ MSEHasMovementFlags,
+ MSEHasGuidByte5,
+ MSEHasOrientation,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte0,
+ MSEHasGuidByte7,
+ MSETransportPositionX,
+ MSETransportGuidByte2,
+ MSETransportGuidByte5,
+ MSETransportGuidByte4,
+ MSETransportGuidByte6,
+ MSETransportGuidByte0,
+ MSETransportGuidByte3,
+ MSETransportPositionY,
+ MSETransportGuidByte7,
+ MSETransportPositionZ,
+ MSETransportTime,
+ MSETransportSeat,
+ MSETransportGuidByte1,
+ MSETransportOrientation,
+ MSEGuidByte4,
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSETimestamp,
+ MSEGuidByte1,
+ MSEOrientation,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEPositionX,
+ MSEPositionY,
+ MSEPitch,
+ MSEGuidByte7,
+ MSEExtraElement,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEPositionZ,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementUpdateWalkSpeed[] =
+{
+ MSEHasOrientation,
+ MSEZeroBit,
+ MSEHasGuidByte3,
+ MSEHasGuidByte2,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasMovementFlags,
+ MSEHasGuidByte6,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEHasGuidByte4,
+ MSEPitch,
+ MSETransportGuidByte6,
+ MSETransportGuidByte0,
+ MSETransportGuidByte4,
+ MSETransportGuidByte2,
+ MSETransportPositionX,
+ MSETransportGuidByte7,
+ MSETransportTime,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportGuidByte5,
+ MSETransportOrientation,
+ MSETransportGuidByte1,
+ MSETransportPositionY,
+ MSETransportGuidByte3,
+ MSEFallVerticalSpeed,
+ MSEFallHorizontalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSETimestamp,
+ MSEOrientation,
+ MSEPositionY,
+ MSEGuidByte0,
+ MSEPositionZ,
+ MSEPositionX,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEExtraElement,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements ForceMoveRootAck[] =
+{
+ MSEPositionY,
+ MSEPositionZ,
+ MSECounter,
+ MSEPositionX,
+ MSEHasGuidByte3,
+ MSEHasTimestamp,
+ MSEHasTransportData,
+ MSEHasPitch,
+ MSEHasGuidByte2,
+ MSEHasOrientation,
+ MSEHasSplineElevation,
+ MSEHasFallData,
+ MSEHasSpline,
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasGuidByte7,
+ MSEHasMovementFlags2,
+ MSEHasMovementFlags,
+ MSEZeroBit,
+ MSEHasGuidByte5,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte5,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEGuidByte2,
+ MSETransportGuidByte5,
+ MSETransportGuidByte4,
+ MSETransportOrientation,
+ MSETransportPositionZ,
+ MSETransportTime3,
+ MSETransportTime2,
+ MSETransportGuidByte7,
+ MSETransportGuidByte2,
+ MSETransportGuidByte0,
+ MSETransportTime,
+ MSETransportGuidByte6,
+ MSETransportGuidByte3,
+ MSETransportPositionX,
+ MSETransportGuidByte1,
+ MSETransportPositionY,
+ MSETransportSeat,
+ MSETimestamp,
+ MSEFallVerticalSpeed,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallTime,
+ MSEOrientation,
+ MSESplineElevation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements ForceMoveUnrootAck[] =
+{
+ MSECounter,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEPositionX,
+ MSEHasGuidByte7,
+ MSEHasSplineElevation,
+ MSEHasSpline,
+ MSEHasGuidByte5,
+ MSEHasGuidByte4,
+ MSEZeroBit,
+ MSEHasTimestamp,
+ MSEHasMovementFlags,
+ MSEHasOrientation,
+ MSEHasPitch,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasTransportData,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEHasFallData,
+ MSEHasGuidByte6,
+ MSEHasFallDirection,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSETransportGuidByte6,
+ MSETransportPositionZ,
+ MSETransportGuidByte2,
+ MSETransportGuidByte3,
+ MSETransportPositionY,
+ MSETransportTime3,
+ MSETransportGuidByte5,
+ MSETransportSeat,
+ MSETransportGuidByte0,
+ MSETransportTime,
+ MSETransportTime2,
+ MSETransportGuidByte4,
+ MSETransportOrientation,
+ MSETransportPositionX,
+ MSETransportGuidByte1,
+ MSETransportGuidByte7,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementFallReset[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSEPositionY,
+ MSEHasGuidByte1,
+ MSEHasTimestamp,
+ MSEHasMovementFlags,
+ MSEZeroBit,
+ MSEHasGuidByte6,
+ MSEHasSplineElevation,
+ MSEHasPitch,
+ MSEHasGuidByte3,
+ MSEHasTransportData,
+ MSEHasGuidByte2,
+ MSEHasMovementFlags2,
+ MSEHasOrientation,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasSpline,
+ MSEHasGuidByte7,
+ MSEHasGuidByte0,
+ MSEHasFallData,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSETransportPositionX,
+ MSETransportGuidByte7,
+ MSETransportGuidByte2,
+ MSETransportGuidByte3,
+ MSETransportGuidByte5,
+ MSETransportPositionY,
+ MSETransportPositionZ,
+ MSETransportSeat,
+ MSETransportTime2,
+ MSETransportGuidByte6,
+ MSETransportTime3,
+ MSETransportTime,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSETransportGuidByte4,
+ MSETransportGuidByte1,
+ MSEFallVerticalSpeed,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+ MSEOrientation,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementFeatherFallAck[] =
+{
+ MSEPositionZ,
+ MSECounter,
+ MSEPositionY,
+ MSEPositionX,
+ MSEZeroBit,
+ MSEHasGuidByte3,
+ MSEHasSplineElevation,
+ MSEHasGuidByte1,
+ MSEHasPitch,
+ MSEHasGuidByte2,
+ MSEHasSpline,
+ MSEHasTimestamp,
+ MSEHasGuidByte5,
+ MSEHasFallData,
+ MSEHasOrientation,
+ MSEHasTransportData,
+ MSEHasGuidByte7,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte6,
+ MSEHasMovementFlags,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte0,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEMovementFlags,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSETransportTime3,
+ MSETransportOrientation,
+ MSETransportPositionZ,
+ MSETransportGuidByte7,
+ MSETransportGuidByte5,
+ MSETransportGuidByte2,
+ MSETransportPositionX,
+ MSETransportGuidByte1,
+ MSETransportGuidByte6,
+ MSETransportTime2,
+ MSETransportTime,
+ MSETransportPositionY,
+ MSETransportGuidByte4,
+ MSETransportGuidByte0,
+ MSETransportSeat,
+ MSETransportGuidByte3,
+ MSETimestamp,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEFallVerticalSpeed,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementGravityDisableAck[] =
+{
+ MSEPositionZ,
+ MSEPositionY,
+ MSECounter,
+ MSEPositionX,
+ MSEHasGuidByte3,
+ MSEHasTransportData,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasMovementFlags,
+ MSEHasOrientation,
+ MSEHasSpline,
+ MSEHasGuidByte6,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEHasSplineElevation,
+ MSEHasTimestamp,
+ MSEHasPitch,
+ MSEHasMovementFlags2,
+ MSEZeroBit,
+ MSEHasGuidByte2,
+ MSEHasFallData,
+ MSEHasGuidByte1,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportTime2,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSETransportPositionZ,
+ MSETransportGuidByte2,
+ MSETransportGuidByte5,
+ MSETransportGuidByte3,
+ MSETransportGuidByte4,
+ MSETransportPositionY,
+ MSETransportTime,
+ MSETransportSeat,
+ MSETransportGuidByte6,
+ MSETransportGuidByte1,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSETransportTime2,
+ MSETransportPositionX,
+ MSETransportGuidByte7,
+ MSETransportTime3,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEOrientation,
+ MSESplineElevation,
+ MSETimestamp,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementGravityEnableAck[] =
+{
+ MSEPositionZ,
+ MSEPositionX,
+ MSECounter,
+ MSEPositionY,
+ MSEHasSplineElevation,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte6,
+ MSEHasOrientation,
+ MSEZeroBit,
+ MSEHasGuidByte5,
+ MSEHasSpline,
+ MSEHasGuidByte3,
+ MSEHasTransportData,
+ MSEHasPitch,
+ MSEHasGuidByte1,
+ MSEHasTimestamp,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasMovementFlags,
+ MSEHasFallData,
+ MSEHasGuidByte0,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasFallDirection,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEFallTime,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallCosAngle,
+ MSEFallVerticalSpeed,
+ MSETransportGuidByte1,
+ MSETransportPositionX,
+ MSETransportTime3,
+ MSETransportOrientation,
+ MSETransportGuidByte2,
+ MSETransportGuidByte0,
+ MSETransportGuidByte7,
+ MSETransportGuidByte6,
+ MSETransportSeat,
+ MSETransportGuidByte3,
+ MSETransportGuidByte4,
+ MSETransportPositionZ,
+ MSETransportTime2,
+ MSETransportGuidByte5,
+ MSETransportTime,
+ MSETransportPositionY,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEPitch,
+ MSETimestamp,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementHoverAck[] =
+{
+ MSECounter,
+ MSEPositionZ,
+ MSEPositionY,
+ MSEPositionX,
+ MSEHasGuidByte4,
+ MSEHasTransportData,
+ MSEHasGuidByte2,
+ MSEHasTimestamp,
+ MSEHasSpline,
+ MSEHasMovementFlags,
+ MSEHasGuidByte1,
+ MSEHasPitch,
+ MSEHasGuidByte0,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEHasGuidByte5,
+ MSEZeroBit,
+ MSEHasFallData,
+ MSEHasMovementFlags2,
+ MSEHasSplineElevation,
+ MSEHasOrientation,
+ MSEHasGuidByte3,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportTime2,
+ MSEMovementFlags,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte0,
+ MSETimestamp,
+ MSEFallCosAngle,
+ MSEFallSinAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEOrientation,
+ MSETransportGuidByte1,
+ MSETransportTime3,
+ MSETransportGuidByte2,
+ MSETransportGuidByte7,
+ MSETransportGuidByte3,
+ MSETransportGuidByte4,
+ MSETransportSeat,
+ MSETransportPositionX,
+ MSETransportPositionZ,
+ MSETransportOrientation,
+ MSETransportTime,
+ MSETransportGuidByte0,
+ MSETransportPositionY,
+ MSETransportGuidByte5,
+ MSETransportTime2,
+ MSETransportGuidByte6,
+ MSESplineElevation,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementKnockBackAck[] =
+{
+ MSEPositionY,
+ MSEPositionZ,
+ MSECounter,
+ MSEPositionX,
+ MSEHasGuidByte6,
+ MSEHasOrientation,
+ MSEHasPitch,
+ MSEHasSplineElevation,
+ MSEHasGuidByte3,
+ MSEHasGuidByte4,
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEHasSpline,
+ MSEHasGuidByte7,
+ MSEZeroBit,
+ MSEHasMovementFlags2,
+ MSEHasTimestamp,
+ MSEHasGuidByte0,
+ MSEHasMovementFlags,
+ MSEHasTransportData,
+ MSEHasGuidByte5,
+ MSEHasFallData,
+ MSEMovementFlags,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte7,
+ MSEMovementFlags2,
+ MSEHasFallDirection,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSETimestamp,
+ MSETransportPositionY,
+ MSETransportGuidByte4,
+ MSETransportTime2,
+ MSETransportGuidByte7,
+ MSETransportOrientation,
+ MSETransportGuidByte6,
+ MSETransportTime,
+ MSETransportGuidByte3,
+ MSETransportGuidByte1,
+ MSETransportTime3,
+ MSETransportGuidByte2,
+ MSETransportPositionZ,
+ MSETransportGuidByte0,
+ MSETransportGuidByte5,
+ MSETransportPositionX,
+ MSETransportSeat,
+ MSEPitch,
+ MSESplineElevation,
+ MSEOrientation,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementWaterWalkAck[] =
+{
+ MSEPositionY,
+ MSEPositionZ,
+ MSECounter,
+ MSEPositionX,
+ MSEHasTimestamp,
+ MSEHasPitch,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEHasOrientation,
+ MSEHasGuidByte1,
+ MSEHasMovementFlags2,
+ MSEHasGuidByte2,
+ MSEHasMovementFlags,
+ MSEHasGuidByte3,
+ MSEHasTransportData,
+ MSEHasGuidByte6,
+ MSEHasFallData,
+ MSEHasGuidByte4,
+ MSEZeroBit,
+ MSEHasSplineElevation,
+ MSEHasSpline,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportTime2,
+ MSEHasTransportGuidByte3,
+ MSEHasTransportTime3,
+ MSEHasTransportGuidByte4,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEMovementFlags2,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSETransportPositionX,
+ MSETransportGuidByte1,
+ MSETransportTime3,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSETransportGuidByte7,
+ MSETransportPositionY,
+ MSETransportTime2,
+ MSETransportTime,
+ MSETransportGuidByte5,
+ MSETransportSeat,
+ MSETransportPositionZ,
+ MSETransportGuidByte3,
+ MSETransportGuidByte2,
+ MSETransportGuidByte6,
+ MSETransportGuidByte4,
+ MSESplineElevation,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallVerticalSpeed,
+ MSEFallTime,
+ MSEOrientation,
+ MSETimestamp,
+ MSEPitch,
+ MSEEnd,
+};
+
+//4.3.4
+MovementStatusElements MovementUpdateKnockBack[] =
+{
+ MSEZeroBit,
+ MSEHasGuidByte4,
+ MSEHasMovementFlags,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasGuidByte2,
+ MSEHasGuidByte7,
+ MSEHasTransportGuidByte7,
+ MSEHasTransportGuidByte5,
+ MSEHasTransportGuidByte1,
+ MSEHasTransportGuidByte6,
+ MSEHasTransportGuidByte2,
+ MSEHasTransportGuidByte4,
+ MSEHasTransportGuidByte0,
+ MSEHasTransportGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte6,
+ MSEMovementFlags,
+ MSEHasFallDirection,
+ MSEHasOrientation,
+ MSEOrientation,
+ MSEFallCosAngle,
+ MSEFallHorizontalSpeed,
+ MSEFallSinAngle,
+ MSEFallTime,
+ MSEFallVerticalSpeed,
+ MSEGuidByte3,
+ MSETransportGuidByte5,
+ MSETransportGuidByte7,
+ MSETransportSeat,
+ MSETransportGuidByte3,
+ MSETransportGuidByte6,
+ MSETransportPositionZ,
+ MSETransportGuidByte1,
+ MSETransportPositionY,
+ MSETransportPositionX,
+ MSETransportGuidByte2,
+ MSETransportGuidByte0,
+ MSETransportOrientation,
+ MSETransportTime,
+ MSETransportGuidByte4,
+ MSEPitch,
+ MSEPositionZ,
+ MSETimestamp,
+ MSEPositionX,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEPositionY,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetWalkSpeed[] =
+{
+ MSEHasGuidByte0,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEExtraElement,
+ MSEGuidByte6,
+ MSEGuidByte2,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetRunSpeed[] =
+{
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEExtraElement,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetRunBackSpeed[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEHasGuidByte6,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasGuidByte7,
+ MSEHasGuidByte5,
+ MSEHasGuidByte4,
+ MSEGuidByte1,
+ MSEExtraElement,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetSwimSpeed[] =
+{
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEExtraElement,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetSwimBackSpeed[] =
+{
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEExtraElement,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetTurnRate[] =
+{
+ MSEHasGuidByte2,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasGuidByte0,
+ MSEExtraElement,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetFlightSpeed[] =
+{
+ MSEHasGuidByte7,
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEExtraElement,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetFlightBackSpeed[] =
+{
+ MSEHasGuidByte2,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEGuidByte5,
+ MSEExtraElement,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetPitchRate[] =
+{
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSEExtraElement,
+ MSEGuidByte4,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetWalkSpeed[] =
+{
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte5,
+ MSEExtraElement,
+ MSEGuidByte2,
+ MSECounter,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetRunSpeed[] =
+{
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEHasGuidByte7,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSECounter,
+ MSEExtraElement,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetRunBackSpeed[] =
+{
+ MSEHasGuidByte0,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEGuidByte5,
+ MSECounter,
+ MSEExtraElement,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetSwimSpeed[] =
+{
+ MSEHasGuidByte5,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEGuidByte0,
+ MSECounter,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSEExtraElement,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte4,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetSwimBackSpeed[] =
+{
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSECounter,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEExtraElement,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetTurnRate[] =
+{
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte5,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSEExtraElement,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSECounter,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetFlightSpeed[] =
+{
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEHasGuidByte2,
+ MSEHasGuidByte7,
+ MSEHasGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEExtraElement,
+ MSECounter,
+ MSEGuidByte2,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetFlightBackSpeed[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEHasGuidByte6,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEGuidByte3,
+ MSECounter,
+ MSEGuidByte6,
+ MSEExtraElement,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetPitchRate[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte4,
+ MSEExtraElement,
+ MSEGuidByte6,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSECounter,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetCollisionHeight[] =
+{
+ MSEZeroBit,
+ MSEZeroBit,
+ MSEHasGuidByte6,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSECounter,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEExtraElement,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetWalkMode[] =
+{
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetRunMode[] =
+{
+ MSEHasGuidByte5,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEHasGuidByte7,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveGravityDisable[] =
+{
+ MSEHasGuidByte7,
+ MSEHasGuidByte3,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte0,
+ MSEHasGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSEGuidByte2,
+ MSEGuidByte5,
+ MSEGuidByte0,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveGravityEnable[] =
+{
+ MSEHasGuidByte5,
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte0,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveSetHover[] =
+{
+ MSEHasGuidByte3,
+ MSEHasGuidByte7,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte3,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte6,
+ MSEEnd,
+};
+
+MovementStatusElements SplineMoveUnsetHover[] =
+{
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetCanFly[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte3,
+ MSECounter,
+ MSEGuidByte2,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSEGuidByte7,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEEnd,
+};
+
+MovementStatusElements MoveUnsetCanFly[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEHasGuidByte3,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEGuidByte4,
+ MSEGuidByte6,
+ MSECounter,
+ MSEGuidByte1,
+ MSEGuidByte0,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEEnd,
+};
+
+MovementStatusElements MoveSetHover[] =
+{
+ MSEHasGuidByte1,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte0,
+ MSEHasGuidByte5,
+ MSEHasGuidByte6,
+ MSEHasGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte0,
+ MSEGuidByte7,
+ MSECounter,
+ MSEEnd,
+};
+
+MovementStatusElements MoveUnsetHover[] =
+{
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasGuidByte2,
+ MSEHasGuidByte7,
+ MSEHasGuidByte5,
+ MSEHasGuidByte0,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte2,
+ MSEGuidByte0,
+ MSECounter,
+ MSEEnd,
+};
+
+MovementStatusElements MoveWaterWalk[] =
+{
+ MSEHasGuidByte4,
+ MSEHasGuidByte7,
+ MSEHasGuidByte6,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte3,
+ MSEHasGuidByte5,
+ MSEHasGuidByte2,
+ MSEGuidByte0,
+ MSEGuidByte5,
+ MSEGuidByte2,
+ MSECounter,
+ MSEGuidByte7,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEEnd,
+};
+
+MovementStatusElements MoveLandWalk[] =
+{
+ MSEHasGuidByte5,
+ MSEHasGuidByte1,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEHasGuidByte3,
+ MSEHasGuidByte4,
+ MSEHasGuidByte0,
+ MSEHasGuidByte7,
+ MSEGuidByte6,
+ MSEGuidByte1,
+ MSEGuidByte7,
+ MSEGuidByte5,
+ MSEGuidByte4,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte2,
+ MSECounter,
+ MSEEnd,
+};
+
+MovementStatusElements MoveFeatherFall[] =
+{
+ MSEHasGuidByte3,
+ MSEHasGuidByte1,
+ MSEHasGuidByte7,
+ MSEHasGuidByte0,
+ MSEHasGuidByte4,
+ MSEHasGuidByte2,
+ MSEHasGuidByte5,
+ MSEHasGuidByte6,
+ MSEGuidByte5,
+ MSEGuidByte7,
+ MSEGuidByte2,
+ MSECounter,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte4,
+ MSEGuidByte1,
+ MSEGuidByte6,
+ MSEEnd,
+};
+
+MovementStatusElements MoveNormalFall[] =
+{
+ MSECounter,
+ MSEHasGuidByte3,
+ MSEHasGuidByte0,
+ MSEHasGuidByte1,
+ MSEHasGuidByte5,
+ MSEHasGuidByte7,
+ MSEHasGuidByte4,
+ MSEHasGuidByte6,
+ MSEHasGuidByte2,
+ MSEGuidByte2,
+ MSEGuidByte7,
+ MSEGuidByte1,
+ MSEGuidByte4,
+ MSEGuidByte5,
+ MSEGuidByte0,
+ MSEGuidByte3,
+ MSEGuidByte6,
+ MSEEnd,
+};
+
+void Movement::ExtraMovementStatusElement::ReadNextElement(ByteBuffer& packet)
+{
+ MovementStatusElements element = _elements[_index++];
+
+ if (element >= MSEHasGuidByte0 && element <= MSEHasGuidByte7)
+ {
+ Data.guid[element - MSEHasGuidByte0] = packet.ReadBit();
+ return;
+ }
+
+ if (element >= MSEGuidByte0 && element <= MSEGuidByte7)
+ {
+ packet.ReadByteSeq(Data.guid[element - MSEGuidByte0]);
+ return;
+ }
+
+ if (element == MSEExtraFloat)
+ {
+ packet >> Data.floatData;
+ return;
+ }
+}
+
+
+void Movement::ExtraMovementStatusElement::WriteNextElement(ByteBuffer& packet)
+{
+ MovementStatusElements element = _elements[_index++];
+
+ if (element >= MSEHasGuidByte0 && element <= MSEHasGuidByte7)
+ {
+ packet.WriteBit(Data.guid[element - MSEHasGuidByte0]);
+ return;
+ }
+
+ if (element >= MSEGuidByte0 && element <= MSEGuidByte7)
+ {
+ packet.WriteByteSeq(Data.guid[element - MSEGuidByte0]);
+ return;
+ }
+
+ if (element == MSEExtraFloat)
+ {
+ packet << Data.floatData;
+ return;
+ }
+}
+
+Movement::PacketSender::PacketSender(Unit* unit, Opcodes serverControl, Opcodes playerControl, Opcodes broadcast /*= SMSG_PLAYER_MOVE*/, ExtraMovementStatusElement* extras /*= NULL*/)
+ : _unit(unit), _extraElements(extras)
+{
+ if (unit->GetTypeId() == TYPEID_PLAYER && unit->ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER)
+ {
+ _selfOpcode = playerControl;
+ _broadcast = broadcast;
+ }
+ else
+ {
+ _selfOpcode = NULL_OPCODE;
+ _broadcast = serverControl;
+ }
+}
+
+void Movement::PacketSender::Send() const
+{
+ bool isPlayerMovement = _unit->GetTypeId() == TYPEID_PLAYER && _unit->ToPlayer()->m_mover->GetTypeId() == TYPEID_PLAYER;
+ if (isPlayerMovement && _selfOpcode != NULL_OPCODE)
+ {
+ WorldPacket data(_selfOpcode);
+ _unit->WriteMovementInfo(data, _extraElements);
+ _unit->ToPlayer()->SendDirectMessage(&data);
+ }
+
+ if (_broadcast != NULL_OPCODE)
+ {
+ WorldPacket data(_broadcast);
+ _unit->WriteMovementInfo(data, _extraElements);
+ _unit->SendMessageToSet(&data, !isPlayerMovement);
+ }
+}
+
+MovementStatusElements* GetMovementStatusElementsSequence(Opcodes opcode)
+{
+ switch (opcode)
+ {
+ case MSG_MOVE_FALL_LAND:
+ return MovementFallLandSequence;
+ case MSG_MOVE_HEARTBEAT:
+ return MovementHeartBeatSequence;
+ case MSG_MOVE_JUMP:
+ return MovementJumpSequence;
+ case MSG_MOVE_SET_FACING:
+ return MovementSetFacingSequence;
+ case MSG_MOVE_SET_PITCH:
+ return MovementSetPitchSequence;
+ case MSG_MOVE_START_ASCEND:
+ return MovementStartAscendSequence;
+ case MSG_MOVE_START_BACKWARD:
+ return MovementStartBackwardSequence;
+ case MSG_MOVE_START_DESCEND:
+ return MovementStartDescendSequence;
+ case MSG_MOVE_START_FORWARD:
+ return MovementStartForwardSequence;
+ case MSG_MOVE_START_PITCH_DOWN:
+ return MovementStartPitchDownSequence;
+ case MSG_MOVE_START_PITCH_UP:
+ return MovementStartPitchUpSequence;
+ case MSG_MOVE_START_STRAFE_LEFT:
+ return MovementStartStrafeLeftSequence;
+ case MSG_MOVE_START_STRAFE_RIGHT:
+ return MovementStartStrafeRightSequence;
+ case MSG_MOVE_START_SWIM:
+ return MovementStartSwimSequence;
+ 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_ASCEND:
+ return MovementStopAscendSequence;
+ case MSG_MOVE_STOP_PITCH:
+ return MovementStopPitchSequence;
+ case MSG_MOVE_STOP_STRAFE:
+ return MovementStopStrafeSequence;
+ case MSG_MOVE_STOP_SWIM:
+ return MovementStopSwimSequence;
+ case MSG_MOVE_STOP_TURN:
+ return MovementStopTurnSequence;
+ case SMSG_PLAYER_MOVE:
+ return PlayerMoveSequence;
+ case CMSG_MOVE_CHNG_TRANSPORT:
+ return MoveChngTransport;
+ case CMSG_MOVE_SPLINE_DONE:
+ return MoveSplineDone;
+ case CMSG_MOVE_NOT_ACTIVE_MOVER:
+ return MoveNotActiveMover;
+ case CMSG_DISMISS_CONTROLLED_VEHICLE:
+ return DismissControlledVehicle;
+ case SMSG_MOVE_UPDATE_TELEPORT:
+ return MoveUpdateTeleport;
+ case CMSG_FORCE_MOVE_ROOT_ACK:
+ return ForceMoveRootAck;
+ case CMSG_FORCE_MOVE_UNROOT_ACK:
+ return ForceMoveUnrootAck;
+ case CMSG_MOVE_FALL_RESET:
+ return MovementFallReset;
+ case CMSG_MOVE_FEATHER_FALL_ACK:
+ return MovementFeatherFallAck;
+ case CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK:
+ return MovementForceFlightSpeedChangeAck;
+ case CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK:
+ return MovementForceRunBackSpeedChangeAck;
+ case CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK:
+ return MovementForceRunSpeedChangeAck;
+ case CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK:
+ return MovementForceSwimSpeedChangeAck;
+ case CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK:
+ return MovementForceWalkSpeedChangeAck;
+ case CMSG_MOVE_GRAVITY_DISABLE_ACK:
+ return MovementGravityDisableAck;
+ case CMSG_MOVE_GRAVITY_ENABLE_ACK:
+ return MovementGravityEnableAck;
+ case CMSG_MOVE_HOVER_ACK:
+ return MovementHoverAck;
+ case CMSG_MOVE_KNOCK_BACK_ACK:
+ return MovementKnockBackAck;
+ case CMSG_MOVE_SET_CAN_FLY:
+ return MovementSetCanFly;
+ case CMSG_MOVE_SET_CAN_FLY_ACK:
+ return MovementSetCanFlyAck;
+ case CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK:
+ return MovementSetCanTransitionBetweenSwimAndFlyAck;
+ case SMSG_MOVE_SET_COLLISION_HEIGHT:
+ return MoveSetCollisionHeight;
+ case CMSG_MOVE_SET_COLLISION_HEIGHT_ACK:
+ return MovementSetCollisionHeightAck;
+ case SMSG_MOVE_UPDATE_COLLISION_HEIGHT:
+ return MovementUpdateCollisionHeight;
+ case CMSG_MOVE_WATER_WALK_ACK:
+ return MovementWaterWalkAck;
+ case MSG_MOVE_SET_RUN_MODE:
+ return MovementSetRunMode;
+ case MSG_MOVE_SET_WALK_MODE:
+ return MovementSetWalkMode;
+ case SMSG_MOVE_UPDATE_FLIGHT_SPEED:
+ return MovementUpdateFlightSpeed;
+ case SMSG_MOVE_UPDATE_RUN_SPEED:
+ return MovementUpdateRunSpeed;
+ case SMSG_MOVE_UPDATE_KNOCK_BACK:
+ return MovementUpdateKnockBack;
+ case SMSG_MOVE_UPDATE_RUN_BACK_SPEED:
+ return MovementUpdateRunBackSpeed;
+ case SMSG_MOVE_UPDATE_SWIM_SPEED:
+ return MovementUpdateSwimSpeed;
+ case SMSG_MOVE_UPDATE_WALK_SPEED:
+ return MovementUpdateWalkSpeed;
+ case SMSG_SPLINE_MOVE_SET_WALK_SPEED:
+ return SplineMoveSetWalkSpeed;
+ case SMSG_SPLINE_MOVE_SET_RUN_SPEED:
+ return SplineMoveSetRunSpeed;
+ case SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED:
+ return SplineMoveSetRunBackSpeed;
+ case SMSG_SPLINE_MOVE_SET_SWIM_SPEED:
+ return SplineMoveSetSwimSpeed;
+ case SMSG_SPLINE_MOVE_SET_SWIM_BACK_SPEED:
+ return SplineMoveSetSwimBackSpeed;
+ case SMSG_SPLINE_MOVE_SET_TURN_RATE:
+ return SplineMoveSetTurnRate;
+ case SMSG_SPLINE_MOVE_SET_FLIGHT_SPEED:
+ return SplineMoveSetFlightSpeed;
+ case SMSG_SPLINE_MOVE_SET_FLIGHT_BACK_SPEED:
+ return SplineMoveSetFlightBackSpeed;
+ case SMSG_SPLINE_MOVE_SET_PITCH_RATE:
+ return SplineMoveSetPitchRate;
+ case SMSG_MOVE_SET_WALK_SPEED:
+ return MoveSetWalkSpeed;
+ case SMSG_MOVE_SET_RUN_SPEED:
+ return MoveSetRunSpeed;
+ case SMSG_MOVE_SET_RUN_BACK_SPEED:
+ return MoveSetRunBackSpeed;
+ case SMSG_MOVE_SET_SWIM_SPEED:
+ return MoveSetSwimSpeed;
+ case SMSG_MOVE_SET_SWIM_BACK_SPEED:
+ return MoveSetSwimBackSpeed;
+ case SMSG_MOVE_SET_TURN_RATE:
+ return MoveSetTurnRate;
+ case SMSG_MOVE_SET_FLIGHT_SPEED:
+ return MoveSetFlightSpeed;
+ case SMSG_MOVE_SET_FLIGHT_BACK_SPEED:
+ return MoveSetFlightBackSpeed;
+ case SMSG_MOVE_SET_PITCH_RATE:
+ return MoveSetPitchRate;
+ case SMSG_SPLINE_MOVE_SET_WALK_MODE:
+ return SplineMoveSetWalkMode;
+ case SMSG_SPLINE_MOVE_SET_RUN_MODE:
+ return SplineMoveSetRunMode;
+ case SMSG_SPLINE_MOVE_GRAVITY_DISABLE:
+ return SplineMoveGravityDisable;
+ case SMSG_SPLINE_MOVE_GRAVITY_ENABLE:
+ return SplineMoveGravityEnable;
+ case SMSG_SPLINE_MOVE_SET_HOVER:
+ return SplineMoveSetHover;
+ case SMSG_SPLINE_MOVE_UNSET_HOVER:
+ return SplineMoveUnsetHover;
+ case SMSG_MOVE_SET_CAN_FLY:
+ return MoveSetCanFly;
+ case SMSG_MOVE_UNSET_CAN_FLY:
+ return MoveUnsetCanFly;
+ case SMSG_MOVE_SET_HOVER:
+ return MoveSetHover;
+ case SMSG_MOVE_UNSET_HOVER:
+ return MoveUnsetHover;
+ case SMSG_MOVE_WATER_WALK:
+ return MoveWaterWalk;
+ case SMSG_MOVE_LAND_WALK:
+ return MoveLandWalk;
+ case SMSG_MOVE_FEATHER_FALL:
+ return MoveFeatherFall;
+ case SMSG_MOVE_NORMAL_FALL:
+ return MoveNormalFall;
+ default:
+ break;
+ }
+
+ return NULL;
+}
diff --git a/src/server/game/Movement/MovementStructures.h b/src/server/game/Movement/MovementStructures.h
index 3c537376ba0..7269b36c3f2 100644
--- a/src/server/game/Movement/MovementStructures.h
+++ b/src/server/game/Movement/MovementStructures.h
@@ -91,2170 +91,52 @@ enum MovementStatusElements
MSECounter,
- // Speed
- MSESpeedWalk,
- MSESpeedRun,
- MSESpeedRunBack,
- MSESpeedSwim,
- MSESpeedSwimBack,
- MSESpeedTurnRate,
- MSESpeedFlight,
- MSESpeedFlightBack,
- MSESpeedPitchRate,
-
// Special
- MSEZeroBit, // writes bit value 1 or skips read bit
- MSEOneBit, // writes bit value 0 or skips read bit
- MSEEnd, // marks end of parsing
+ MSEZeroBit, // writes bit value 1 or skips read bit
+ MSEOneBit, // writes bit value 0 or skips read bit
+ MSEEnd, // marks end of parsing
+ MSEExtraElement, // Used to sinalize reading into ExtraMovementStatusElement, element sequence inside it is declared as separate array
+ // Allowed internal elements are: GUID markers (not transport) and MSEExtraFloat
+ MSEExtraFloat,
MSE_COUNT
};
-//4.3.4
-MovementStatusElements PlayerMoveSequence[] =
-{
- MSEHasFallData,
- MSEHasGuidByte3,
- MSEHasGuidByte6,
- MSEHasMovementFlags2,
- MSEHasSpline,
- MSEHasTimestamp,
- MSEHasGuidByte0,
- MSEHasGuidByte1,
- MSEMovementFlags2,
- MSEHasGuidByte7,
- MSEHasMovementFlags,
- MSEHasOrientation,
- MSEHasGuidByte2,
- MSEHasSplineElevation,
- MSEZeroBit,
- MSEHasGuidByte4,
- MSEHasFallDirection,
- MSEHasGuidByte5,
- MSEHasTransportData,
- MSEMovementFlags,
- MSEHasTransportGuidByte3,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte4,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte2,
- MSEHasPitch,
- MSEGuidByte5,
- MSEFallHorizontalSpeed,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSESplineElevation,
- MSEGuidByte7,
- MSEPositionY,
- MSEGuidByte3,
- MSETransportTime3,
- MSETransportGuidByte6,
- MSETransportSeat,
- MSETransportGuidByte5,
- MSETransportPositionX,
- MSETransportGuidByte1,
- MSETransportOrientation,
- MSETransportGuidByte2,
- MSETransportTime2,
- MSETransportGuidByte0,
- MSETransportPositionZ,
- MSETransportGuidByte7,
- MSETransportGuidByte4,
- MSETransportGuidByte3,
- MSETransportPositionY,
- MSETransportTime,
- MSEGuidByte4,
- MSEPositionX,
- MSEGuidByte6,
- MSEPositionZ,
- MSETimestamp,
- MSEGuidByte2,
- MSEPitch,
- MSEGuidByte0,
- MSEOrientation,
- MSEGuidByte1,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementFallLandSequence[] =
-{
- MSEPositionX,
- MSEPositionY,
- MSEPositionZ,
- MSEHasTransportData,
- MSEHasGuidByte7,
- MSEHasGuidByte1,
- MSEHasMovementFlags2,
- MSEHasGuidByte3,
- MSEHasSplineElevation,
- MSEHasOrientation,
- MSEHasGuidByte6,
- MSEHasTimestamp,
- MSEZeroBit,
- MSEHasPitch,
- MSEHasGuidByte4,
- MSEHasSpline,
- MSEHasGuidByte5,
- MSEHasMovementFlags,
- MSEHasFallData,
- MSEHasGuidByte0,
- MSEHasGuidByte2,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime3,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte7,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEGuidByte1,
- MSEGuidByte7,
- MSEGuidByte4,
- MSEGuidByte3,
- MSEGuidByte6,
- MSEGuidByte0,
- MSEGuidByte2,
- MSEGuidByte5,
- MSETransportTime,
- MSETransportPositionZ,
- MSETransportPositionY,
- MSETransportPositionX,
- MSETransportGuidByte5,
- MSETransportTime3,
- MSETransportGuidByte1,
- MSETransportSeat,
- MSETransportTime2,
- MSETransportGuidByte4,
- MSETransportOrientation,
- MSETransportGuidByte0,
- MSETransportGuidByte7,
- MSETransportGuidByte3,
- MSETransportGuidByte6,
- MSETransportGuidByte2,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSEFallCosAngle,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSESplineElevation,
- MSETimestamp,
- MSEPitch,
- MSEOrientation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementHeartBeatSequence[] =
-{
- MSEPositionZ,
- MSEPositionX,
- MSEPositionY,
- MSEHasPitch,
- MSEHasTimestamp,
- MSEHasFallData,
- MSEHasMovementFlags2,
- MSEHasTransportData,
- MSEHasGuidByte7,
- MSEHasGuidByte1,
- MSEHasGuidByte0,
- MSEHasGuidByte4,
- MSEHasGuidByte2,
- MSEHasOrientation,
- MSEHasGuidByte5,
- MSEHasGuidByte3,
- MSEHasSplineElevation,
- MSEHasSpline,
- MSEZeroBit,
- MSEHasGuidByte6,
- MSEHasMovementFlags,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte1,
- MSEHasFallDirection,
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEGuidByte3,
- MSEGuidByte6,
- MSEGuidByte1,
- MSEGuidByte7,
- MSEGuidByte2,
- MSEGuidByte5,
- MSEGuidByte0,
- MSEGuidByte4,
- MSETransportPositionZ,
- MSETransportSeat,
- MSETransportOrientation,
- MSETransportGuidByte4,
- MSETransportPositionY,
- MSETransportTime,
- MSETransportPositionX,
- MSETransportGuidByte5,
- MSETransportGuidByte1,
- MSETransportGuidByte3,
- MSETransportGuidByte7,
- MSETransportTime3,
- MSETransportTime2,
- MSETransportGuidByte2,
- MSETransportGuidByte0,
- MSETransportGuidByte6,
- MSEOrientation,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEPitch,
- MSESplineElevation,
- MSETimestamp,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementJumpSequence[] =
-{
- MSEPositionY,
- MSEPositionX,
- MSEPositionZ,
- MSEHasTimestamp,
- MSEHasGuidByte5,
- MSEHasMovementFlags,
- MSEHasGuidByte4,
- MSEHasGuidByte6,
- MSEHasMovementFlags2,
- MSEHasGuidByte0,
- MSEHasTransportData,
- MSEHasGuidByte3,
- MSEHasPitch,
- MSEHasGuidByte7,
- MSEHasFallData,
- MSEHasSpline,
- MSEHasOrientation,
- MSEHasGuidByte1,
- MSEHasSplineElevation,
- MSEZeroBit,
- MSEHasGuidByte2,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte4,
- MSEHasTransportTime3,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte2,
- MSEHasFallDirection,
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEGuidByte6,
- MSEGuidByte5,
- MSEGuidByte4,
- MSEGuidByte0,
- MSEGuidByte2,
- MSEGuidByte3,
- MSEGuidByte7,
- MSEGuidByte1,
- MSETransportGuidByte1,
- MSETransportGuidByte7,
- MSETransportPositionX,
- MSETransportGuidByte4,
- MSETransportTime3,
- MSETransportGuidByte0,
- MSETransportOrientation,
- MSETransportTime2,
- MSETransportTime,
- MSETransportGuidByte6,
- MSETransportPositionZ,
- MSETransportSeat,
- MSETransportPositionY,
- MSETransportGuidByte3,
- MSETransportGuidByte2,
- MSETransportGuidByte5,
- MSEPitch,
- MSETimestamp,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSESplineElevation,
- MSEOrientation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementSetFacingSequence[] =
-{
- MSEPositionX,
- MSEPositionY,
- MSEPositionZ,
- MSEHasGuidByte6,
- MSEHasTransportData,
- MSEHasGuidByte4,
- MSEHasSpline,
- MSEHasGuidByte0,
- MSEHasOrientation,
- MSEHasTimestamp,
- MSEHasPitch,
- MSEHasMovementFlags2,
- MSEHasGuidByte5,
- MSEHasGuidByte7,
- MSEHasGuidByte2,
- MSEHasFallData,
- MSEHasSplineElevation,
- MSEHasMovementFlags,
- MSEHasGuidByte3,
- MSEZeroBit,
- MSEHasGuidByte1,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte0,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte1,
- MSEHasFallDirection,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEGuidByte6,
- MSEGuidByte7,
- MSEGuidByte2,
- MSEGuidByte0,
- MSEGuidByte4,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte3,
- MSETransportGuidByte0,
- MSETransportPositionX,
- MSETransportGuidByte1,
- MSETransportTime2,
- MSETransportGuidByte4,
- MSETransportPositionZ,
- MSETransportOrientation,
- MSETransportGuidByte2,
- MSETransportTime3,
- MSETransportGuidByte3,
- MSETransportSeat,
- MSETransportPositionY,
- MSETransportGuidByte5,
- MSETransportGuidByte6,
- MSETransportTime,
- MSETransportGuidByte7,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallTime,
- MSEFallVerticalSpeed,
- MSESplineElevation,
- MSEOrientation,
- MSETimestamp,
- MSEPitch,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementSetPitchSequence[] =
-{
- MSEPositionX,
- MSEPositionZ,
- MSEPositionY,
- MSEHasFallData,
- MSEHasMovementFlags,
- MSEHasGuidByte1,
- MSEHasOrientation,
- MSEHasGuidByte7,
- MSEHasGuidByte3,
- MSEHasMovementFlags2,
- MSEHasTransportData,
- MSEHasSplineElevation,
- MSEHasGuidByte6,
- MSEHasPitch,
- MSEHasGuidByte4,
- MSEHasSpline,
- MSEHasGuidByte2,
- MSEZeroBit,
- MSEHasTimestamp,
- MSEHasGuidByte0,
- MSEHasGuidByte5,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte5,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte7,
- MSEHasTransportTime2,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEGuidByte3,
- MSEGuidByte7,
- MSEGuidByte1,
- MSEGuidByte6,
- MSEGuidByte0,
- MSEGuidByte5,
- MSEGuidByte2,
- MSEGuidByte4,
- MSETransportGuidByte4,
- MSETransportGuidByte3,
- MSETransportGuidByte6,
- MSETransportOrientation,
- MSETransportGuidByte1,
- MSETransportTime3,
- MSETransportTime,
- MSETransportGuidByte2,
- MSETransportPositionZ,
- MSETransportGuidByte0,
- MSETransportTime2,
- MSETransportPositionY,
- MSETransportGuidByte5,
- MSETransportSeat,
- MSETransportGuidByte7,
- MSETransportPositionX,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSEFallHorizontalSpeed,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEPitch,
- MSESplineElevation,
- MSETimestamp,
- MSEOrientation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartBackwardSequence[] =
-{
- MSEPositionX,
- MSEPositionZ,
- MSEPositionY,
- MSEHasTransportData,
- MSEHasGuidByte3,
- MSEHasGuidByte0,
- MSEHasGuidByte2,
- MSEHasTimestamp,
- MSEHasGuidByte7,
- MSEHasPitch,
- MSEZeroBit,
- MSEHasMovementFlags,
- MSEHasOrientation,
- MSEHasSpline,
- MSEHasMovementFlags2,
- MSEHasFallData,
- MSEHasGuidByte5,
- MSEHasGuidByte1,
- MSEHasGuidByte4,
- MSEHasGuidByte6,
- MSEHasSplineElevation,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte1,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte4,
- MSEHasTransportTime3,
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEHasFallDirection,
- MSEGuidByte6,
- MSEGuidByte7,
- MSEGuidByte4,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte0,
- MSEGuidByte2,
- MSEGuidByte3,
- MSETransportPositionZ,
- MSETransportGuidByte2,
- MSETransportTime3,
- MSETransportGuidByte0,
- MSETransportGuidByte5,
- MSETransportPositionY,
- MSETransportGuidByte1,
- MSETransportPositionX,
- MSETransportTime2,
- MSETransportGuidByte4,
- MSETransportOrientation,
- MSETransportSeat,
- MSETransportGuidByte7,
- MSETransportTime,
- MSETransportGuidByte6,
- MSETransportGuidByte3,
- MSEPitch,
- MSETimestamp,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSEOrientation,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartForwardSequence[] =
-{
- MSEPositionY,
- MSEPositionZ,
- MSEPositionX,
- MSEHasGuidByte5,
- MSEHasGuidByte2,
- MSEHasGuidByte0,
- MSEZeroBit,
- MSEHasMovementFlags,
- MSEHasGuidByte7,
- MSEHasGuidByte3,
- MSEHasGuidByte1,
- MSEHasOrientation,
- MSEHasGuidByte6,
- MSEHasSpline,
- MSEHasSplineElevation,
- MSEHasGuidByte4,
- MSEHasTransportData,
- MSEHasTimestamp,
- MSEHasPitch,
- MSEHasMovementFlags2,
- MSEHasFallData,
- MSEMovementFlags,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte1,
- MSEHasTransportTime3,
- MSEHasTransportTime2,
- MSEHasFallDirection,
- MSEMovementFlags2,
- MSEGuidByte2,
- MSEGuidByte4,
- MSEGuidByte6,
- MSEGuidByte1,
- MSEGuidByte7,
- MSEGuidByte3,
- MSEGuidByte5,
- MSEGuidByte0,
- MSEFallVerticalSpeed,
- MSEFallHorizontalSpeed,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallTime,
- MSETransportGuidByte3,
- MSETransportPositionY,
- MSETransportPositionZ,
- MSETransportGuidByte1,
- MSETransportGuidByte4,
- MSETransportGuidByte7,
- MSETransportOrientation,
- MSETransportGuidByte2,
- MSETransportPositionX,
- MSETransportGuidByte5,
- MSETransportTime3,
- MSETransportTime,
- MSETransportGuidByte6,
- MSETransportGuidByte0,
- MSETransportSeat,
- MSETransportTime2,
- MSESplineElevation,
- MSEPitch,
- MSEOrientation,
- MSETimestamp,
-
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartStrafeLeftSequence[] =
-{
- MSEPositionZ,
- MSEPositionX,
- MSEPositionY,
- MSEHasSplineElevation,
- MSEHasGuidByte5,
- MSEHasPitch,
- MSEHasGuidByte6,
- MSEHasTimestamp,
- MSEHasGuidByte1,
- MSEZeroBit,
- MSEHasGuidByte4,
- MSEHasGuidByte0,
- MSEHasGuidByte2,
- MSEHasFallData,
- MSEHasOrientation,
- MSEHasGuidByte3,
- MSEHasMovementFlags2,
- MSEHasGuidByte7,
- MSEHasSpline,
- MSEHasMovementFlags,
- MSEHasTransportData,
- MSEHasFallDirection,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte7,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte0,
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEGuidByte2,
- MSEGuidByte6,
- MSEGuidByte3,
- MSEGuidByte1,
- MSEGuidByte0,
- MSEGuidByte7,
- MSEGuidByte4,
- MSEGuidByte5,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallCosAngle,
- MSEFallTime,
- MSEFallVerticalSpeed,
- MSETransportSeat,
- MSETransportGuidByte2,
- MSETransportTime2,
- MSETransportGuidByte3,
- MSETransportPositionZ,
- MSETransportTime3,
- MSETransportGuidByte0,
- MSETransportGuidByte7,
- MSETransportPositionY,
- MSETransportGuidByte5,
- MSETransportGuidByte1,
- MSETransportOrientation,
- MSETransportTime,
- MSETransportGuidByte6,
- MSETransportGuidByte4,
- MSETransportPositionX,
- MSETimestamp,
- MSEOrientation,
- MSEPitch,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartStrafeRightSequence[] =
-{
- MSEPositionY,
- MSEPositionX,
- MSEPositionZ,
- MSEHasPitch,
- MSEHasGuidByte1,
- MSEHasOrientation,
- MSEHasGuidByte4,
- MSEHasSpline,
- MSEZeroBit,
- MSEHasGuidByte5,
- MSEHasFallData,
- MSEHasSplineElevation,
- MSEHasTimestamp,
- MSEHasMovementFlags,
- MSEHasGuidByte2,
- MSEHasGuidByte7,
- MSEHasGuidByte6,
- MSEHasGuidByte3,
- MSEHasMovementFlags2,
- MSEHasTransportData,
- MSEHasGuidByte0,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte0,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte4,
- MSEHasTransportTime3,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEGuidByte7,
- MSEGuidByte5,
- MSEGuidByte3,
- MSEGuidByte1,
- MSEGuidByte2,
- MSEGuidByte4,
- MSEGuidByte6,
- MSEGuidByte0,
- MSETransportGuidByte5,
- MSETransportGuidByte1,
- MSETransportGuidByte6,
- MSETransportPositionY,
- MSETransportOrientation,
- MSETransportGuidByte0,
- MSETransportGuidByte2,
- MSETransportSeat,
- MSETransportPositionX,
- MSETransportTime3,
- MSETransportTime,
- MSETransportGuidByte4,
- MSETransportGuidByte7,
- MSETransportTime2,
- MSETransportPositionZ,
- MSETransportGuidByte3,
- MSEPitch,
- MSEOrientation,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallTime,
- MSEFallVerticalSpeed,
- MSETimestamp,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartTurnLeftSequence[] =
-{
- MSEPositionY,
- MSEPositionX,
- MSEPositionZ,
- MSEZeroBit,
- MSEHasGuidByte1,
- MSEHasOrientation,
- MSEHasSpline,
- MSEHasMovementFlags,
- MSEHasGuidByte4,
- MSEHasGuidByte2,
- MSEHasMovementFlags2,
- MSEHasGuidByte5,
- MSEHasGuidByte7,
- MSEHasTransportData,
- MSEHasGuidByte6,
- MSEHasSplineElevation,
- MSEHasGuidByte0,
- MSEHasGuidByte3,
- MSEHasPitch,
- MSEHasTimestamp,
- MSEHasFallData,
- MSEMovementFlags2,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte0,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte6,
- MSEHasFallDirection,
- MSEMovementFlags,
- MSEGuidByte0,
- MSEGuidByte4,
- MSEGuidByte7,
- MSEGuidByte5,
- MSEGuidByte6,
- MSEGuidByte3,
- MSEGuidByte2,
- MSEGuidByte1,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallHorizontalSpeed,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSETransportGuidByte0,
- MSETransportPositionX,
- MSETransportTime,
- MSETransportSeat,
- MSETransportPositionZ,
- MSETransportGuidByte4,
- MSETransportOrientation,
- MSETransportGuidByte2,
- MSETransportGuidByte6,
- MSETransportGuidByte1,
- MSETransportGuidByte3,
- MSETransportPositionY,
- MSETransportTime3,
- MSETransportTime2,
- MSETransportGuidByte5,
- MSETransportGuidByte7,
- MSETimestamp,
- MSEPitch,
- MSEOrientation,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartTurnRightSequence[] =
-{
- MSEPositionX,
- MSEPositionZ,
- MSEPositionY,
- MSEHasGuidByte3,
- MSEHasGuidByte5,
- MSEHasMovementFlags,
- MSEHasSpline,
- MSEHasGuidByte0,
- MSEHasOrientation,
- MSEHasTransportData,
- MSEHasGuidByte7,
- MSEZeroBit,
- MSEHasMovementFlags2,
- MSEHasGuidByte1,
- MSEHasTimestamp,
- MSEHasGuidByte6,
- MSEHasGuidByte2,
- MSEHasGuidByte4,
- MSEHasSplineElevation,
- MSEHasPitch,
- MSEHasFallData,
- MSEHasTransportGuidByte1,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte7,
- MSEHasTransportTime3,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEGuidByte5,
- MSEGuidByte0,
- MSEGuidByte7,
- MSEGuidByte3,
- MSEGuidByte2,
- MSEGuidByte1,
- MSEGuidByte4,
- MSEGuidByte6,
- MSETransportPositionY,
- MSETransportGuidByte0,
- MSETransportGuidByte4,
- MSETransportGuidByte1,
- MSETransportGuidByte6,
- MSETransportGuidByte2,
- MSETransportSeat,
- MSETransportOrientation,
- MSETransportGuidByte5,
- MSETransportTime3,
- MSETransportPositionZ,
- MSETransportPositionX,
- MSETransportTime,
- MSETransportGuidByte7,
- MSETransportGuidByte3,
- MSETransportTime2,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallTime,
- MSEFallVerticalSpeed,
- MSEPitch,
- MSEOrientation,
- MSESplineElevation,
- MSETimestamp,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStopSequence[] =
-{
- MSEPositionX,
- MSEPositionY,
- MSEPositionZ,
- MSEHasGuidByte3,
- MSEHasGuidByte6,
- MSEHasSplineElevation,
- MSEHasSpline,
- MSEHasOrientation,
- MSEHasGuidByte7,
- MSEHasMovementFlags,
- MSEHasGuidByte5,
- MSEHasFallData,
- MSEHasMovementFlags2,
- MSEHasTransportData,
- MSEHasTimestamp,
- MSEHasGuidByte4,
- MSEHasGuidByte1,
- MSEZeroBit,
- MSEHasGuidByte2,
- MSEHasGuidByte0,
- MSEHasPitch,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte5,
- MSEHasTransportTime2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte2,
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEHasFallDirection,
- MSEGuidByte6,
- MSEGuidByte3,
- MSEGuidByte0,
- MSEGuidByte4,
- MSEGuidByte2,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte7,
- MSETransportGuidByte4,
- MSETransportGuidByte7,
- MSETransportTime,
- MSETransportSeat,
- MSETransportPositionZ,
- MSETransportTime3,
- MSETransportGuidByte2,
- MSETransportGuidByte0,
- MSETransportPositionY,
- MSETransportGuidByte1,
- MSETransportGuidByte3,
- MSETransportTime2,
- MSETransportPositionX,
- MSETransportOrientation,
- MSETransportGuidByte5,
- MSETransportGuidByte6,
- MSETimestamp,
- MSEOrientation,
- MSEPitch,
- MSESplineElevation,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStopStrafeSequence[] =
-{
- MSEPositionY,
- MSEPositionZ,
- MSEPositionX,
- MSEHasPitch,
- MSEHasTimestamp,
- MSEHasGuidByte2,
- MSEHasFallData,
- MSEHasGuidByte7,
- MSEHasSplineElevation,
- MSEHasGuidByte3,
- MSEHasOrientation,
- MSEHasMovementFlags2,
- MSEHasTransportData,
- MSEHasMovementFlags,
- MSEHasSpline,
- MSEHasGuidByte0,
- MSEZeroBit,
- MSEHasGuidByte6,
- MSEHasGuidByte5,
- MSEHasGuidByte1,
- MSEHasGuidByte4,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte5,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte3,
- MSEHasTransportTime3,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEMovementFlags2,
- MSEGuidByte2,
- MSEGuidByte7,
- MSEGuidByte3,
- MSEGuidByte4,
- MSEGuidByte5,
- MSEGuidByte6,
- MSEGuidByte1,
- MSEGuidByte0,
- MSETransportSeat,
- MSETransportGuidByte6,
- MSETransportPositionZ,
- MSETransportTime3,
- MSETransportGuidByte1,
- MSETransportGuidByte3,
- MSETransportGuidByte2,
- MSETransportGuidByte4,
- MSETransportGuidByte5,
- MSETransportTime,
- MSETransportOrientation,
- MSETransportPositionX,
- MSETransportGuidByte0,
- MSETransportPositionY,
- MSETransportTime2,
- MSETransportGuidByte7,
- MSEFallCosAngle,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallTime,
- MSEFallVerticalSpeed,
- MSESplineElevation,
- MSEOrientation,
- MSEPitch,
- MSETimestamp,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStopTurnSequence[] =
-{
- MSEPositionX,
- MSEPositionZ,
- MSEPositionY,
- MSEHasGuidByte5,
- MSEHasGuidByte4,
- MSEHasFallData,
- MSEZeroBit,
- MSEHasGuidByte1,
- MSEHasGuidByte0,
- MSEHasSpline,
- MSEHasMovementFlags,
- MSEHasGuidByte2,
- MSEHasGuidByte6,
- MSEHasPitch,
- MSEHasTransportData,
- MSEHasGuidByte3,
- MSEHasSplineElevation,
- MSEHasTimestamp,
- MSEHasMovementFlags2,
- MSEHasOrientation,
- MSEHasGuidByte7,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte7,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte4,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte1,
- MSEHasFallDirection,
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEGuidByte3,
- MSEGuidByte2,
- MSEGuidByte6,
- MSEGuidByte4,
- MSEGuidByte0,
- MSEGuidByte7,
- MSEGuidByte1,
- MSEGuidByte5,
- MSESplineElevation,
- MSETransportPositionX,
- MSETransportGuidByte5,
- MSETransportSeat,
- MSETransportGuidByte2,
- MSETransportGuidByte3,
- MSETransportOrientation,
- MSETransportTime2,
- MSETransportTime3,
- MSETransportGuidByte7,
- MSETransportGuidByte1,
- MSETransportGuidByte0,
- MSETransportGuidByte4,
- MSETransportPositionY,
- MSETransportPositionZ,
- MSETransportTime,
- MSETransportGuidByte6,
- MSEFallTime,
- MSEFallHorizontalSpeed,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallVerticalSpeed,
- MSETimestamp,
- MSEPitch,
- MSEOrientation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartAscendSequence[] =
-{
- MSEPositionX,
- MSEPositionY,
- MSEPositionZ,
- MSEHasGuidByte0,
- MSEHasGuidByte1,
- MSEHasGuidByte7,
- MSEZeroBit,
- MSEHasGuidByte5,
- MSEHasTransportData,
- MSEHasGuidByte2,
- MSEHasSplineElevation,
- MSEHasFallData,
- MSEHasSpline,
- MSEHasGuidByte3,
- MSEHasMovementFlags2,
- MSEHasGuidByte6,
- MSEHasMovementFlags,
- MSEHasPitch,
- MSEHasTimestamp,
- MSEHasOrientation,
- MSEHasGuidByte4,
- MSEMovementFlags,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte4,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte7,
- MSEMovementFlags2,
- MSEHasFallDirection,
- MSEGuidByte6,
- MSEGuidByte3,
- MSEGuidByte1,
- MSEGuidByte4,
- MSEGuidByte2,
- MSEGuidByte0,
- MSEGuidByte5,
- MSEGuidByte7,
- MSETransportGuidByte3,
- MSETransportGuidByte5,
- MSETransportGuidByte4,
- MSETransportSeat,
- MSETransportGuidByte2,
- MSETransportOrientation,
- MSETransportPositionY,
- MSETransportGuidByte7,
- MSETransportTime2,
- MSETransportPositionZ,
- MSETransportTime3,
- MSETransportGuidByte6,
- MSETransportTime,
- MSETransportGuidByte0,
- MSETransportGuidByte1,
- MSETransportPositionX,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallTime,
- MSEFallVerticalSpeed,
- MSEOrientation,
- MSEPitch,
- MSETimestamp,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartDescendSequence[] =
+namespace Movement
{
- MSEPositionY,
- MSEPositionZ,
- MSEPositionX,
- MSEHasGuidByte0,
- MSEHasPitch,
- MSEHasFallData,
- MSEHasGuidByte4,
- MSEHasOrientation,
- MSEHasTimestamp,
- MSEHasMovementFlags2,
- MSEHasMovementFlags,
- MSEHasGuidByte6,
- MSEZeroBit,
- MSEHasGuidByte1,
- MSEHasTransportData,
- MSEHasSpline,
- MSEHasSplineElevation,
- MSEHasGuidByte5,
- MSEHasGuidByte3,
- MSEHasGuidByte7,
- MSEHasGuidByte2,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte6,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte5,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEGuidByte2,
- MSEGuidByte7,
- MSEGuidByte6,
- MSEGuidByte0,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte4,
- MSEGuidByte3,
- MSEPitch,
- MSETransportPositionZ,
- MSETransportSeat,
- MSETransportTime3,
- MSETransportGuidByte6,
- MSETransportTime2,
- MSETransportGuidByte1,
- MSETransportTime,
- MSETransportGuidByte4,
- MSETransportPositionY,
- MSETransportPositionX,
- MSETransportGuidByte7,
- MSETransportGuidByte3,
- MSETransportGuidByte5,
- MSETransportGuidByte2,
- MSETransportOrientation,
- MSETransportGuidByte0,
- MSEFallTime,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallHorizontalSpeed,
- MSEFallVerticalSpeed,
- MSETimestamp,
- MSEOrientation,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartSwimSequence[] =
-{
- MSEPositionZ,
- MSEPositionX,
- MSEPositionY,
- MSEHasGuidByte3,
- MSEHasSplineElevation,
- MSEHasGuidByte4,
- MSEHasGuidByte7,
- MSEZeroBit,
- MSEHasPitch,
- MSEHasGuidByte0,
- MSEHasOrientation,
- MSEHasMovementFlags,
- MSEHasFallData,
- MSEHasGuidByte5,
- MSEHasTransportData,
- MSEHasMovementFlags2,
- MSEHasTimestamp,
- MSEHasGuidByte6,
- MSEHasGuidByte1,
- MSEHasSpline,
- MSEHasGuidByte2,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte0,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte1,
- MSEHasTransportTime3,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEMovementFlags2,
- MSEGuidByte0,
- MSEGuidByte2,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte4,
- MSEGuidByte6,
- MSEGuidByte3,
- MSEGuidByte7,
- MSEPitch,
- MSETransportTime2,
- MSETransportGuidByte2,
- MSETransportPositionY,
- MSETransportGuidByte3,
- MSETransportTime,
- MSETransportPositionX,
- MSETransportOrientation,
- MSETransportTime3,
- MSETransportGuidByte6,
- MSETransportGuidByte5,
- MSETransportGuidByte4,
- MSETransportPositionZ,
- MSETransportGuidByte1,
- MSETransportGuidByte7,
- MSETransportGuidByte0,
- MSETransportSeat,
- MSEFallCosAngle,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSEOrientation,
- MSETimestamp,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStopSwimSequence[] =
-{
- MSEPositionX,
- MSEPositionY,
- MSEPositionZ,
- MSEHasSpline,
- MSEHasPitch,
- MSEHasGuidByte5,
- MSEHasGuidByte3,
- MSEHasGuidByte7,
- MSEHasSplineElevation,
- MSEHasMovementFlags,
- MSEHasGuidByte4,
- MSEHasMovementFlags2,
- MSEHasGuidByte2,
- MSEHasGuidByte6,
- MSEHasTransportData,
- MSEHasOrientation,
- MSEZeroBit,
- MSEHasTimestamp,
- MSEHasGuidByte1,
- MSEHasGuidByte0,
- MSEHasFallData,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte0,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte5,
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEHasFallDirection,
- MSEGuidByte0,
- MSEGuidByte4,
- MSEGuidByte3,
- MSEGuidByte6,
- MSEGuidByte7,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte2,
- MSETransportTime3,
- MSETransportGuidByte4,
- MSETransportTime,
- MSETransportPositionZ,
- MSETransportSeat,
- MSETransportGuidByte3,
- MSETransportGuidByte2,
- MSETransportPositionY,
- MSETransportGuidByte7,
- MSETransportGuidByte1,
- MSETransportGuidByte6,
- MSETransportGuidByte5,
- MSETransportTime2,
- MSETransportPositionX,
- MSETransportGuidByte0,
- MSETransportOrientation,
- MSEFallVerticalSpeed,
- MSEFallCosAngle,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallTime,
- MSETimestamp,
- MSEPitch,
- MSEOrientation,
- MSESplineElevation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStopAscendSequence[] =
-{
- MSEPositionZ,
- MSEPositionY,
- MSEPositionX,
- MSEHasGuidByte3,
- MSEHasGuidByte2,
- MSEHasFallData,
- MSEHasGuidByte7,
- MSEHasOrientation,
- MSEHasPitch,
- MSEHasSpline,
- MSEZeroBit,
- MSEHasGuidByte1,
- MSEHasGuidByte4,
- MSEHasMovementFlags,
- MSEHasGuidByte0,
- MSEHasGuidByte6,
- MSEHasSplineElevation,
- MSEHasTransportData,
- MSEHasMovementFlags2,
- MSEHasTimestamp,
- MSEHasGuidByte5,
- MSEHasTransportTime2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte0,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEGuidByte7,
- MSEGuidByte5,
- MSEGuidByte4,
- MSEGuidByte3,
- MSEGuidByte2,
- MSEGuidByte1,
- MSEGuidByte0,
- MSEGuidByte6,
- MSETransportGuidByte5,
- MSETransportPositionY,
- MSETransportGuidByte7,
- MSETransportGuidByte2,
- MSETransportGuidByte6,
- MSETransportTime2,
- MSETransportTime3,
- MSETransportOrientation,
- MSETransportGuidByte3,
- MSETransportGuidByte4,
- MSETransportSeat,
- MSETransportGuidByte1,
- MSETransportTime,
- MSETransportGuidByte0,
- MSETransportPositionX,
- MSETransportPositionZ,
- MSEFallTime,
- MSEFallVerticalSpeed,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEPitch,
- MSESplineElevation,
- MSETimestamp,
- MSEOrientation,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStopPitchSequence[] =
-{
- MSEPositionY,
- MSEPositionX,
- MSEPositionZ,
- MSEHasGuidByte0,
- MSEHasGuidByte5,
- MSEHasGuidByte3,
- MSEHasFallData,
- MSEHasGuidByte2,
- MSEHasGuidByte4,
- MSEHasGuidByte7,
- MSEHasPitch,
- MSEHasSpline,
- MSEHasOrientation,
- MSEZeroBit,
- MSEHasMovementFlags2,
- MSEHasSplineElevation,
- MSEHasGuidByte6,
- MSEHasGuidByte1,
- MSEHasTimestamp,
- MSEHasTransportData,
- MSEHasMovementFlags,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte3,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte1,
- MSEHasFallDirection,
- MSEMovementFlags2,
- MSEMovementFlags,
- MSEGuidByte1,
- MSEGuidByte7,
- MSEGuidByte0,
- MSEGuidByte6,
- MSEGuidByte4,
- MSEGuidByte3,
- MSEGuidByte5,
- MSEGuidByte2,
- MSETimestamp,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSETransportGuidByte5,
- MSETransportGuidByte2,
- MSETransportTime2,
- MSETransportPositionX,
- MSETransportOrientation,
- MSETransportGuidByte6,
- MSETransportGuidByte3,
- MSETransportGuidByte1,
- MSETransportPositionZ,
- MSETransportTime3,
- MSETransportGuidByte0,
- MSETransportGuidByte4,
- MSETransportTime,
- MSETransportPositionY,
- MSETransportSeat,
- MSETransportGuidByte7,
- MSESplineElevation,
- MSEOrientation,
- MSEPitch,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartPitchDownSequence[] =
-{
- MSEPositionX,
- MSEPositionZ,
- MSEPositionY,
- MSEHasMovementFlags,
- MSEHasGuidByte7,
- MSEHasGuidByte6,
- MSEHasPitch,
- MSEZeroBit,
- MSEHasGuidByte1,
- MSEHasGuidByte4,
- MSEHasTimestamp,
- MSEHasSplineElevation,
- MSEHasMovementFlags2,
- MSEHasTransportData,
- MSEHasGuidByte0,
- MSEHasGuidByte5,
- MSEHasGuidByte3,
- MSEHasSpline,
- MSEHasOrientation,
- MSEHasFallData,
- MSEHasGuidByte2,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte5,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte6,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte2,
- MSEMovementFlags2,
- MSEHasFallDirection,
- MSEMovementFlags,
- MSEGuidByte3,
- MSEGuidByte7,
- MSEGuidByte0,
- MSEGuidByte5,
- MSEGuidByte2,
- MSEGuidByte6,
- MSEGuidByte4,
- MSEGuidByte1,
- MSETransportTime3,
- MSETransportGuidByte3,
- MSETransportTime2,
- MSETransportGuidByte5,
- MSETransportGuidByte1,
- MSETransportPositionY,
- MSETransportGuidByte6,
- MSETransportGuidByte4,
- MSETransportTime,
- MSETransportPositionZ,
- MSETransportPositionX,
- MSETransportGuidByte0,
- MSETransportSeat,
- MSETransportGuidByte2,
- MSETransportGuidByte7,
- MSETransportOrientation,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallCosAngle,
- MSEFallVerticalSpeed,
- MSEFallTime,
- MSEPitch,
- MSEOrientation,
- MSESplineElevation,
- MSETimestamp,
- MSEEnd,
-};
-
-//4.3.4
-MovementStatusElements MovementStartPitchUpSequence[] =
-{
- MSEPositionZ,
- MSEPositionY,
- MSEPositionX,
- MSEHasGuidByte4,
- MSEHasMovementFlags,
- MSEHasMovementFlags2,
- MSEHasSpline,
- MSEHasGuidByte2,
- MSEHasGuidByte6,
- MSEHasGuidByte3,
- MSEZeroBit,
- MSEHasSplineElevation,
- MSEHasFallData,
- MSEHasGuidByte0,
- MSEHasTransportData,
- MSEHasGuidByte1,
- MSEHasGuidByte5,
- MSEHasPitch,
- MSEHasTimestamp,
- MSEHasOrientation,
- MSEHasGuidByte7,
- MSEMovementFlags2,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte1,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte4,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte2,
- MSEMovementFlags,
- MSEHasFallDirection,
- MSEGuidByte0,
- MSEGuidByte3,
- MSEGuidByte4,
- MSEGuidByte6,
- MSEGuidByte7,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte2,
- MSETransportPositionX,
- MSETransportGuidByte1,
- MSETransportGuidByte3,
- MSETransportGuidByte2,
- MSETransportGuidByte0,
- MSETransportTime,
- MSETransportPositionZ,
- MSETransportOrientation,
- MSETransportGuidByte7,
- MSETransportTime2,
- MSETransportSeat,
- MSETransportGuidByte6,
- MSETransportGuidByte5,
- MSETransportTime3,
- MSETransportPositionY,
- MSETransportGuidByte4,
- MSEFallTime,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallVerticalSpeed,
- MSEOrientation,
- MSESplineElevation,
- MSEPitch,
- MSETimestamp,
- MSEEnd,
-};
-
-MovementStatusElements MoveChngTransport[]=
-{
- MSEPositionY,
- MSEPositionX,
- MSEPositionZ,
- MSEHasGuidByte4,
- MSEHasGuidByte0,
- MSEHasGuidByte2,
- MSEHasTransportData,
- MSEHasSpline,
- MSEHasOrientation,
- MSEHasGuidByte6,
- MSEHasTimestamp,
- MSEHasGuidByte5,
- MSEHasGuidByte7,
- MSEHasPitch,
- MSEZeroBit,
- MSEHasGuidByte3,
- MSEHasSplineElevation,
- MSEHasGuidByte1,
- MSEHasFallData,
- MSEHasMovementFlags,
- MSEHasMovementFlags2,
-
- MSEHasTransportGuidByte3,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte5,
-
- MSEMovementFlags,
- MSEMovementFlags2,
- MSEHasFallDirection,
-
- MSEGuidByte7,
- MSEGuidByte5,
- MSEGuidByte1,
- MSEGuidByte2,
- MSEGuidByte6,
- MSEGuidByte4,
- MSEGuidByte0,
- MSEGuidByte3,
-
- MSETransportPositionY,
- MSETransportSeat,
- MSETransportGuidByte1,
- MSETransportGuidByte0,
- MSETransportGuidByte2,
- MSETransportGuidByte3,
- MSETransportGuidByte6,
- MSETransportPositionZ,
- MSETransportPositionX,
- MSETransportTime3,
- MSETransportTime,
- MSETransportGuidByte7,
- MSETransportGuidByte5,
- MSETransportGuidByte4,
- MSETransportOrientation,
- MSETransportTime2,
-
- MSEFallTime,
- MSEFallHorizontalSpeed,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallVerticalSpeed,
-
- MSEOrientation,
- MSEPitch,
- MSESplineElevation,
- MSETimestamp,
- MSEEnd,
-};
-
-// 4.3.4
-MovementStatusElements MoveSplineDone[] =
-{
- MSEPositionY,
- MSEPositionX,
- MSEPositionZ,
- MSEHasGuidByte6,
- MSEHasOrientation,
- MSEHasFallData,
- MSEHasTimestamp,
- MSEHasGuidByte2,
- MSEHasSplineElevation,
- MSEHasGuidByte4,
- MSEHasTransportData,
- MSEHasGuidByte3,
- MSEHasMovementFlags,
- MSEHasGuidByte0,
- MSEZeroBit,
- MSEHasGuidByte1,
- MSEHasGuidByte5,
- MSEHasPitch,
- MSEHasSpline,
- MSEHasMovementFlags2,
- MSEHasGuidByte7,
-
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte6,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte0,
-
- MSEHasFallDirection,
- MSEMovementFlags2,
- MSEMovementFlags,
-
- MSEGuidByte7,
- MSEGuidByte4,
- MSEGuidByte5,
- MSEGuidByte6,
- MSEGuidByte0,
- MSEGuidByte1,
- MSEGuidByte2,
- MSEGuidByte3,
-
- MSEFallVerticalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallHorizontalSpeed,
- MSEFallTime,
-
- MSEPitch,
- MSEOrientation,
-
- MSETransportGuidByte1,
- MSETransportTime3,
- MSETransportGuidByte7,
- MSETransportTime,
- MSETransportPositionY,
- MSETransportPositionX,
- MSETransportPositionZ,
- MSETransportSeat,
- MSETransportOrientation,
- MSETransportGuidByte0,
- MSETransportTime2,
- MSETransportGuidByte2,
- MSETransportGuidByte3,
- MSETransportGuidByte5,
- MSETransportGuidByte6,
- MSETransportGuidByte4,
-
- MSETimestamp,
- MSESplineElevation,
- MSEEnd,
-};
-
-// 4.3.4
-MovementStatusElements MoveNotActiveMover[] =
-{
- MSEPositionZ,
- MSEPositionX,
- MSEPositionY,
- MSEHasMovementFlags2,
- MSEHasTransportData,
- MSEHasGuidByte6,
- MSEHasSplineElevation,
- MSEHasGuidByte3,
- MSEZeroBit,
- MSEHasTimestamp,
- MSEHasGuidByte0,
- MSEHasOrientation,
- MSEHasGuidByte5,
- MSEHasPitch,
- MSEHasGuidByte1,
- MSEHasGuidByte4,
- MSEHasGuidByte7,
- MSEHasSpline,
- MSEHasGuidByte2,
- MSEHasFallData,
- MSEHasMovementFlags,
-
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte6,
- MSEHasTransportGuidByte2,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte7,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte3,
-
- MSEHasFallDirection,
- MSEMovementFlags,
- MSEMovementFlags2,
-
- MSEGuidByte1,
- MSEGuidByte0,
- MSEGuidByte4,
- MSEGuidByte2,
- MSEGuidByte7,
- MSEGuidByte5,
- MSEGuidByte6,
- MSEGuidByte3,
-
- MSEFallVerticalSpeed,
- MSEFallCosAngle,
- MSEFallSinAngle,
- MSEFallHorizontalSpeed,
- MSEFallTime,
-
- MSETransportTime3,
- MSETransportGuidByte1,
- MSETransportTime2,
- MSETransportOrientation,
- MSETransportGuidByte0,
- MSETransportSeat,
- MSETransportGuidByte4,
- MSETransportGuidByte6,
- MSETransportGuidByte3,
- MSETransportGuidByte5,
- MSETransportPositionY,
- MSETransportPositionX,
- MSETransportGuidByte2,
- MSETransportPositionZ,
- MSETransportGuidByte7,
- MSETransportTime,
-
- MSETimestamp,
- MSESplineElevation,
- MSEPitch,
- MSEOrientation,
-
- MSEEnd,
-};
-
-// 4.3.4
-MovementStatusElements DismissControlledVehicle[] =
-{
- MSEPositionY,
- MSEPositionZ,
- MSEPositionX,
- MSEHasSplineElevation,
- MSEHasFallData,
- MSEHasTransportData,
- MSEHasGuidByte4,
- MSEHasGuidByte7,
- MSEHasMovementFlags2,
- MSEHasGuidByte2,
- MSEHasOrientation,
- MSEHasGuidByte0,
- MSEHasGuidByte6,
- MSEHasPitch,
- MSEHasTimestamp,
- MSEHasGuidByte1,
- MSEZeroBit,
- MSEHasSpline,
- MSEHasGuidByte3,
- MSEHasMovementFlags,
- MSEHasGuidByte5,
-
- MSEHasTransportGuidByte5,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte2,
- MSEHasTransportGuidByte0,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte6,
- MSEHasTransportTime2,
-
- MSEMovementFlags2,
- MSEHasFallDirection,
- MSEMovementFlags,
-
- MSEGuidByte6,
- MSEGuidByte3,
- MSEGuidByte1,
- MSEGuidByte5,
- MSEGuidByte2,
- MSEGuidByte4,
- MSEGuidByte7,
- MSEGuidByte0,
-
- MSETimestamp,
-
- MSETransportTime3,
- MSETransportGuidByte4,
- MSETransportGuidByte7,
- MSETransportTime2,
- MSETransportGuidByte6,
- MSETransportTime,
- MSETransportPositionZ,
- MSETransportGuidByte0,
- MSETransportPositionX,
- MSETransportGuidByte3,
- MSETransportSeat,
- MSETransportPositionY,
- MSETransportOrientation,
- MSETransportGuidByte1,
- MSETransportGuidByte5,
- MSETransportGuidByte2,
-
- MSEFallTime,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallVerticalSpeed,
-
- MSEOrientation,
- MSESplineElevation,
- MSEPitch,
- MSEEnd,
-};
-
-// 4.3.4
-MovementStatusElements MoveUpdateTeleport[] =
-{
- MSEPositionZ,
- MSEPositionY,
- MSEPositionX,
- MSEHasOrientation,
-
- MSEHasSpline,
- MSEHasMovementFlags,
- MSEHasGuidByte2,
- MSEHasGuidByte4,
- MSEHasGuidByte6,
- MSEHasFallData,
- MSEHasGuidByte0,
- MSEHasTransportData,
- MSEHasGuidByte5,
-
- MSEHasTransportGuidByte1,
- MSEHasTransportGuidByte4,
- MSEHasTransportGuidByte5,
- MSEHasTransportGuidByte3,
- MSEHasTransportGuidByte0,
- MSEHasTransportTime2,
- MSEHasTransportGuidByte7,
- MSEHasTransportGuidByte6,
- MSEHasTransportTime3,
- MSEHasTransportGuidByte2,
-
- MSEZeroBit,
-
- MSEHasGuidByte7,
- MSEHasGuidByte3,
- MSEHasPitch,
- MSEHasMovementFlags2,
- MSEHasTimestamp,
-
- MSEHasFallDirection,
- MSEMovementFlags2,
- MSEHasSplineElevation,
- MSEMovementFlags,
- MSEHasGuidByte1,
-
- MSEGuidByte7,
- MSETransportGuidByte3,
- MSETransportGuidByte4,
- MSETransportOrientation,
- MSETransportTime3,
- MSETransportGuidByte1,
- MSETransportTime2,
- MSETransportPositionZ,
- MSETransportGuidByte7,
- MSETransportGuidByte0,
- MSETransportGuidByte6,
- MSETransportGuidByte5,
- MSETransportGuidByte2,
- MSETransportSeat,
- MSETransportTime,
- MSETransportPositionY,
- MSETransportPositionX,
-
- MSEGuidByte6,
- MSEPitch,
- MSESplineElevation,
- MSEOrientation,
- MSEGuidByte2,
- MSEGuidByte3,
- MSEGuidByte1,
+ class ExtraMovementStatusElement
+ {
+ public:
+ ExtraMovementStatusElement(MovementStatusElements const* elements) : _elements(elements), _index(0) { }
- MSEFallTime,
- MSEFallHorizontalSpeed,
- MSEFallSinAngle,
- MSEFallCosAngle,
- MSEFallVerticalSpeed,
+ void ReadNextElement(ByteBuffer& packet);
+ void WriteNextElement(ByteBuffer& packet);
- MSEGuidByte5,
- MSEGuidByte4,
- MSETimestamp,
- MSEGuidByte0,
+ struct
+ {
+ ObjectGuid guid;
+ float floatData;
+ } Data;
- MSEEnd,
-};
+ private:
+ MovementStatusElements const* _elements;
+ uint32 _index;
+ };
-MovementStatusElements* GetMovementStatusElementsSequence(Opcodes opcode)
-{
- switch (opcode)
+ class PacketSender
{
- case MSG_MOVE_FALL_LAND:
- return MovementFallLandSequence;
- case MSG_MOVE_HEARTBEAT:
- return MovementHeartBeatSequence;
- case MSG_MOVE_JUMP:
- return MovementJumpSequence;
- case MSG_MOVE_SET_FACING:
- return MovementSetFacingSequence;
- case MSG_MOVE_SET_PITCH:
- return MovementSetPitchSequence;
- case MSG_MOVE_START_ASCEND:
- return MovementStartAscendSequence;
- case MSG_MOVE_START_BACKWARD:
- return MovementStartBackwardSequence;
- case MSG_MOVE_START_DESCEND:
- return MovementStartDescendSequence;
- case MSG_MOVE_START_FORWARD:
- return MovementStartForwardSequence;
- case MSG_MOVE_START_PITCH_DOWN:
- return MovementStartPitchDownSequence;
- case MSG_MOVE_START_PITCH_UP:
- return MovementStartPitchUpSequence;
- case MSG_MOVE_START_STRAFE_LEFT:
- return MovementStartStrafeLeftSequence;
- case MSG_MOVE_START_STRAFE_RIGHT:
- return MovementStartStrafeRightSequence;
- case MSG_MOVE_START_SWIM:
- return MovementStartSwimSequence;
- 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_ASCEND:
- return MovementStopAscendSequence;
- case MSG_MOVE_STOP_PITCH:
- return MovementStopPitchSequence;
- case MSG_MOVE_STOP_STRAFE:
- return MovementStopStrafeSequence;
- case MSG_MOVE_STOP_SWIM:
- return MovementStopSwimSequence;
- case MSG_MOVE_STOP_TURN:
- return MovementStopTurnSequence;
- case SMSG_PLAYER_MOVE:
- return PlayerMoveSequence;
- case CMSG_MOVE_CHNG_TRANSPORT:
- return MoveChngTransport;
- case CMSG_MOVE_SPLINE_DONE:
- return MoveSplineDone;
- case CMSG_MOVE_NOT_ACTIVE_MOVER:
- return MoveNotActiveMover;
- case CMSG_DISMISS_CONTROLLED_VEHICLE:
- return DismissControlledVehicle;
- case MSG_MOVE_UPDATE_TELEPORT:
- return MoveUpdateTeleport;
- default:
- break;
- }
+ public:
+ PacketSender(Unit* unit, Opcodes serverControl, Opcodes playerControl, Opcodes broadcast = SMSG_PLAYER_MOVE, ExtraMovementStatusElement* extras = NULL);
+
+ void Send() const;
- return NULL;
+ private:
+ ExtraMovementStatusElement* _extraElements;
+ Unit* _unit;
+ Opcodes _selfOpcode;
+ Opcodes _broadcast;
+ };
}
+MovementStatusElements* GetMovementStatusElementsSequence(Opcodes opcode);
+
#endif
diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp
index d36e351ba9d..cb6b1453a46 100644
--- a/src/server/game/Scripting/MapScripts.cpp
+++ b/src/server/game/Scripting/MapScripts.cpp
@@ -886,12 +886,10 @@ void Map::ScriptsProcess()
if (!targetUnit)
break;
- sourceUnit->SetInFront(targetUnit);
+ sourceUnit->SetFacingToObject(targetUnit);
}
else
- sourceUnit->SetOrientation(step.script->Orientation.Orientation);
-
- sourceUnit->SendMovementFlagUpdate();
+ sourceUnit->SetFacingTo(step.script->Orientation.Orientation);
}
break;
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 05f72fc3e93..b6e373e92d9 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -358,15 +358,15 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(CMSG_MOVE_CHNG_TRANSPORT, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_FALL_RESET, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_FEATHER_FALL_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleFeatherFallAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_PITCH_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_RUN_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_SWIM_BACK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_SWIM_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_TURN_RATE_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleForceSpeedChangeAck );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_GRAVITY_DISABLE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_GRAVITY_ENABLE_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_HOVER_ACK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveHoverAck );
@@ -375,7 +375,7 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(CMSG_MOVE_SET_CAN_FLY, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_SET_CAN_FLY_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveSetCanFlyAckOpcode );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER(CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
+ DEFINE_OPCODE_HANDLER(CMSG_MOVE_SET_COLLISION_HEIGHT_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSetCollisionHeightAck );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_SPLINE_DONE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveSplineDoneOpcode );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_TIME_SKIPPED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleMoveTimeSkippedOpcode );
DEFINE_OPCODE_HANDLER(CMSG_MOVE_WATER_WALK_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck );
@@ -595,9 +595,6 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(MSG_MOVE_TELEPORT_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(MSG_MOVE_TIME_SKIPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(MSG_MOVE_TOGGLE_COLLISION_CHEAT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER(MSG_MOVE_UPDATE_FLIGHT_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER(MSG_MOVE_UPDATE_RUN_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- DEFINE_OPCODE_HANDLER(MSG_MOVE_UPDATE_TELEPORT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(MSG_MOVE_WORLDPORT_ACK, STATUS_TRANSFER, PROCESS_THREADUNSAFE, &WorldSession::HandleMoveWorldportAckOpcode );
DEFINE_OPCODE_HANDLER(MSG_NOTIFY_PARTY_SQUELCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(MSG_PARTY_ASSIGNMENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandlePartyAssignmentOpcode );
@@ -1015,11 +1012,14 @@ void OpcodeTable::Initialize()
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UNSET_HOVER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_COLLISION_HEIGHT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_FLIGHT_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_KNOCK_BACK, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_PITCH_RATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_BACK_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_RUN_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_BACK_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_SWIM_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TELEPORT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_TURN_RATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_UPDATE_WALK_SPEED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(SMSG_MOVE_WATER_WALK, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 2016614efc2..427e2760bca 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -596,10 +596,7 @@ enum Opcodes
MSG_MINIMAP_PING = 0x6635,
MSG_MOVE_CHARM_TELEPORT_CHEAT = 0x7A08,
MSG_MOVE_FALL_LAND = 0x380A,
- MSG_MOVE_FEATHER_FALL = 0x0000,
- MSG_MOVE_GRAVITY_CHNG = 0x0000,
MSG_MOVE_HEARTBEAT = 0x3914,
- MSG_MOVE_HOVER = 0x0000,
MSG_MOVE_JUMP = 0x7A06,
MSG_MOVE_SET_ALL_SPEED_CHEAT = 0x0000,
MSG_MOVE_SET_COLLISION_HEIGHT = 0x0000,
@@ -639,12 +636,7 @@ enum Opcodes
MSG_MOVE_TOGGLE_COLLISION_CHEAT = 0x7B04,
MSG_MOVE_TOGGLE_FALL_LOGGING = 0x0000,
MSG_MOVE_TOGGLE_LOGGING = 0x0000,
- MSG_MOVE_UPDATE_CAN_FLY = 0x0000,
- MSG_MOVE_UPDATE_FLIGHT_SPEED = 0x30B1,
MSG_MOVE_UPDATE_MOUSE = 0x0000,
- MSG_MOVE_UPDATE_RUN_SPEED = 0x14A6,
- MSG_MOVE_UPDATE_TELEPORT = 0x50B2,
- MSG_MOVE_WATER_WALK = 0x0000,
MSG_MOVE_WORLDPORT_ACK = 0x2411,
MSG_NOTIFY_PARTY_SQUELCH = 0x4D06,
MSG_PARTY_ASSIGNMENT = 0x0424,
@@ -1065,10 +1057,6 @@ enum Opcodes
SMSG_MOUNTSPECIAL_ANIM = 0x0217,
SMSG_MOVE_COLLISION_DISABLE = 0x31B0,
SMSG_MOVE_COLLISION_ENABLE = 0x11A7,
- SMSG_MOVE_DISABLE_COLLISION = 0x0000,
- SMSG_MOVE_DISABLE_GRAVITY = 0x0000,
- SMSG_MOVE_ENABLE_COLLISION = 0x0000,
- SMSG_MOVE_ENABLE_GRAVITY = 0x0000,
SMSG_MOVE_FEATHER_FALL = 0x79B0,
SMSG_MOVE_GRAVITY_DISABLE = 0x75B2,
SMSG_MOVE_GRAVITY_ENABLE = 0x30B3,
@@ -1100,12 +1088,14 @@ enum Opcodes
SMSG_MOVE_UNSET_WALK_IN_AIR = 0x0000,
SMSG_MOVE_UPDATE_COLLISION_HEIGHT = 0x59A3,
SMSG_MOVE_UPDATE_FLIGHT_BACK_SPEED = 0x74A0,
+ SMSG_MOVE_UPDATE_FLIGHT_SPEED = 0x30B1,
SMSG_MOVE_UPDATE_KNOCK_BACK = 0x3DB2,
SMSG_MOVE_UPDATE_PITCH_RATE = 0x1DB5,
SMSG_MOVE_UPDATE_RUN_BACK_SPEED = 0x3DA6,
+ SMSG_MOVE_UPDATE_RUN_SPEED = 0x14A6,
SMSG_MOVE_UPDATE_SWIM_BACK_SPEED = 0x30B5,
SMSG_MOVE_UPDATE_SWIM_SPEED = 0x59B5,
- SMSG_MOVE_UPDATE_TELEPORT = 0x0000,
+ SMSG_MOVE_UPDATE_TELEPORT = 0x50B2,
SMSG_MOVE_UPDATE_TURN_RATE = 0x5DA1,
SMSG_MOVE_UPDATE_WALK_SPEED = 0x54A2,
SMSG_MOVE_WATER_WALK = 0x75B1,
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index be3362d746f..d4c4e5ef477 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -430,6 +430,7 @@ class WorldSession
void HandleMoveTeleportAck(WorldPacket& recvPacket);
void HandleForceSpeedChangeAck(WorldPacket& recvData);
+ void HandleSetCollisionHeightAck(WorldPacket& recvPacket);
void HandlePingOpcode(WorldPacket& recvPacket);
void HandleAuthSessionOpcode(WorldPacket& recvPacket);
diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp
index 3ca81e3e6f3..aeac475fdb1 100644
--- a/src/server/scripts/Commands/cs_cheat.cpp
+++ b/src/server/scripts/Commands/cs_cheat.cpp
@@ -185,10 +185,11 @@ public:
std::string argstr = (char*)args;
+ Player* target = handler->GetSession()->GetPlayer();
if (!*args)
{
- argstr = (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_WATERWALK)) ? "off" : "on";
- if (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_WATERWALK))
+ argstr = (target->GetCommandStatus(CHEAT_WATERWALK)) ? "off" : "on";
+ if (target->GetCommandStatus(CHEAT_WATERWALK))
argstr = "off";
else
argstr = "on";
@@ -196,15 +197,17 @@ public:
if (argstr == "off")
{
- handler->GetSession()->GetPlayer()->SetCommandStatusOff(CHEAT_WATERWALK);
- handler->GetSession()->GetPlayer()->SendMovementSetWaterWalking(false); // OFF
+ target->SetCommandStatusOff(CHEAT_WATERWALK);
+ target->RemoveUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
+ target->SendMovementWaterWalking(); // OFF
handler->SendSysMessage("Waterwalking is OFF. You can't walk on water.");
return true;
}
else if (argstr == "on")
{
- handler->GetSession()->GetPlayer()->SetCommandStatusOn(CHEAT_WATERWALK);
- handler->GetSession()->GetPlayer()->SendMovementSetWaterWalking(true); // ON
+ target->SetCommandStatusOn(CHEAT_WATERWALK);
+ target->AddUnitMovementFlag(MOVEMENTFLAG_WATERWALKING);
+ target->SendMovementWaterWalking(); // ON
handler->SendSysMessage("Waterwalking is ON. You can walk on water.");
return true;
}
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 56b8d251de6..1c3968cae8e 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -1331,7 +1331,15 @@ public:
target->SetExtraUnitMovementFlags(moveFlagsExtra);
}
- target->SendMovementFlagUpdate();
+ if (target->GetTypeId() != TYPEID_PLAYER)
+ target->DestroyForNearbyPlayers(); // Force new SMSG_UPDATE_OBJECT:CreateObject
+ else
+ {
+ WorldPacket data(SMSG_PLAYER_MOVE);
+ target->WriteMovementInfo(data);
+ target->SendMessageToSet(&data, true);
+ }
+
handler->PSendSysMessage(LANG_MOVEFLAGS_SET, target->GetUnitMovementFlags(), target->GetExtraUnitMovementFlags());
}
diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp
index a99957a07c0..e0c338a2dbf 100644
--- a/src/server/scripts/Commands/cs_gm.cpp
+++ b/src/server/scripts/Commands/cs_gm.cpp
@@ -103,9 +103,15 @@ public:
WorldPacket data;
if (strncmp(args, "on", 3) == 0)
- target->SendMovementSetCanFly(true);
+ {
+ target->AddUnitMovementFlag(MOVEMENTFLAG_CAN_FLY);
+ target->SendMovementCanFlyChange();
+ }
else if (strncmp(args, "off", 4) == 0)
- target->SendMovementSetCanFly(false);
+ {
+ target->RemoveUnitMovementFlag(MOVEMENTFLAG_CAN_FLY);
+ target->SendMovementCanFlyChange();
+ }
else
{
handler->SendSysMessage(LANG_USE_BOL);
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index abaf900508c..e4929eed313 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -1001,10 +1001,7 @@ public:
{
case 1:
if (Unit* car = Unit::GetCreature(*me, carGUID))
- {
- me->SetInFront(car);
- me->SendMovementFlagUpdate();
- }
+ me->SetFacingToObject(car);
Talk(SAY_SCARLET_MINER_0);
SetRun(true);
IntroTimer = 4000;
@@ -1013,8 +1010,7 @@ public:
case 17:
if (Unit* car = Unit::GetCreature(*me, carGUID))
{
- me->SetInFront(car);
- me->SendMovementFlagUpdate();
+ me->SetFacingToObject(car);
car->Relocate(car->GetPositionX(), car->GetPositionY(), me->GetPositionZ() + 1);
car->StopMoving();
car->RemoveAura(SPELL_CART_DRAG);
diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
index ff6d434fa40..0c2c9597cfe 100644
--- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
@@ -297,8 +297,7 @@ class npc_harrison_jones : public CreatureScript
if (me->GetCreatureTemplate()->GossipMenuId == sender && !action)
{
player->CLOSE_GOSSIP_MENU();
- me->SetInFront(player);
- me->SendMovementFlagUpdate(true);
+ me->SetFacingToObject(player);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_HARRISON_0);
_gongEvent = GONG_EVENT_1;
diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp
index 0f52daba991..f4f7dc6a23e 100644
--- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp
+++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp
@@ -242,8 +242,7 @@ public:
{
case 4:
SetEscortPaused(true);
- me->SetOrientation(1.775791f);
- me->SendMovementFlagUpdate();
+ me->SetFacingTo(1.775791f);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_MORRIDUNE_2);
break;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
index 553b836da8f..cd5efa56840 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp
@@ -479,17 +479,15 @@ public:
switch (uiWaypoint)
{
case 0:
- me->SetOrientation(5.81f);
+ me->SetFacingTo(5.81f);
break;
case 1:
- me->SetOrientation(4.60f);
+ me->SetFacingTo(4.60f);
break;
case 2:
- me->SetOrientation(2.79f);
+ me->SetFacingTo(2.79f);
break;
}
-
- me->SendMovementFlagUpdate();
}
}
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp
index 472048501a5..9d0bb450a73 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp
@@ -191,10 +191,7 @@ public:
return;
if (uiPointId == 1)
- {
- me->SetOrientation(ORIENTATION);
- me->SendMovementFlagUpdate();
- }
+ me->SetFacingTo(ORIENTATION);
}
void DoSummonGrandChampion(uint32 uiBoss)
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
index 61a654ec2bb..c3158acf67d 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp
@@ -300,8 +300,7 @@ class boss_devourer_of_souls : public CreatureScript
DoCast(me, SPELL_WAILING_SOULS_STARTING);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
- me->SetOrientation(me->GetAngle(target));
- me->SendMovementFlagUpdate();
+ me->SetFacingTo(me->GetAngle(target));
DoCast(me, SPELL_WAILING_SOULS_BEAM);
}
@@ -327,8 +326,7 @@ class boss_devourer_of_souls : public CreatureScript
case EVENT_WAILING_SOULS_TICK:
beamAngle += beamAngleDiff;
- me->SetOrientation(beamAngle);
- me->SendMovementFlagUpdate();
+ me->SetFacingTo(beamAngle);
me->StopMoving();
DoCast(me, SPELL_WAILING_SOULS);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index f4df90c49e8..8e8fb9ba9ac 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -205,7 +205,6 @@ class boss_blood_queen_lana_thel : public CreatureScript
minchar->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
minchar->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND);
minchar->SetCanFly(false);
- minchar->SendMovementFlagUpdate();
minchar->RemoveAllAuras();
minchar->GetMotionMaster()->MoveCharge(4629.3711f, 2782.6089f, 401.5301f, SPEED_CHARGE/3.0f);
}
@@ -238,7 +237,6 @@ class boss_blood_queen_lana_thel : public CreatureScript
me->SetDisableGravity(true);
me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND);
me->SetCanFly(true);
- me->SendMovementFlagUpdate();
me->GetMotionMaster()->MovePoint(POINT_MINCHAR, mincharPos);
}
}
@@ -318,7 +316,6 @@ class boss_blood_queen_lana_thel : public CreatureScript
me->SetDisableGravity(false);
me->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND);
me->SetCanFly(false);
- me->SendMovementFlagUpdate();
me->SetReactState(REACT_AGGRESSIVE);
if (Unit* victim = me->SelectVictim())
AttackStart(victim);
@@ -445,7 +442,6 @@ class boss_blood_queen_lana_thel : public CreatureScript
me->SetDisableGravity(true);
me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND);
me->SetCanFly(true);
- me->SendMovementFlagUpdate();
me->GetMotionMaster()->MovePoint(POINT_AIR, airPos);
break;
case EVENT_AIR_FLY_DOWN:
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
index 0e5941138a6..ebd1aa85078 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp
@@ -294,7 +294,6 @@ class boss_sapphiron : public CreatureScript
case EVENT_LIFTOFF:
Talk(EMOTE_AIR_PHASE);
me->SetDisableGravity(true);
- me->SendMovementFlagUpdate();
events.ScheduleEvent(EVENT_ICEBOLT, 1500);
_iceboltCount = RAID_MODE(2, 3);
return;
@@ -339,7 +338,6 @@ class boss_sapphiron : public CreatureScript
me->HandleEmoteCommand(EMOTE_ONESHOT_LAND);
Talk(EMOTE_GROUND_PHASE);
me->SetDisableGravity(false);
- me->SendMovementFlagUpdate();
events.ScheduleEvent(EVENT_GROUND, 1500);
return;
case EVENT_GROUND:
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
index f2090f6a2e6..8ff0c798f00 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
@@ -325,8 +325,7 @@ public:
break;
case 7:
Talk(SAY_SVALA_INTRO_2);
- me->SetOrientation(1.58f);
- me->SendMovementFlagUpdate();
+ me->SetFacingTo(1.58f);
arthas->SetVisible(false);
++introPhase;
introTimer = 13800;
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 6fb1079d94c..147d5eb1370 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -2358,10 +2358,7 @@ public:
me->StopMoving();
me->SetUInt32Value(UNIT_NPC_FLAGS, 0);
if (Player* player = me->GetPlayer(*me, uiPlayerGUID))
- {
- me->SetInFront(player);
- me->SendMovementFlagUpdate();
- }
+ me->SetFacingToObject(player);
uiEventTimer = 3000;
uiEventPhase = 1;
}
@@ -2411,10 +2408,7 @@ public:
case NPC_SALTY_JOHN_THORPE:
Talk(SAY_HIDDEN_CULTIST_4);
if (Player* player = me->GetPlayer(*me, uiPlayerGUID))
- {
- me->SetInFront(player);
- me->SendMovementFlagUpdate();
- }
+ me->SetFacingToObject(player);
uiEventTimer = 3000;
uiEventPhase = 3;
break;
diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp
index 33a573b9b35..1d04a9b163c 100644
--- a/src/server/scripts/Northrend/zone_zuldrak.cpp
+++ b/src/server/scripts/Northrend/zone_zuldrak.cpp
@@ -1372,8 +1372,7 @@ public:
player->CLOSE_GOSSIP_MENU();
creature->CastSpell(player, SPELL_QUEST_CREDIT, true);
CAST_AI(npc_crusade_recruit::npc_crusade_recruitAI, (creature->AI()))->m_uiPhase = 1;
- creature->SetInFront(player);
- creature->SendMovementFlagUpdate();
+ creature->SetFacingToObject(player);
}
return true;
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 0c9817ba167..a8407525a1b 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -2293,8 +2293,7 @@ class spell_item_unusual_compass : public SpellScriptLoader
void HandleDummy(SpellEffIndex /* effIndex */)
{
Unit* caster = GetCaster();
- caster->SetOrientation(frand(0.0f, 62832.0f) / 10000.0f);
- caster->SendMovementFlagUpdate(true);
+ caster->SetFacingTo(frand(0.0f, 62832.0f) / 10000.0f);
}
void Register()