diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 684 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Object.h | 12 | ||||
-rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Object/ObjectGuid.h | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateData.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateData.h | 26 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Movement/MovementStructures.cpp | 408 | ||||
-rw-r--r-- | src/server/game/Movement/MovementStructures.h | 8 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MovementPacketBuilder.cpp | 133 | ||||
-rw-r--r-- | src/server/game/Movement/Spline/MovementPacketBuilder.h | 3 |
14 files changed, 716 insertions, 625 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index fa9634add80..e4313032d6f 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -177,7 +177,7 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c return; uint8 updateType = UPDATETYPE_CREATE_OBJECT; - uint16 flags = m_updateFlag; + uint32 flags = m_updateFlag; /** lower flag1 **/ if (target == this) // building packet for yourself @@ -239,7 +239,7 @@ void Object::BuildCreateUpdateBlockForPlayer(UpdateData* data, Player* target) c flags |= UPDATEFLAG_ANIMKITS; } - ByteBuffer buf(500); + ByteBuffer buf(0x400); buf << uint8(updateType); buf << GetPackGUID(); buf << uint8(m_objectTypeId); @@ -348,325 +348,177 @@ ObjectGuid const& Object::GetGuidValue(uint16 index) const return *((ObjectGuid*)&(m_uint32Values[index])); } -void Object::BuildMovementUpdate(ByteBuffer* data, uint16 flags) const -{ - Unit const* self = NULL; - ObjectGuid guid = GetGUID(); - uint32 movementFlags = 0; - uint16 movementFlagsExtra = 0; - - bool hasTransportTime2 = false; - bool hasTransportTime3 = false; - bool hasFallDirection = false; - bool hasFallData = false; - bool hasPitch = false; - bool hasSpline = false; - bool hasSplineElevation = false; - - uint32 stopFrameCount = 0; +void Object::BuildMovementUpdate(ByteBuffer* data, uint32 flags) const +{ + bool NoBirthAnim = false; + bool EnablePortals = false; + bool PlayHoverAnim = false; + bool IsSuppressingGreetings = false; + bool HasMovementUpdate = flags & UPDATEFLAG_LIVING; + bool HasMovementTransport = flags & UPDATEFLAG_GO_TRANSPORT_POSITION; + bool Stationary = flags & UPDATEFLAG_STATIONARY_POSITION; + bool CombatVictim = flags & UPDATEFLAG_HAS_TARGET; + bool ServerTime = flags & UPDATEFLAG_TRANSPORT; + bool VehicleCreate = flags & UPDATEFLAG_VEHICLE; + bool AnimKitCreate = flags & UPDATEFLAG_ANIMKITS; + bool Rotation = flags & UPDATEFLAG_ROTATION; + bool HasAreaTrigger = false; + bool HasGameObject = false; + bool ThisIsYou = flags & UPDATEFLAG_SELF; + bool ReplaceActive = false; + bool SceneObjCreate = false; + bool ScenePendingInstances = false; + uint32 PauseTimesCount = 0; if (GameObject const* go = ToGameObject()) if (go->GetGoType() == GAMEOBJECT_TYPE_TRANSPORT) - stopFrameCount = go->GetGOValue()->Transport.StopFrames->size(); - - // Bit content - data->WriteBit(0); - data->WriteBit(0); - data->WriteBit(flags & UPDATEFLAG_ROTATION); - data->WriteBit(flags & UPDATEFLAG_ANIMKITS); - data->WriteBit(flags & UPDATEFLAG_HAS_TARGET); - data->WriteBit(flags & UPDATEFLAG_SELF); - data->WriteBit(flags & UPDATEFLAG_VEHICLE); - data->WriteBit(flags & UPDATEFLAG_LIVING); - data->WriteBits(stopFrameCount, 24); - data->WriteBit(0); - data->WriteBit(flags & UPDATEFLAG_GO_TRANSPORT_POSITION); - data->WriteBit(flags & UPDATEFLAG_STATIONARY_POSITION); - data->WriteBit(flags & UPDATEFLAG_UNK5); - data->WriteBit(0); - data->WriteBit(flags & UPDATEFLAG_TRANSPORT); - - if (flags & UPDATEFLAG_LIVING) - { - self = ToUnit(); - movementFlags = self->m_movementInfo.GetMovementFlags(); - movementFlagsExtra = self->m_movementInfo.GetExtraMovementFlags(); - hasSpline = self->IsSplineEnabled(); - - hasTransportTime2 = !self->m_movementInfo.transport.guid.IsEmpty() && self->m_movementInfo.transport.time2 != 0; - hasTransportTime3 = false; - hasPitch = self->HasUnitMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || self->HasExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING); - hasFallDirection = self->HasUnitMovementFlag(MOVEMENTFLAG_FALLING); - hasFallData = hasFallDirection || self->m_movementInfo.jump.fallTime != 0; - hasSplineElevation = self->HasUnitMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION); - - if (GetTypeId() == TYPEID_UNIT) - movementFlags &= MOVEMENTFLAG_MASK_CREATURE_ALLOWED; - - data->WriteBit(!movementFlags); - data->WriteBit(G3D::fuzzyEq(self->GetOrientation(), 0.0f)); // Has Orientation - data->WriteBit(guid[7]); - data->WriteBit(guid[3]); - data->WriteBit(guid[2]); - if (movementFlags) - data->WriteBits(movementFlags, 30); - - data->WriteBit(hasSpline && GetTypeId() == TYPEID_PLAYER); // Has spline (from MovementInfo) - data->WriteBit(!hasPitch); // Has pitch - data->WriteBit(hasSpline); // Has spline data (independent) - data->WriteBit(hasFallData); // Has fall data - data->WriteBit(!hasSplineElevation); // Has spline elevation - data->WriteBit(guid[5]); - data->WriteBit(!self->m_movementInfo.transport.guid.IsEmpty()); // Has transport data - data->WriteBit(0); // Is missing time - - if (!self->m_movementInfo.transport.guid.IsEmpty()) - { - ObjectGuid transGuid = self->m_movementInfo.transport.guid; - - data->WriteBit(transGuid[1]); - data->WriteBit(hasTransportTime2); // Has transport time 2 - data->WriteBit(transGuid[4]); - data->WriteBit(transGuid[0]); - data->WriteBit(transGuid[6]); - data->WriteBit(hasTransportTime3); // Has transport time 3 - data->WriteBit(transGuid[7]); - data->WriteBit(transGuid[5]); - data->WriteBit(transGuid[3]); - data->WriteBit(transGuid[2]); - } - - data->WriteBit(guid[4]); - - if (hasSpline) - Movement::PacketBuilder::WriteCreateBits(*self->movespline, *data); - - data->WriteBit(guid[6]); - if (hasFallData) - data->WriteBit(hasFallDirection); - - data->WriteBit(guid[0]); - data->WriteBit(guid[1]); - data->WriteBit(0); - data->WriteBit(!movementFlagsExtra); - if (movementFlagsExtra) - data->WriteBits(movementFlagsExtra, 12); - } - - if (flags & UPDATEFLAG_GO_TRANSPORT_POSITION) - { - WorldObject const* self = static_cast<WorldObject const*>(this); - ObjectGuid transGuid = self->m_movementInfo.transport.guid; - data->WriteBit(transGuid[5]); - data->WriteBit(0); // Has GO transport time 3 - data->WriteBit(transGuid[0]); - data->WriteBit(transGuid[3]); - data->WriteBit(transGuid[6]); - data->WriteBit(transGuid[1]); - data->WriteBit(transGuid[4]); - data->WriteBit(transGuid[2]); - data->WriteBit(0); // Has GO transport time 2 - data->WriteBit(transGuid[7]); - } - - if (flags & UPDATEFLAG_HAS_TARGET) - { - ObjectGuid victimGuid = self->GetVictim()->GetGUID(); // checked in BuildCreateUpdateBlockForPlayer - data->WriteBit(victimGuid[2]); - data->WriteBit(victimGuid[7]); - data->WriteBit(victimGuid[0]); - data->WriteBit(victimGuid[4]); - data->WriteBit(victimGuid[5]); - data->WriteBit(victimGuid[6]); - data->WriteBit(victimGuid[1]); - data->WriteBit(victimGuid[3]); - } - - if (flags & UPDATEFLAG_ANIMKITS) + PauseTimesCount = go->GetGOValue()->Transport.StopFrames->size(); + + data->WriteBit(NoBirthAnim); + data->WriteBit(EnablePortals); + data->WriteBit(PlayHoverAnim); + data->WriteBit(IsSuppressingGreetings); + data->WriteBit(HasMovementUpdate); + data->WriteBit(HasMovementTransport); + data->WriteBit(Stationary); + data->WriteBit(CombatVictim); + data->WriteBit(ServerTime); + data->WriteBit(VehicleCreate); + data->WriteBit(AnimKitCreate); + data->WriteBit(Rotation); + data->WriteBit(HasAreaTrigger); + data->WriteBit(HasGameObject); + data->WriteBit(ThisIsYou); + data->WriteBit(ReplaceActive); + data->WriteBit(SceneObjCreate); + data->WriteBit(ScenePendingInstances); + *data << uint32(PauseTimesCount); + + if (HasMovementUpdate) { Unit const* unit = ToUnit(); - data->WriteBit(unit->GetAIAnimKitId() == 0); - data->WriteBit(unit->GetMovementAnimKitId() == 0); - data->WriteBit(unit->GetMeleeAnimKitId() == 0); - } + bool HasFallDirection = unit->HasUnitMovementFlag(MOVEMENTFLAG_FALLING); + bool HasFall = HasFallDirection || unit->m_movementInfo.jump.fallTime != 0; + bool HasSpline = unit->IsSplineEnabled(); - data->FlushBits(); + *data << unit->m_movementInfo.guid; // MoverGUID - // Data - if (GameObject const* go = ToGameObject()) - for (uint32 i = 0; i < stopFrameCount; ++i) - *data << uint32(go->GetGOValue()->Transport.StopFrames->at(i)); + *data << uint32(unit->m_movementInfo.time); // MoveIndex + *data << float(unit->GetPositionX()); + *data << float(unit->GetPositionY()); + *data << float(unit->GetPositionZ()); + *data << float(unit->GetOrientation()); - if (flags & UPDATEFLAG_LIVING) - { - data->WriteByteSeq(guid[4]); - *data << self->GetSpeed(MOVE_RUN_BACK); + *data << float(unit->m_movementInfo.pitch); // Pitch + *data << float(unit->m_movementInfo.splineElevation); // StepUpStartElevation - if (hasFallData) - { - if (hasFallDirection) - { - *data << float(self->m_movementInfo.jump.xyspeed); - *data << float(self->m_movementInfo.jump.sinAngle); - *data << float(self->m_movementInfo.jump.cosAngle); - } - - *data << uint32(self->m_movementInfo.jump.fallTime); - *data << float(self->m_movementInfo.jump.zspeed); - } - - *data << self->GetSpeed(MOVE_SWIM_BACK); - if (hasSplineElevation) - *data << float(self->m_movementInfo.splineElevation); + uint32 removeMovementForcesCount = 0; + *data << uint32(removeMovementForcesCount); // Count of RemoveForcesIDs + *data << uint32(0); // Unknown - if (hasSpline) - Movement::PacketBuilder::WriteCreateData(*self->movespline, *data); + //for (uint32 i = 0; i < removeMovementForcesCount; ++i) + // *data << ObjectGuid(RemoveForcesIDs); - *data << float(self->GetPositionZMinusOffset()); - data->WriteByteSeq(guid[5]); + data->WriteBits(unit->GetUnitMovementFlags(), 30); + data->WriteBits(unit->GetExtraUnitMovementFlags(), 15); + data->WriteBit(!unit->m_movementInfo.transport.guid.IsEmpty()); // HasTransport + data->WriteBit(HasFall); // HasFall + data->WriteBit(HasSpline); // HasSpline - marks that the unit uses spline movement + data->WriteBit(0); // HeightChangeFailed - if (!self->m_movementInfo.transport.guid.IsEmpty()) + if (!unit->m_movementInfo.transport.guid.IsEmpty()) { - ObjectGuid transGuid = self->m_movementInfo.transport.guid; - - data->WriteByteSeq(transGuid[5]); - data->WriteByteSeq(transGuid[7]); - *data << uint32(self->GetTransTime()); - *data << float(self->GetTransOffsetO()); - if (hasTransportTime2) - *data << uint32(self->m_movementInfo.transport.time2); - - *data << float(self->GetTransOffsetY()); - *data << float(self->GetTransOffsetX()); - data->WriteByteSeq(transGuid[3]); - *data << float(self->GetTransOffsetZ()); - data->WriteByteSeq(transGuid[0]); - if (hasTransportTime3) - *data << uint32(self->m_movementInfo.transport.time3); - - *data << int8(self->GetTransSeat()); - data->WriteByteSeq(transGuid[1]); - data->WriteByteSeq(transGuid[6]); - data->WriteByteSeq(transGuid[2]); - data->WriteByteSeq(transGuid[4]); + *data << unit->m_movementInfo.transport.guid; // Transport Guid + *data << float(unit->GetTransOffsetX()); + *data << float(unit->GetTransOffsetY()); + *data << float(unit->GetTransOffsetZ()); + *data << float(unit->GetTransOffsetO()); + *data << int8(unit->m_movementInfo.transport.seat); // VehicleSeatIndex + *data << uint32(unit->m_movementInfo.transport.time); // MoveTime + + data->WriteBit(unit->m_movementInfo.transport.prevTime != 0); + data->WriteBit(unit->m_movementInfo.transport.vehicleId != 0); + + if (unit->m_movementInfo.transport.prevTime) + *data << uint32(unit->m_movementInfo.transport.prevTime); // PrevMoveTime + + if (unit->m_movementInfo.transport.vehicleId) + *data << uint32(unit->m_movementInfo.transport.vehicleId); // VehicleRecID } - *data << float(self->GetPositionX()); - *data << self->GetSpeed(MOVE_PITCH_RATE); - data->WriteByteSeq(guid[3]); - data->WriteByteSeq(guid[0]); - *data << self->GetSpeed(MOVE_SWIM); - *data << float(self->GetPositionY()); - data->WriteByteSeq(guid[7]); - data->WriteByteSeq(guid[1]); - data->WriteByteSeq(guid[2]); - *data << self->GetSpeed(MOVE_WALK); + if (HasFall) + { + *data << uint32(unit->m_movementInfo.jump.fallTime); // Time + *data << float(unit->m_movementInfo.jump.zspeed); // JumpVelocity - //if (true) // Has time, controlled by bit just after HasTransport - *data << uint32(getMSTime()); + if (data->WriteBit(HasFallDirection)) + { + *data << float(unit->m_movementInfo.jump.sinAngle); // Direction + *data << float(unit->m_movementInfo.jump.cosAngle); + *data << float(unit->m_movementInfo.jump.xyspeed); // Speed + } + } - *data << self->GetSpeed(MOVE_TURN_RATE); - data->WriteByteSeq(guid[6]); - *data << self->GetSpeed(MOVE_FLIGHT); - if (!G3D::fuzzyEq(self->GetOrientation(), 0.0f)) - *data << float(self->GetOrientation()); + *data << float(unit->GetSpeed(MOVE_WALK)); + *data << float(unit->GetSpeed(MOVE_RUN)); + *data << float(unit->GetSpeed(MOVE_RUN_BACK)); + *data << float(unit->GetSpeed(MOVE_SWIM)); + *data << float(unit->GetSpeed(MOVE_SWIM_BACK)); + *data << float(unit->GetSpeed(MOVE_FLIGHT)); + *data << float(unit->GetSpeed(MOVE_FLIGHT_BACK)); + *data << float(unit->GetSpeed(MOVE_TURN_RATE)); + *data << float(unit->GetSpeed(MOVE_PITCH_RATE)); - *data << self->GetSpeed(MOVE_RUN); - if (hasPitch) - *data << float(self->m_movementInfo.pitch); + uint32 MovementForceCount = 0; + *data << uint32(MovementForceCount); - *data << self->GetSpeed(MOVE_FLIGHT_BACK); - } + //for (uint32 i = 0; i < MovementForceCount; ++i) + //{ + // *data << ObjectGuid(ID); + // *data << Vector3(Direction); + // *data << int32(TransportID); + // *data << float(Magnitude); + // *data << uint8(Type); + //} - if (flags & UPDATEFLAG_VEHICLE) - { - *data << float(self->GetOrientation()); - *data << uint32(self->GetVehicleKit()->GetVehicleInfo()->m_ID); + // HasMovementSpline - marks that spline data is present in packet + if (data->WriteBit(HasSpline)) + Movement::PacketBuilder::WriteCreate(*unit->movespline, *data); } - if (flags & UPDATEFLAG_GO_TRANSPORT_POSITION) + if (HasMovementTransport) { WorldObject const* self = static_cast<WorldObject const*>(this); - ObjectGuid transGuid = self->m_movementInfo.transport.guid; - - data->WriteBit(transGuid[0]); - data->WriteBit(transGuid[5]); - if (hasTransportTime3) - *data << uint32(self->m_movementInfo.transport.time3); - - data->WriteBit(transGuid[3]); + *data << self->m_movementInfo.transport.guid; // Transport Guid *data << float(self->GetTransOffsetX()); - data->WriteBit(transGuid[4]); - data->WriteBit(transGuid[6]); - data->WriteBit(transGuid[1]); - *data << uint32(self->GetTransTime()); *data << float(self->GetTransOffsetY()); - data->WriteBit(transGuid[2]); - data->WriteBit(transGuid[7]); *data << float(self->GetTransOffsetZ()); - *data << int8(self->GetTransSeat()); *data << float(self->GetTransOffsetO()); - if (hasTransportTime2) - *data << uint32(self->m_movementInfo.transport.time2); - } - - if (flags & UPDATEFLAG_ROTATION) - *data << uint64(ToGameObject()->GetRotation()); - - if (flags & UPDATEFLAG_UNK5) - { - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << uint8(0); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); - *data << float(0.0f); + *data << int8(self->m_movementInfo.transport.seat); // VehicleSeatIndex + *data << uint32(self->m_movementInfo.transport.time); // MoveTime + + data->WriteBit(self->m_movementInfo.transport.prevTime != 0); + data->WriteBit(self->m_movementInfo.transport.vehicleId != 0); + + if (self->m_movementInfo.transport.prevTime) + *data << uint32(self->m_movementInfo.transport.prevTime); // PrevMoveTime + + if (self->m_movementInfo.transport.vehicleId) + *data << uint32(self->m_movementInfo.transport.vehicleId); // VehicleRecID } - if (flags & UPDATEFLAG_STATIONARY_POSITION) + if (Stationary) { WorldObject const* self = static_cast<WorldObject const*>(this); - *data << float(self->GetStationaryO()); *data << float(self->GetStationaryX()); *data << float(self->GetStationaryY()); *data << float(self->GetStationaryZ()); + *data << float(self->GetStationaryO()); } - if (flags & UPDATEFLAG_HAS_TARGET) - { - ObjectGuid victimGuid = self->GetVictim()->GetGUID(); // checked in BuildCreateUpdateBlockForPlayer - data->WriteByteSeq(victimGuid[4]); - data->WriteByteSeq(victimGuid[0]); - data->WriteByteSeq(victimGuid[3]); - data->WriteByteSeq(victimGuid[5]); - data->WriteByteSeq(victimGuid[7]); - data->WriteByteSeq(victimGuid[6]); - data->WriteByteSeq(victimGuid[2]); - data->WriteByteSeq(victimGuid[1]); - } + if (CombatVictim) + *data << ToUnit()->GetVictim()->GetGUID(); // CombatVictim - if (flags & UPDATEFLAG_ANIMKITS) - { - Unit const* unit = ToUnit(); - if (unit->GetAIAnimKitId()) - *data << uint16(unit->GetAIAnimKitId()); - if (unit->GetMovementAnimKitId()) - *data << uint16(unit->GetMovementAnimKitId()); - if (unit->GetMeleeAnimKitId()) - *data << uint16(unit->GetMeleeAnimKitId()); - } - - if (flags & UPDATEFLAG_TRANSPORT) + if (ServerTime) { GameObject const* go = ToGameObject(); /** @TODO Use IsTransport() to also handle type 11 (TRANSPORT) @@ -674,11 +526,267 @@ void Object::BuildMovementUpdate(ByteBuffer* data, uint16 flags) const this causes clients to receive different PathProgress resulting in players seeing the object in a different position */ - if (go && go->ToTransport()) + if (go && go->ToTransport()) // ServerTime *data << uint32(go->GetGOValue()->Transport.PathProgress); else *data << uint32(getMSTime()); } + + if (VehicleCreate) + { + Unit const* unit = ToUnit(); + *data << uint32(unit->GetVehicleKit()->GetVehicleInfo()->m_ID); // RecID + *data << float(unit->GetOrientation()); // InitialRawFacing + } + + if (AnimKitCreate) + { + Unit const* unit = ToUnit(); + *data << uint16(unit->GetAIAnimKitId()); // AiID + *data << uint16(unit->GetMovementAnimKitId()); // MovementID + *data << uint16(unit->GetMeleeAnimKitId()); // MeleeID + } + + if (Rotation) + *data << uint64(ToGameObject()->GetRotation()); // Rotation + + //if (AreaTrigger) + //{ + // packet.ReadInt32("ElapsedMs", index); + + // packet.ReadVector3("RollPitchYaw1", index); + + // packet.ResetBitReader(); + + // var HasAbsoluteOrientation = packet.ReadBit("HasAbsoluteOrientation", index); + // var HasDynamicShape = packet.ReadBit("HasDynamicShape", index); + // var HasAttached = packet.ReadBit("HasAttached", index); + // var HasFaceMovementDir = packet.ReadBit("HasFaceMovementDir", index); + // var HasFollowsTerrain = packet.ReadBit("HasFollowsTerrain", index); + // var HasTargetRollPitchYaw = packet.ReadBit("HasTargetRollPitchYaw", index); + // var HasScaleCurveID = packet.ReadBit("HasScaleCurveID", index); + // var HasMorphCurveID = packet.ReadBit("HasMorphCurveID", index); + // var HasFacingCurveID = packet.ReadBit("HasFacingCurveID", index); + // var HasMoveCurveID = packet.ReadBit("HasMoveCurveID", index); + // var HasAreaTriggerSphere = packet.ReadBit("HasAreaTriggerSphere", index); + // var HasAreaTriggerBox = packet.ReadBit("HasAreaTriggerBox", index); + // var HasAreaTriggerPolygon = packet.ReadBit("HasAreaTriggerPolygon", index); + // var HasAreaTriggerCylinder = packet.ReadBit("HasAreaTriggerCylinder", index); + // var HasAreaTriggerSpline = packet.ReadBit("HasAreaTriggerSpline", index); + + // if (HasTargetRollPitchYaw) + // packet.ReadVector3("TargetRollPitchYaw", index); + + // if (HasScaleCurveID) + // packet.ReadInt32("ScaleCurveID, index"); + + // if (HasMorphCurveID) + // packet.ReadInt32("MorphCurveID", index); + + // if (HasFacingCurveID) + // packet.ReadInt32("FacingCurveID", index); + + // if (HasMoveCurveID) + // packet.ReadInt32("MoveCurveID", index); + + // if (HasAreaTriggerSphere) + // { + // packet.ReadSingle("Radius", index); + // packet.ReadSingle("RadiusTarget", index); + // } + + // if (HasAreaTriggerBox) + // { + // packet.ReadVector3("Extents", index); + // packet.ReadVector3("ExtentsTarget", index); + // } + + // if (HasAreaTriggerPolygon) + // { + // var VerticesCount = packet.ReadInt32("VerticesCount", index); + // var VerticesTargetCount = packet.ReadInt32("VerticesTargetCount", index); + // packet.ReadSingle("Height", index); + // packet.ReadSingle("HeightTarget", index); + + // for (var i = 0; i < VerticesCount; ++i) + // packet.ReadVector2("Vertices", index, i); + + // for (var i = 0; i < VerticesTargetCount; ++i) + // packet.ReadVector2("VerticesTarget", index, i); + // } + + // if (HasAreaTriggerCylinder) + // { + // packet.ReadSingle("Radius", index); + // packet.ReadSingle("RadiusTarget", index); + // packet.ReadSingle("Height", index); + // packet.ReadSingle("HeightTarget", index); + // packet.ReadSingle("Float4", index); + // packet.ReadSingle("Float5", index); + // } + + // if (HasAreaTriggerSpline) + // { + // packet.ReadInt32("TimeToTarget", index); + // packet.ReadInt32("ElapsedTimeForMovement", index); + // var int8 = packet.ReadInt32("VerticesCount", index); + + // for (var i = 0; i < int8; ++i) + // packet.ReadVector3("Points", index, i); + // } + //} + + //if (GameObject) + //{ + // packet.ReadInt32("WorldEffectID", index); + + // packet.ResetBitReader(); + + // var bit8 = packet.ReadBit("bit8", index); + // if (bit8) + // packet.ReadInt32("Int1", index); + //} + + //if (SceneObjCreate) + //{ + // packet.ResetBitReader(); + + // var CliSceneLocalScriptData = packet.ReadBit("CliSceneLocalScriptData", index); + // var PetBattleFullUpdate = packet.ReadBit("PetBattleFullUpdate", index); + + // if (CliSceneLocalScriptData) + // { + // packet.ResetBitReader(); + // var DataLength = packet.ReadBits(7); + // packet.ReadWoWString("Data", DataLength, index); + // } + + // if (PetBattleFullUpdate) + // { + // for (var i = 0; i < 2; ++i) + // { + // packet.ReadPackedGuid128("CharacterID", index, i); + + // packet.ReadInt32("TrapAbilityID", index, i); + // packet.ReadInt32("TrapStatus", index, i); + + // packet.ReadInt16("RoundTimeSecs", index, i); + + // packet.ReadByte("FrontPet", index, i); + // packet.ReadByte("InputFlags", index, i); + + // packet.ResetBitReader(); + + // var PetBattlePetUpdateCount = packet.ReadBits("PetBattlePetUpdateCount", 2, index, i); + + // for (var j = 0; j < PetBattlePetUpdateCount; ++j) + // { + // packet.ReadPackedGuid128("BattlePetGUID", index, i, j); + + // packet.ReadInt32("SpeciesID", index, i, j); + // packet.ReadInt32("DisplayID", index, i, j); + // packet.ReadInt32("CollarID", index, i, j); + + // packet.ReadInt16("Level", index, i, j); + // packet.ReadInt16("Xp", index, i, j); + + + // packet.ReadInt32("CurHealth", index, i, j); + // packet.ReadInt32("MaxHealth", index, i, j); + // packet.ReadInt32("Power", index, i, j); + // packet.ReadInt32("Speed", index, i, j); + // packet.ReadInt32("NpcTeamMemberID", index, i, j); + + // packet.ReadInt16("BreedQuality", index, i, j); + // packet.ReadInt16("StatusFlags", index, i, j); + + // packet.ReadByte("Slot", index, i, j); + + // var PetBattleActiveAbility = packet.ReadInt32("PetBattleActiveAbility", index, i, j); + // var PetBattleActiveAura = packet.ReadInt32("PetBattleActiveAura", index, i, j); + // var PetBattleActiveState = packet.ReadInt32("PetBattleActiveState", index, i, j); + + // for (var k = 0; k < PetBattleActiveAbility; ++k) + // { + // packet.ReadInt32("AbilityID", index, i, j, k); + // packet.ReadInt16("CooldownRemaining", index, i, j, k); + // packet.ReadInt16("LockdownRemaining", index, i, j, k); + // packet.ReadByte("AbilityIndex", index, i, j, k); + // packet.ReadByte("Pboid", index, i, j, k); + // } + + // for (var k = 0; k < PetBattleActiveAura; ++k) + // { + // packet.ReadInt32("AbilityID", index, i, j, k); + // packet.ReadInt32("InstanceID", index, i, j, k); + // packet.ReadInt32("RoundsRemaining", index, i, j, k); + // packet.ReadInt32("CurrentRound", index, i, j, k); + // packet.ReadByte("CasterPBOID", index, i, j, k); + // } + + // for (var k = 0; k < PetBattleActiveState; ++k) + // { + // packet.ReadInt32("StateID", index, i, j, k); + // packet.ReadInt32("StateValue", index, i, j, k); + // } + + // packet.ResetBitReader(); + // var bits57 = packet.ReadBits(7); + // packet.ReadWoWString("CustomName", bits57, index, i, j); + // } + // } + + // for (var i = 0; i < 3; ++i) + // { + // var PetBattleActiveAura = packet.ReadInt32("PetBattleActiveAura", index, i); + // var PetBattleActiveState = packet.ReadInt32("PetBattleActiveState", index, i); + + // for (var j = 0; j < PetBattleActiveAura; ++j) + // { + // packet.ReadInt32("AbilityID", index, i, j); + // packet.ReadInt32("InstanceID", index, i, j); + // packet.ReadInt32("RoundsRemaining", index, i, j); + // packet.ReadInt32("CurrentRound", index, i, j); + // packet.ReadByte("CasterPBOID", index, i, j); + // } + + // for (var j = 0; j < PetBattleActiveState; ++j) + // { + // packet.ReadInt32("StateID", index, i, j); + // packet.ReadInt32("StateValue", index, i, j); + // } + // } + + // packet.ReadInt16("WaitingForFrontPetsMaxSecs", index); + // packet.ReadInt16("PvpMaxRoundTime", index); + + // packet.ReadInt32("CurRound", index); + // packet.ReadInt32("NpcCreatureID", index); + // packet.ReadInt32("NpcDisplayID", index); + + // packet.ReadByte("CurPetBattleState"); + // packet.ReadByte("ForfeitPenalty"); + + // packet.ReadPackedGuid128("InitialWildPetGUID"); + + // packet.ReadBit("IsPVP"); + // packet.ReadBit("CanAwardXP"); + // } + //} + + //if (ScenePendingInstances) + //{ + // var SceneInstanceIDs = packet.ReadInt32("SceneInstanceIDsCount"); + + // for (var i = 0; i < SceneInstanceIDs; ++i) + // packet.ReadInt32("SceneInstanceIDs", index, i); + //} + + if (GameObject const* go = ToGameObject()) + for (uint32 i = 0; i < PauseTimesCount; ++i) + *data << uint32(go->GetGOValue()->Transport.StopFrames->at(i)); + + data->FlushBits(); } void Object::BuildValuesUpdate(uint8 updateType, ByteBuffer* data, Player* target) const @@ -1442,9 +1550,9 @@ void MovementInfo::OutDebug() TC_LOG_INFO("misc", "seat: %i", transport.seat); TC_LOG_INFO("misc", "time: %u", transport.time); if (flags2 & MOVEMENTFLAG2_INTERPOLATED_MOVEMENT) - TC_LOG_INFO("misc", "time2: %u", transport.time2); - if (transport.time3) - TC_LOG_INFO("misc", "time3: %u", transport.time3); + TC_LOG_INFO("misc", "prevTime: %u", transport.prevTime); + if (transport.vehicleId) + TC_LOG_INFO("misc", "vehicleId: %u", transport.vehicleId); } if ((flags & (MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || (flags2 & MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING)) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index b989aca0b17..bae3a8b07c1 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -218,14 +218,14 @@ class Object uint32 GetUpdateFieldData(Player const* target, uint32*& flags) const; uint32 GetDynamicUpdateFieldData(Player const* target, uint32*& flags) const; - void BuildMovementUpdate(ByteBuffer* data, uint16 flags) const; + void BuildMovementUpdate(ByteBuffer* data, uint32 flags) const; virtual void BuildValuesUpdate(uint8 updatetype, ByteBuffer* data, Player* target) const; virtual void BuildDynamicValuesUpdate(uint8 updatetype, ByteBuffer* data, Player* target) const; uint16 m_objectType; TypeID m_objectTypeId; - uint16 m_updateFlag; + uint32 m_updateFlag; union { @@ -411,16 +411,16 @@ struct MovementInfo pos.Relocate(0.0f, 0.0f, 0.0f, 0.0f); seat = -1; time = 0; - time2 = 0; - time3 = 0; + prevTime = 0; + vehicleId = 0; } ObjectGuid guid; Position pos; int8 seat; uint32 time; - uint32 time2; - uint32 time3; + uint32 prevTime; + uint32 vehicleId; } transport; // swimming/flying diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp index 126916c4364..f59c82d44f5 100644 --- a/src/server/game/Entities/Object/ObjectGuid.cpp +++ b/src/server/game/Entities/Object/ObjectGuid.cpp @@ -107,6 +107,7 @@ void PackedGuid::Set(ObjectGuid const& guid) { uint8 lowMask = 0; uint8 highMask = 0; + _packedGuid.clear(); _packedGuid << uint8(lowMask); _packedGuid << uint8(highMask); diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 247982a2837..378428e3ce5 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -46,13 +46,15 @@ enum TypeMask { TYPEMASK_OBJECT = 0x0001, TYPEMASK_ITEM = 0x0002, - TYPEMASK_CONTAINER = 0x0006, // TYPEMASK_ITEM | 0x0004 - TYPEMASK_UNIT = 0x0008, // creature + TYPEMASK_CONTAINER = 0x0004, + TYPEMASK_UNIT = 0x0008, TYPEMASK_PLAYER = 0x0010, TYPEMASK_GAMEOBJECT = 0x0020, TYPEMASK_DYNAMICOBJECT = 0x0040, TYPEMASK_CORPSE = 0x0080, TYPEMASK_AREATRIGGER = 0x0100, + TYPEMASK_SCENEOBJECT = 0x0200, + TYPEMASK_CONVERSATION = 0x0400, TYPEMASK_SEER = TYPEMASK_PLAYER | TYPEMASK_UNIT | TYPEMASK_DYNAMICOBJECT }; diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp index db911dfa267..df7f6fdcc77 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp @@ -47,18 +47,19 @@ bool UpdateData::BuildPacket(WorldPacket* packet) ASSERT(packet->empty()); // shouldn't happen packet->Initialize(SMSG_UPDATE_OBJECT, 2 + 4 + (m_outOfRangeGUIDs.empty() ? 0 : 1 + 4 + 9 * m_outOfRangeGUIDs.size()) + m_data.wpos()); + *packet << uint32(m_blockCount); *packet << uint16(m_map); - *packet << uint32(m_blockCount + (m_outOfRangeGUIDs.empty() ? 0 : 1)); - - if (!m_outOfRangeGUIDs.empty()) + + if (packet->WriteBit(!m_outOfRangeGUIDs.empty())) { - *packet << uint8(UPDATETYPE_OUT_OF_RANGE_OBJECTS); + *packet << uint16(0); *packet << uint32(m_outOfRangeGUIDs.size()); for (GuidSet::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i) *packet << i->WriteAsPacked(); } + *packet << uint32(m_data.size()); packet->append(m_data); return true; } diff --git a/src/server/game/Entities/Object/Updates/UpdateData.h b/src/server/game/Entities/Object/Updates/UpdateData.h index 82958229ea0..2ee0adba299 100644 --- a/src/server/game/Entities/Object/Updates/UpdateData.h +++ b/src/server/game/Entities/Object/Updates/UpdateData.h @@ -39,17 +39,21 @@ enum OBJECT_UPDATE_FLAGS UPDATEFLAG_SELF = 0x0001, UPDATEFLAG_TRANSPORT = 0x0002, UPDATEFLAG_HAS_TARGET = 0x0004, - UPDATEFLAG_UNKNOWN = 0x0008, - UPDATEFLAG_LOWGUID = 0x0010, - UPDATEFLAG_LIVING = 0x0020, - UPDATEFLAG_STATIONARY_POSITION = 0x0040, - UPDATEFLAG_VEHICLE = 0x0080, - UPDATEFLAG_GO_TRANSPORT_POSITION = 0x0100, - UPDATEFLAG_ROTATION = 0x0200, - UPDATEFLAG_UNK3 = 0x0400, - UPDATEFLAG_ANIMKITS = 0x0800, - UPDATEFLAG_UNK5 = 0x1000, - UPDATEFLAG_UNK6 = 0x2000, + UPDATEFLAG_LIVING = 0x0008, + UPDATEFLAG_STATIONARY_POSITION = 0x0010, + UPDATEFLAG_VEHICLE = 0x0020, + UPDATEFLAG_GO_TRANSPORT_POSITION = 0x0040, + UPDATEFLAG_ROTATION = 0x0080, + UPDATEFLAG_ANIMKITS = 0x0100, + //UPDATEFLAG_AREATRIGGER = 0x0200, + //UPDATEFLAG_GAMEOBJECT = 0x0400, + //UPDATEFLAG_REPLACE_ACTIVE = 0x0800, + //UPDATEFLAG_NO_BIRTH_ANIM = 0x1000, + //UPDATEFLAG_ENABLE_PORTALS = 0x2000, + //UPDATEFLAG_PLAY_HOVER_ANIM = 0x4000, + //UPDATEFLAG_IS_SUPPRESSING_GREETINGS = 0x8000 + //UPDATEFLAG_SCENEOBJECT = 0x10000, + //UPDATEFLAG_SCENE_PENDING_INSTANCE = 0x20000 }; class UpdateData diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a27a9008d63..c38d0103c93 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -27444,8 +27444,8 @@ void Player::ReadMovementInfo(WorldPacket& data, MovementInfo* mi, Movement::Ext bool hasTimestamp = false; bool hasOrientation = false; bool hasTransportData = false; - bool hasTransportTime2 = false; - bool hasTransportTime3 = false; + bool hasTransportPrevTime = false; + bool hasTransportVehicleId = false; bool hasPitch = false; bool hasFallData = false; bool hasFallDirection = false; @@ -27517,13 +27517,13 @@ void Player::ReadMovementInfo(WorldPacket& data, MovementInfo* mi, Movement::Ext case MSEHasTransportData: hasTransportData = data.ReadBit(); break; - case MSEHasTransportTime2: + case MSEHasTransportPrevTime: if (hasTransportData) - hasTransportTime2 = data.ReadBit(); + hasTransportPrevTime = data.ReadBit(); break; - case MSEHasTransportTime3: + case MSEHasTransportVehicleId: if (hasTransportData) - hasTransportTime3 = data.ReadBit(); + hasTransportVehicleId = data.ReadBit(); break; case MSEHasPitch: hasPitch = !data.ReadBit(); @@ -27590,13 +27590,13 @@ void Player::ReadMovementInfo(WorldPacket& data, MovementInfo* mi, Movement::Ext if (hasTransportData) data >> mi->transport.time; break; - case MSETransportTime2: - if (hasTransportData && hasTransportTime2) - data >> mi->transport.time2; + case MSETransportPrevTime: + if (hasTransportData && hasTransportPrevTime) + data >> mi->transport.prevTime; break; - case MSETransportTime3: - if (hasTransportData && hasTransportTime3) - data >> mi->transport.time3; + case MSETransportVehicleId: + if (hasTransportData && hasTransportVehicleId) + data >> mi->transport.vehicleId; break; case MSEPitch: if (hasPitch) diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 4a13ac78cdf..b11b0f8806e 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -38,7 +38,7 @@ Transport::Transport() : GameObject(), _triggeredArrivalEvent(false), _triggeredDepartureEvent(false), _passengerTeleportItr(_passengers.begin()), _delayedAddModel(false) { - m_updateFlag = UPDATEFLAG_TRANSPORT | UPDATEFLAG_LOWGUID | UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION; + m_updateFlag = UPDATEFLAG_TRANSPORT | UPDATEFLAG_STATIONARY_POSITION | UPDATEFLAG_ROTATION; } Transport::~Transport() diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 596edb6b67e..4593288d548 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -15603,8 +15603,8 @@ void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusEle bool hasTransportData = !GetTransGUID().IsEmpty(); bool hasSpline = IsSplineEnabled(); - bool hasTransportTime2 = hasTransportData && m_movementInfo.transport.time2 != 0; - bool hasTransportTime3 = false; + bool hasTransportPrevTime = hasTransportData && m_movementInfo.transport.prevTime != 0; + bool hasTransportVehicleId = hasTransportData && mi.transport.vehicleId != 0; bool hasPitch = HasUnitMovementFlag(MovementFlags(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_FLYING)) || HasExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING); bool hasFallDirection = HasUnitMovementFlag(MOVEMENTFLAG_FALLING); bool hasFallData = hasFallDirection || m_movementInfo.jump.fallTime != 0; @@ -15683,13 +15683,13 @@ void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusEle case MSEHasTransportData: data.WriteBit(hasTransportData); break; - case MSEHasTransportTime2: + case MSEHasTransportPrevTime: if (hasTransportData) - data.WriteBit(hasTransportTime2); + data.WriteBit(hasTransportPrevTime); break; - case MSEHasTransportTime3: + case MSEHasTransportVehicleId: if (hasTransportData) - data.WriteBit(hasTransportTime3); + data.WriteBit(hasTransportVehicleId); break; case MSEHasPitch: data.WriteBit(!hasPitch); @@ -15756,13 +15756,13 @@ void Unit::WriteMovementInfo(WorldPacket& data, Movement::ExtraMovementStatusEle if (hasTransportData) data << GetTransTime(); break; - case MSETransportTime2: - if (hasTransportData && hasTransportTime2) - data << mi.transport.time2; + case MSETransportPrevTime: + if (hasTransportData && hasTransportPrevTime) + data << mi.transport.prevTime; break; - case MSETransportTime3: - if (hasTransportData && hasTransportTime3) - data << mi.transport.time3; + case MSETransportVehicleId: + if (hasTransportData && hasTransportVehicleId) + data << mi.transport.vehicleId; break; case MSEPitch: if (hasPitch) diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index a01d37191d3..d7ced149364 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -800,6 +800,7 @@ bool VehicleJoinEvent::Execute(uint64, uint32) Passenger->m_movementInfo.transport.time = 0; Passenger->m_movementInfo.transport.seat = Seat->first; Passenger->m_movementInfo.transport.guid = Target->GetBase()->GetGUID(); + Passenger->m_movementInfo.transport.vehicleId = Target->GetVehicleInfo()->m_ID; if (Target->GetBase()->GetTypeId() == TYPEID_UNIT && Passenger->GetTypeId() == TYPEID_PLAYER && Seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_CAN_CONTROL) diff --git a/src/server/game/Movement/MovementStructures.cpp b/src/server/game/Movement/MovementStructures.cpp index 20011a443d7..85dabf8ed20 100644 --- a/src/server/game/Movement/MovementStructures.cpp +++ b/src/server/game/Movement/MovementStructures.cpp @@ -42,13 +42,13 @@ MovementStatusElements const PlayerMove[] = MSEHasTransportData, MSEMovementFlags, MSEHasTransportGuidByte3, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte6, MSEHasTransportGuidByte1, MSEHasTransportGuidByte7, MSEHasTransportGuidByte0, MSEHasTransportGuidByte4, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte5, MSEHasTransportGuidByte2, MSEHasPitch, @@ -62,7 +62,7 @@ MovementStatusElements const PlayerMove[] = MSEGuidByte7, MSEPositionY, MSEGuidByte3, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte6, MSETransportSeat, MSETransportGuidByte5, @@ -70,7 +70,7 @@ MovementStatusElements const PlayerMove[] = MSETransportGuidByte1, MSETransportOrientation, MSETransportGuidByte2, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte0, MSETransportPositionZ, MSETransportGuidByte7, @@ -118,8 +118,8 @@ MovementStatusElements const MovementFallLand[] = MSEHasTransportGuidByte5, MSEHasTransportGuidByte3, MSEHasTransportGuidByte2, - MSEHasTransportTime3, - MSEHasTransportTime2, + MSEHasTransportVehicleId, + MSEHasTransportPrevTime, MSEHasTransportGuidByte6, MSEHasTransportGuidByte4, MSEHasTransportGuidByte1, @@ -140,10 +140,10 @@ MovementStatusElements const MovementFallLand[] = MSETransportPositionY, MSETransportPositionX, MSETransportGuidByte5, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte1, MSETransportSeat, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte4, MSETransportOrientation, MSETransportGuidByte0, @@ -186,10 +186,10 @@ MovementStatusElements const MovementHeartBeat[] = MSEZeroBit, MSEHasGuidByte6, MSEHasMovementFlags, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, MSEHasTransportGuidByte2, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte5, MSEHasTransportGuidByte7, MSEHasTransportGuidByte6, @@ -218,8 +218,8 @@ MovementStatusElements const MovementHeartBeat[] = MSETransportGuidByte1, MSETransportGuidByte3, MSETransportGuidByte7, - MSETransportTime3, - MSETransportTime2, + MSETransportVehicleId, + MSETransportPrevTime, MSETransportGuidByte2, MSETransportGuidByte0, MSETransportGuidByte6, @@ -265,8 +265,8 @@ MovementStatusElements const MovementJump[] = MSEHasTransportGuidByte5, MSEHasTransportGuidByte1, MSEHasTransportGuidByte4, - MSEHasTransportTime3, - MSEHasTransportTime2, + MSEHasTransportVehicleId, + MSEHasTransportPrevTime, MSEHasTransportGuidByte2, MSEHasFallDirection, MSEMovementFlags, @@ -283,10 +283,10 @@ MovementStatusElements const MovementJump[] = MSETransportGuidByte7, MSETransportPositionX, MSETransportGuidByte4, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte0, MSETransportOrientation, - MSETransportTime2, + MSETransportPrevTime, MSETransportTime, MSETransportGuidByte6, MSETransportPositionZ, @@ -330,14 +330,14 @@ MovementStatusElements const MovementSetFacing[] = MSEHasGuidByte3, MSEZeroBit, MSEHasGuidByte1, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte3, MSEHasTransportGuidByte7, MSEHasTransportGuidByte5, MSEHasTransportGuidByte2, MSEHasTransportGuidByte6, MSEHasTransportGuidByte0, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte4, MSEHasTransportGuidByte1, MSEHasFallDirection, @@ -354,12 +354,12 @@ MovementStatusElements const MovementSetFacing[] = MSETransportGuidByte0, MSETransportPositionX, MSETransportGuidByte1, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte4, MSETransportPositionZ, MSETransportOrientation, MSETransportGuidByte2, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte3, MSETransportSeat, MSETransportPositionY, @@ -409,9 +409,9 @@ MovementStatusElements const MovementSetPitch[] = MSEHasTransportGuidByte0, MSEHasTransportGuidByte1, MSEHasTransportGuidByte5, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte7, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEMovementFlags2, MSEMovementFlags, MSEHasFallDirection, @@ -428,12 +428,12 @@ MovementStatusElements const MovementSetPitch[] = MSETransportGuidByte6, MSETransportOrientation, MSETransportGuidByte1, - MSETransportTime3, + MSETransportVehicleId, MSETransportTime, MSETransportGuidByte2, MSETransportPositionZ, MSETransportGuidByte0, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionY, MSETransportGuidByte5, MSETransportSeat, @@ -476,14 +476,14 @@ MovementStatusElements const MovementStartBackward[] = MSEHasSplineElevation, MSEHasTransportGuidByte3, MSEHasTransportGuidByte1, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte2, MSEHasTransportGuidByte7, MSEHasTransportGuidByte0, MSEHasTransportGuidByte6, MSEHasTransportGuidByte5, MSEHasTransportGuidByte4, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEMovementFlags, MSEMovementFlags2, MSEHasFallDirection, @@ -497,13 +497,13 @@ MovementStatusElements const MovementStartBackward[] = MSEGuidByte3, MSETransportPositionZ, MSETransportGuidByte2, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte0, MSETransportGuidByte5, MSETransportPositionY, MSETransportGuidByte1, MSETransportPositionX, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte4, MSETransportOrientation, MSETransportSeat, @@ -555,8 +555,8 @@ MovementStatusElements const MovementStartForward[] = MSEHasTransportGuidByte0, MSEHasTransportGuidByte7, MSEHasTransportGuidByte1, - MSEHasTransportTime3, - MSEHasTransportTime2, + MSEHasTransportVehicleId, + MSEHasTransportPrevTime, MSEHasFallDirection, MSEMovementFlags2, MSEGuidByte2, @@ -582,12 +582,12 @@ MovementStatusElements const MovementStartForward[] = MSETransportGuidByte2, MSETransportPositionX, MSETransportGuidByte5, - MSETransportTime3, + MSETransportVehicleId, MSETransportTime, MSETransportGuidByte6, MSETransportGuidByte0, MSETransportSeat, - MSETransportTime2, + MSETransportPrevTime, MSESplineElevation, MSEPitch, MSEOrientation, @@ -620,9 +620,9 @@ MovementStatusElements const MovementStartStrafeLeft[] = MSEHasMovementFlags, MSEHasTransportData, MSEHasFallDirection, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte7, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte3, MSEHasTransportGuidByte1, MSEHasTransportGuidByte6, @@ -647,10 +647,10 @@ MovementStatusElements const MovementStartStrafeLeft[] = MSEFallVerticalSpeed, MSETransportSeat, MSETransportGuidByte2, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte3, MSETransportPositionZ, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte0, MSETransportGuidByte7, MSETransportPositionY, @@ -696,11 +696,11 @@ MovementStatusElements const MovementStartStrafeRight[] = MSEHasTransportGuidByte3, MSEHasTransportGuidByte5, MSEHasTransportGuidByte0, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte6, MSEHasTransportGuidByte1, MSEHasTransportGuidByte4, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEMovementFlags2, MSEMovementFlags, MSEHasFallDirection, @@ -721,11 +721,11 @@ MovementStatusElements const MovementStartStrafeRight[] = MSETransportGuidByte2, MSETransportSeat, MSETransportPositionX, - MSETransportTime3, + MSETransportVehicleId, MSETransportTime, MSETransportGuidByte4, MSETransportGuidByte7, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionZ, MSETransportGuidByte3, MSEPitch, @@ -767,9 +767,9 @@ MovementStatusElements const MovementStartTurnLeft[] = MSEHasTransportGuidByte3, MSEHasTransportGuidByte1, MSEHasTransportGuidByte0, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, MSEHasTransportGuidByte7, MSEHasTransportGuidByte5, @@ -801,8 +801,8 @@ MovementStatusElements const MovementStartTurnLeft[] = MSETransportGuidByte1, MSETransportGuidByte3, MSETransportPositionY, - MSETransportTime3, - MSETransportTime2, + MSETransportVehicleId, + MSETransportPrevTime, MSETransportGuidByte5, MSETransportGuidByte7, MSETimestamp, @@ -836,7 +836,7 @@ MovementStatusElements const MovementStartTurnRight[] = MSEHasPitch, MSEHasFallData, MSEHasTransportGuidByte1, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte6, MSEHasTransportGuidByte0, MSEHasTransportGuidByte3, @@ -844,7 +844,7 @@ MovementStatusElements const MovementStartTurnRight[] = MSEHasTransportGuidByte2, MSEHasTransportGuidByte4, MSEHasTransportGuidByte7, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEMovementFlags2, MSEMovementFlags, MSEHasFallDirection, @@ -865,13 +865,13 @@ MovementStatusElements const MovementStartTurnRight[] = MSETransportSeat, MSETransportOrientation, MSETransportGuidByte5, - MSETransportTime3, + MSETransportVehicleId, MSETransportPositionZ, MSETransportPositionX, MSETransportTime, MSETransportGuidByte7, MSETransportGuidByte3, - MSETransportTime2, + MSETransportPrevTime, MSEFallHorizontalSpeed, MSEFallCosAngle, MSEFallSinAngle, @@ -911,8 +911,8 @@ MovementStatusElements const MovementStop[] = MSEHasTransportGuidByte4, MSEHasTransportGuidByte1, MSEHasTransportGuidByte5, - MSEHasTransportTime2, - MSEHasTransportTime3, + MSEHasTransportPrevTime, + MSEHasTransportVehicleId, MSEHasTransportGuidByte3, MSEHasTransportGuidByte6, MSEHasTransportGuidByte0, @@ -933,13 +933,13 @@ MovementStatusElements const MovementStop[] = MSETransportTime, MSETransportSeat, MSETransportPositionZ, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte2, MSETransportGuidByte0, MSETransportPositionY, MSETransportGuidByte1, MSETransportGuidByte3, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionX, MSETransportOrientation, MSETransportGuidByte5, @@ -985,10 +985,10 @@ MovementStatusElements const MovementStopStrafe[] = MSEHasTransportGuidByte2, MSEHasTransportGuidByte6, MSEHasTransportGuidByte5, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte1, MSEHasTransportGuidByte3, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEMovementFlags, MSEHasFallDirection, MSEMovementFlags2, @@ -1003,7 +1003,7 @@ MovementStatusElements const MovementStopStrafe[] = MSETransportSeat, MSETransportGuidByte6, MSETransportPositionZ, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte1, MSETransportGuidByte3, MSETransportGuidByte2, @@ -1014,7 +1014,7 @@ MovementStatusElements const MovementStopStrafe[] = MSETransportPositionX, MSETransportGuidByte0, MSETransportPositionY, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte7, MSEFallSinAngle, MSEFallHorizontalSpeed, @@ -1053,9 +1053,9 @@ MovementStatusElements const MovementStopTurn[] = MSEHasGuidByte7, MSEHasTransportGuidByte2, MSEHasTransportGuidByte7, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte5, MSEHasTransportGuidByte0, MSEHasTransportGuidByte3, @@ -1079,8 +1079,8 @@ MovementStatusElements const MovementStopTurn[] = MSETransportGuidByte2, MSETransportGuidByte3, MSETransportOrientation, - MSETransportTime2, - MSETransportTime3, + MSETransportPrevTime, + MSETransportVehicleId, MSETransportGuidByte7, MSETransportGuidByte1, MSETransportGuidByte0, @@ -1126,11 +1126,11 @@ MovementStatusElements const MovementStartAscend[] = MSEMovementFlags, MSEHasTransportGuidByte0, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte6, MSEHasTransportGuidByte1, MSEHasTransportGuidByte4, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte5, MSEHasTransportGuidByte3, MSEHasTransportGuidByte7, @@ -1152,9 +1152,9 @@ MovementStatusElements const MovementStartAscend[] = MSETransportOrientation, MSETransportPositionY, MSETransportGuidByte7, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionZ, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte6, MSETransportTime, MSETransportGuidByte0, @@ -1198,11 +1198,11 @@ MovementStatusElements const MovementStartDescend[] = MSEHasTransportGuidByte0, MSEHasTransportGuidByte1, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte7, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte3, MSEHasTransportGuidByte5, MSEMovementFlags2, @@ -1219,9 +1219,9 @@ MovementStatusElements const MovementStartDescend[] = MSEPitch, MSETransportPositionZ, MSETransportSeat, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte6, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte1, MSETransportTime, MSETransportGuidByte4, @@ -1273,10 +1273,10 @@ MovementStatusElements const MovementStartSwim[] = MSEHasTransportGuidByte5, MSEHasTransportGuidByte4, MSEHasTransportGuidByte0, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte6, MSEHasTransportGuidByte1, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEMovementFlags, MSEHasFallDirection, MSEMovementFlags2, @@ -1289,14 +1289,14 @@ MovementStatusElements const MovementStartSwim[] = MSEGuidByte3, MSEGuidByte7, MSEPitch, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte2, MSETransportPositionY, MSETransportGuidByte3, MSETransportTime, MSETransportPositionX, MSETransportOrientation, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte6, MSETransportGuidByte5, MSETransportGuidByte4, @@ -1339,14 +1339,14 @@ MovementStatusElements const MovementStopSwim[] = MSEHasGuidByte1, MSEHasGuidByte0, MSEHasFallData, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, MSEHasTransportGuidByte3, MSEHasTransportGuidByte7, MSEHasTransportGuidByte1, MSEHasTransportGuidByte0, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte2, MSEHasTransportGuidByte5, MSEMovementFlags, @@ -1360,7 +1360,7 @@ MovementStatusElements const MovementStopSwim[] = MSEGuidByte1, MSEGuidByte5, MSEGuidByte2, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte4, MSETransportTime, MSETransportPositionZ, @@ -1372,7 +1372,7 @@ MovementStatusElements const MovementStopSwim[] = MSETransportGuidByte1, MSETransportGuidByte6, MSETransportGuidByte5, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionX, MSETransportGuidByte0, MSETransportOrientation, @@ -1411,8 +1411,8 @@ MovementStatusElements const MovementStopAscend[] = MSEHasMovementFlags2, MSEHasTimestamp, MSEHasGuidByte5, - MSEHasTransportTime2, - MSEHasTransportTime3, + MSEHasTransportPrevTime, + MSEHasTransportVehicleId, MSEHasTransportGuidByte1, MSEHasTransportGuidByte3, MSEHasTransportGuidByte2, @@ -1437,8 +1437,8 @@ MovementStatusElements const MovementStopAscend[] = MSETransportGuidByte7, MSETransportGuidByte2, MSETransportGuidByte6, - MSETransportTime2, - MSETransportTime3, + MSETransportPrevTime, + MSETransportVehicleId, MSETransportOrientation, MSETransportGuidByte3, MSETransportGuidByte4, @@ -1487,10 +1487,10 @@ MovementStatusElements const MovementStopPitch[] = MSEHasTransportGuidByte0, MSEHasTransportGuidByte5, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte6, MSEHasTransportGuidByte3, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte4, MSEHasTransportGuidByte1, MSEHasFallDirection, @@ -1512,14 +1512,14 @@ MovementStatusElements const MovementStopPitch[] = MSEFallTime, MSETransportGuidByte5, MSETransportGuidByte2, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionX, MSETransportOrientation, MSETransportGuidByte6, MSETransportGuidByte3, MSETransportGuidByte1, MSETransportPositionZ, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte0, MSETransportGuidByte4, MSETransportTime, @@ -1557,11 +1557,11 @@ MovementStatusElements const MovementStartPitchDown[] = MSEHasGuidByte2, MSEHasTransportGuidByte1, MSEHasTransportGuidByte5, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte7, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte0, MSEHasTransportGuidByte3, MSEHasTransportGuidByte2, @@ -1576,9 +1576,9 @@ MovementStatusElements const MovementStartPitchDown[] = MSEGuidByte6, MSEGuidByte4, MSEGuidByte1, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte3, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte5, MSETransportGuidByte1, MSETransportPositionY, @@ -1631,9 +1631,9 @@ MovementStatusElements const MovementStartPitchUp[] = MSEHasTransportGuidByte7, MSEHasTransportGuidByte3, MSEHasTransportGuidByte1, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte4, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte0, MSEHasTransportGuidByte6, MSEHasTransportGuidByte5, @@ -1657,11 +1657,11 @@ MovementStatusElements const MovementStartPitchUp[] = MSETransportPositionZ, MSETransportOrientation, MSETransportGuidByte7, - MSETransportTime2, + MSETransportPrevTime, MSETransportSeat, MSETransportGuidByte6, MSETransportGuidByte5, - MSETransportTime3, + MSETransportVehicleId, MSETransportPositionY, MSETransportGuidByte4, MSEFallTime, @@ -1700,12 +1700,12 @@ MovementStatusElements const MoveChngTransport[]= MSEHasMovementFlags, MSEHasMovementFlags2, MSEHasTransportGuidByte3, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, MSEHasTransportGuidByte1, MSEHasTransportGuidByte6, MSEHasTransportGuidByte2, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte0, MSEHasTransportGuidByte7, MSEHasTransportGuidByte5, @@ -1729,13 +1729,13 @@ MovementStatusElements const MoveChngTransport[]= MSETransportGuidByte6, MSETransportPositionZ, MSETransportPositionX, - MSETransportTime3, + MSETransportVehicleId, MSETransportTime, MSETransportGuidByte7, MSETransportGuidByte5, MSETransportGuidByte4, MSETransportOrientation, - MSETransportTime2, + MSETransportPrevTime, MSEFallTime, MSEFallHorizontalSpeed, MSEFallSinAngle, @@ -1778,9 +1778,9 @@ MovementStatusElements const MoveSplineDone[] = MSEHasTransportGuidByte3, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte0, MSEHasFallDirection, @@ -1806,7 +1806,7 @@ MovementStatusElements const MoveSplineDone[] = MSEOrientation, MSETransportGuidByte1, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte7, MSETransportTime, MSETransportPositionY, @@ -1815,7 +1815,7 @@ MovementStatusElements const MoveSplineDone[] = MSETransportSeat, MSETransportOrientation, MSETransportGuidByte0, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte2, MSETransportGuidByte3, MSETransportGuidByte5, @@ -1856,10 +1856,10 @@ MovementStatusElements const MoveNotActiveMover[] = MSEHasTransportGuidByte1, MSEHasTransportGuidByte6, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte5, MSEHasTransportGuidByte7, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte3, MSEHasFallDirection, @@ -1881,9 +1881,9 @@ MovementStatusElements const MoveNotActiveMover[] = MSEFallHorizontalSpeed, MSEFallTime, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte1, - MSETransportTime2, + MSETransportPrevTime, MSETransportOrientation, MSETransportGuidByte0, MSETransportSeat, @@ -1931,7 +1931,7 @@ MovementStatusElements const DismissControlledVehicle[] = MSEHasGuidByte5, MSEHasTransportGuidByte5, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte2, MSEHasTransportGuidByte0, MSEHasTransportGuidByte7, @@ -1939,7 +1939,7 @@ MovementStatusElements const DismissControlledVehicle[] = MSEHasTransportGuidByte4, MSEHasTransportGuidByte1, MSEHasTransportGuidByte6, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEMovementFlags2, MSEHasFallDirection, @@ -1956,10 +1956,10 @@ MovementStatusElements const DismissControlledVehicle[] = MSETimestamp, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte4, MSETransportGuidByte7, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte6, MSETransportTime, MSETransportPositionZ, @@ -2007,10 +2007,10 @@ MovementStatusElements const MoveUpdateTeleport[] = MSEHasTransportGuidByte5, MSEHasTransportGuidByte3, MSEHasTransportGuidByte0, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte7, MSEHasTransportGuidByte6, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte2, MSEZeroBit, @@ -2031,9 +2031,9 @@ MovementStatusElements const MoveUpdateTeleport[] = MSETransportGuidByte3, MSETransportGuidByte4, MSETransportOrientation, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte1, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionZ, MSETransportGuidByte7, MSETransportGuidByte0, @@ -2092,11 +2092,11 @@ MovementStatusElements const MovementSetRunMode[] = MSEHasGuidByte2, MSEHasTransportGuidByte6, MSEHasTransportGuidByte4, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte5, MSEHasTransportGuidByte3, MSEHasTransportGuidByte1, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte7, MSEHasTransportGuidByte0, MSEHasTransportGuidByte2, @@ -2112,7 +2112,7 @@ MovementStatusElements const MovementSetRunMode[] = MSEGuidByte5, MSEGuidByte2, MSEPitch, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte3, MSETransportPositionX, MSETransportSeat, @@ -2124,7 +2124,7 @@ MovementStatusElements const MovementSetRunMode[] = MSETransportOrientation, MSETransportGuidByte4, MSETransportTime, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte0, MSETransportPositionY, MSETransportGuidByte6, @@ -2167,9 +2167,9 @@ MovementStatusElements const MovementSetWalkMode[] = MSEHasTransportGuidByte6, MSEHasTransportGuidByte1, MSEHasTransportGuidByte3, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte5, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, MSEHasTransportGuidByte7, MSEHasFallDirection, @@ -2192,10 +2192,10 @@ MovementStatusElements const MovementSetWalkMode[] = MSETransportGuidByte0, MSETransportTime, MSETransportGuidByte4, - MSETransportTime2, + MSETransportPrevTime, MSETransportOrientation, MSETransportPositionX, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte7, MSETransportPositionY, MSETransportGuidByte1, @@ -2235,12 +2235,12 @@ MovementStatusElements const MovementSetCanFly[] = MSEZeroBit, MSEHasPitch, MSEHasTransportGuidByte3, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte6, MSEHasTransportGuidByte0, MSEHasTransportGuidByte7, MSEHasTransportGuidByte4, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte1, MSEHasTransportGuidByte2, MSEHasTransportGuidByte5, @@ -2262,7 +2262,7 @@ MovementStatusElements const MovementSetCanFly[] = MSETransportSeat, MSETransportPositionX, MSETransportGuidByte2, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionY, MSETransportGuidByte1, MSETransportTime, @@ -2270,7 +2270,7 @@ MovementStatusElements const MovementSetCanFly[] = MSETransportGuidByte0, MSETransportOrientation, MSETransportGuidByte6, - MSETransportTime3, + MSETransportVehicleId, MSESplineElevation, MSEFallSinAngle, MSEFallCosAngle, @@ -2309,12 +2309,12 @@ MovementStatusElements const MovementSetCanTransitionBetweenSwimAndFlyAck[] = MSEHasGuidByte7, MSEHasTransportGuidByte4, MSEHasTransportGuidByte2, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte0, MSEHasTransportGuidByte3, MSEHasTransportGuidByte6, MSEHasTransportGuidByte5, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte7, MSEHasTransportGuidByte1, MSEMovementFlags2, @@ -2345,10 +2345,10 @@ MovementStatusElements const MovementSetCanTransitionBetweenSwimAndFlyAck[] = MSETransportGuidByte2, MSETransportGuidByte7, MSETransportPositionX, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte6, MSETransportOrientation, - MSETransportTime3, + MSETransportVehicleId, MSEPitch, MSEOrientation, MSETimestamp, @@ -2440,8 +2440,8 @@ MovementStatusElements const MovementUpdateRunSpeed[] = MSEHasOrientation, MSEHasTransportData, MSEHasTransportGuidByte5, - MSEHasTransportTime2, - MSEHasTransportTime3, + MSEHasTransportPrevTime, + MSEHasTransportVehicleId, MSEHasTransportGuidByte7, MSEHasTransportGuidByte4, MSEHasTransportGuidByte2, @@ -2463,11 +2463,11 @@ MovementStatusElements const MovementUpdateRunSpeed[] = MSETransportTime, MSETransportGuidByte7, MSETransportSeat, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionY, MSETransportGuidByte3, MSETransportGuidByte2, - MSETransportTime3, + MSETransportVehicleId, MSETransportPositionZ, MSETimestamp, MSEFallCosAngle, @@ -2634,9 +2634,9 @@ MovementStatusElements const MovementForceRunSpeedChangeAck[] = MSEHasGuidByte5, MSEHasMovementFlags, MSEHasGuidByte3, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte5, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte3, MSEHasTransportGuidByte2, MSEHasTransportGuidByte0, @@ -2661,13 +2661,13 @@ MovementStatusElements const MovementForceRunSpeedChangeAck[] = MSETransportPositionY, MSETransportGuidByte0, MSETransportGuidByte5, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionX, MSETransportTime, MSETransportGuidByte7, MSETransportOrientation, MSETransportGuidByte3, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte2, MSETransportSeat, MSETransportGuidByte4, @@ -2712,8 +2712,8 @@ MovementStatusElements const MovementSetCollisionHeightAck[] = MSEHasGuidByte0, MSEHasTransportGuidByte4, MSEHasTransportGuidByte3, - MSEHasTransportTime2, - MSEHasTransportTime3, + MSEHasTransportPrevTime, + MSEHasTransportVehicleId, MSEHasTransportGuidByte5, MSEHasTransportGuidByte1, MSEHasTransportGuidByte7, @@ -2733,7 +2733,7 @@ MovementStatusElements const MovementSetCollisionHeightAck[] = MSEGuidByte4, MSETransportPositionX, MSETransportGuidByte4, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte0, MSETransportOrientation, MSETransportPositionY, @@ -2745,7 +2745,7 @@ MovementStatusElements const MovementSetCollisionHeightAck[] = MSETransportGuidByte6, MSETransportGuidByte3, MSETransportGuidByte1, - MSETransportTime3, + MSETransportVehicleId, MSETransportPositionZ, MSEFallVerticalSpeed, MSEFallTime, @@ -2787,9 +2787,9 @@ MovementStatusElements const MovementForceFlightSpeedChangeAck[] = MSEHasTransportGuidByte6, MSEHasTransportGuidByte1, MSEHasTransportGuidByte7, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte0, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte3, MSEHasTransportGuidByte2, MSEHasTransportGuidByte5, @@ -2808,11 +2808,11 @@ MovementStatusElements const MovementForceFlightSpeedChangeAck[] = MSETransportGuidByte6, MSETransportGuidByte0, MSETransportSeat, - MSETransportTime2, + MSETransportPrevTime, MSETransportOrientation, MSETransportGuidByte1, MSETransportGuidByte5, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte2, MSETransportPositionZ, MSETransportGuidByte7, @@ -2860,8 +2860,8 @@ MovementStatusElements const MovementSetCanFlyAck[] = MSEHasTransportGuidByte3, MSEHasTransportGuidByte1, MSEHasTransportGuidByte2, - MSEHasTransportTime3, - MSEHasTransportTime2, + MSEHasTransportVehicleId, + MSEHasTransportPrevTime, MSEHasTransportGuidByte0, MSEHasTransportGuidByte5, MSEHasTransportGuidByte7, @@ -2878,10 +2878,10 @@ MovementStatusElements const MovementSetCanFlyAck[] = MSEGuidByte6, MSEGuidByte4, MSEGuidByte5, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte6, MSETransportTime, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte7, MSETransportPositionZ, MSETransportGuidByte3, @@ -2937,8 +2937,8 @@ MovementStatusElements const MovementForceSwimSpeedChangeAck[] = MSEHasTransportGuidByte5, MSEHasTransportGuidByte7, MSEHasTransportGuidByte3, - MSEHasTransportTime2, - MSEHasTransportTime3, + MSEHasTransportPrevTime, + MSEHasTransportVehicleId, MSEHasTransportGuidByte6, MSEHasTransportGuidByte2, MSEMovementFlags2, @@ -2953,8 +2953,8 @@ MovementStatusElements const MovementForceSwimSpeedChangeAck[] = MSEGuidByte4, MSEGuidByte7, MSETransportGuidByte0, - MSETransportTime3, - MSETransportTime2, + MSETransportVehicleId, + MSETransportPrevTime, MSETransportPositionX, MSETransportGuidByte7, MSETransportSeat, @@ -3005,11 +3005,11 @@ MovementStatusElements const MovementForceWalkSpeedChangeAck[] = MSEHasGuidByte7, MSEHasGuidByte6, MSEHasPitch, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte5, MSEHasTransportGuidByte1, MSEHasTransportGuidByte6, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte2, MSEHasTransportGuidByte0, MSEHasTransportGuidByte4, @@ -3037,7 +3037,7 @@ MovementStatusElements const MovementForceWalkSpeedChangeAck[] = MSETransportPositionX, MSETransportGuidByte0, MSETransportTime, - MSETransportTime3, + MSETransportVehicleId, MSETransportPositionY, MSETransportGuidByte2, MSETransportGuidByte4, @@ -3046,7 +3046,7 @@ MovementStatusElements const MovementForceWalkSpeedChangeAck[] = MSETransportOrientation, MSETransportSeat, MSETransportGuidByte6, - MSETransportTime2, + MSETransportPrevTime, MSESplineElevation, MSETimestamp, MSEOrientation, @@ -3080,12 +3080,12 @@ MovementStatusElements const MovementForceRunBackSpeedChangeAck[] = MSEHasSplineElevation, MSEZeroBit, MSEHasTransportGuidByte3, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte7, MSEHasTransportGuidByte0, MSEHasTransportGuidByte2, MSEHasTransportGuidByte1, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, MSEHasTransportGuidByte5, @@ -3112,12 +3112,12 @@ MovementStatusElements const MovementForceRunBackSpeedChangeAck[] = MSETransportGuidByte0, MSETransportGuidByte2, MSETransportPositionY, - MSETransportTime3, + MSETransportVehicleId, MSETransportPositionX, MSETransportOrientation, MSETransportGuidByte3, MSETransportTime, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte4, MSETransportPositionZ, MSETransportGuidByte7, @@ -3278,9 +3278,9 @@ MovementStatusElements const ForceMoveRootAck[] = MSEHasTransportGuidByte3, MSEHasTransportGuidByte1, MSEHasTransportGuidByte2, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte4, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte5, MSEMovementFlags2, MSEMovementFlags, @@ -3297,8 +3297,8 @@ MovementStatusElements const ForceMoveRootAck[] = MSETransportGuidByte4, MSETransportOrientation, MSETransportPositionZ, - MSETransportTime3, - MSETransportTime2, + MSETransportVehicleId, + MSETransportPrevTime, MSETransportGuidByte7, MSETransportGuidByte2, MSETransportGuidByte0, @@ -3347,9 +3347,9 @@ MovementStatusElements const ForceMoveUnrootAck[] = MSEHasGuidByte6, MSEHasFallDirection, MSEHasTransportGuidByte0, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte6, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte3, MSEHasTransportGuidByte5, MSEHasTransportGuidByte7, @@ -3371,12 +3371,12 @@ MovementStatusElements const ForceMoveUnrootAck[] = MSETransportGuidByte2, MSETransportGuidByte3, MSETransportPositionY, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte5, MSETransportSeat, MSETransportGuidByte0, MSETransportTime, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte4, MSETransportOrientation, MSETransportPositionX, @@ -3421,9 +3421,9 @@ MovementStatusElements const MovementFallReset[] = MSEHasTransportGuidByte1, MSEHasTransportGuidByte5, MSEHasTransportGuidByte4, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte6, MSEHasTransportGuidByte7, MSEHasTransportGuidByte3, @@ -3446,9 +3446,9 @@ MovementStatusElements const MovementFallReset[] = MSETransportPositionY, MSETransportPositionZ, MSETransportSeat, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte6, - MSETransportTime3, + MSETransportVehicleId, MSETransportTime, MSETransportGuidByte0, MSETransportOrientation, @@ -3491,13 +3491,13 @@ MovementStatusElements const MovementFeatherFallAck[] = MSEHasGuidByte0, MSEHasGuidByte4, MSEHasTransportGuidByte6, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte2, MSEHasTransportGuidByte4, MSEHasTransportGuidByte7, MSEHasTransportGuidByte3, MSEHasTransportGuidByte5, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte1, MSEHasTransportGuidByte0, MSEHasFallDirection, @@ -3511,7 +3511,7 @@ MovementStatusElements const MovementFeatherFallAck[] = MSEGuidByte4, MSEGuidByte3, MSEGuidByte2, - MSETransportTime3, + MSETransportVehicleId, MSETransportOrientation, MSETransportPositionZ, MSETransportGuidByte7, @@ -3520,7 +3520,7 @@ MovementStatusElements const MovementFeatherFallAck[] = MSETransportPositionX, MSETransportGuidByte1, MSETransportGuidByte6, - MSETransportTime2, + MSETransportPrevTime, MSETransportTime, MSETransportPositionY, MSETransportGuidByte4, @@ -3564,7 +3564,7 @@ MovementStatusElements const MovementGravityDisableAck[] = MSEHasFallData, MSEHasGuidByte1, MSEHasTransportGuidByte2, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte0, MSEHasTransportGuidByte1, MSEHasTransportGuidByte5, @@ -3572,7 +3572,7 @@ MovementStatusElements const MovementGravityDisableAck[] = MSEHasTransportGuidByte7, MSEHasTransportGuidByte6, MSEHasTransportGuidByte4, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEMovementFlags, MSEMovementFlags2, MSEHasFallDirection, @@ -3596,10 +3596,10 @@ MovementStatusElements const MovementGravityDisableAck[] = MSETransportGuidByte1, MSETransportGuidByte0, MSETransportOrientation, - MSETransportTime2, + MSETransportPrevTime, MSETransportPositionX, MSETransportGuidByte7, - MSETransportTime3, + MSETransportVehicleId, MSEFallSinAngle, MSEFallCosAngle, MSEFallHorizontalSpeed, @@ -3636,14 +3636,14 @@ MovementStatusElements const MovementGravityEnableAck[] = MSEHasMovementFlags, MSEHasFallData, MSEHasGuidByte0, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte0, MSEHasTransportGuidByte1, MSEHasTransportGuidByte3, MSEHasTransportGuidByte7, MSEHasTransportGuidByte2, MSEHasTransportGuidByte5, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, MSEHasFallDirection, @@ -3664,7 +3664,7 @@ MovementStatusElements const MovementGravityEnableAck[] = MSEFallVerticalSpeed, MSETransportGuidByte1, MSETransportPositionX, - MSETransportTime3, + MSETransportVehicleId, MSETransportOrientation, MSETransportGuidByte2, MSETransportGuidByte0, @@ -3674,7 +3674,7 @@ MovementStatusElements const MovementGravityEnableAck[] = MSETransportGuidByte3, MSETransportGuidByte4, MSETransportPositionZ, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte5, MSETransportTime, MSETransportPositionY, @@ -3711,14 +3711,14 @@ MovementStatusElements const MovementHoverAck[] = MSEHasGuidByte3, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte1, MSEHasTransportGuidByte0, MSEHasTransportGuidByte3, MSEHasTransportGuidByte2, MSEHasTransportGuidByte5, MSEHasTransportGuidByte7, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEMovementFlags, MSEMovementFlags2, MSEHasFallDirection, @@ -3738,7 +3738,7 @@ MovementStatusElements const MovementHoverAck[] = MSEFallVerticalSpeed, MSEOrientation, MSETransportGuidByte1, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte2, MSETransportGuidByte7, MSETransportGuidByte3, @@ -3751,7 +3751,7 @@ MovementStatusElements const MovementHoverAck[] = MSETransportGuidByte0, MSETransportPositionY, MSETransportGuidByte5, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte6, MSESplineElevation, MSEPitch, @@ -3785,9 +3785,9 @@ MovementStatusElements const MovementKnockBackAck[] = MSEMovementFlags, MSEHasTransportGuidByte4, MSEHasTransportGuidByte1, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte0, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte6, MSEHasTransportGuidByte2, MSEHasTransportGuidByte3, @@ -3811,14 +3811,14 @@ MovementStatusElements const MovementKnockBackAck[] = MSETimestamp, MSETransportPositionY, MSETransportGuidByte4, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte7, MSETransportOrientation, MSETransportGuidByte6, MSETransportTime, MSETransportGuidByte3, MSETransportGuidByte1, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte2, MSETransportPositionZ, MSETransportGuidByte0, @@ -3861,9 +3861,9 @@ MovementStatusElements const MovementWaterWalkAck[] = MSEHasTransportGuidByte2, MSEHasTransportGuidByte7, MSEHasTransportGuidByte5, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte3, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte4, MSEMovementFlags, MSEHasFallDirection, @@ -3878,12 +3878,12 @@ MovementStatusElements const MovementWaterWalkAck[] = MSEGuidByte1, MSETransportPositionX, MSETransportGuidByte1, - MSETransportTime3, + MSETransportVehicleId, MSETransportGuidByte0, MSETransportOrientation, MSETransportGuidByte7, MSETransportPositionY, - MSETransportTime2, + MSETransportPrevTime, MSETransportTime, MSETransportGuidByte5, MSETransportSeat, @@ -4986,10 +4986,10 @@ MovementStatusElements const ChangeSeatsOnControlledVehicle[] = MSEHasTransportGuidByte0, MSEHasTransportGuidByte7, MSEHasTransportGuidByte5, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte1, MSEHasTransportGuidByte2, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte4, MSEHasTransportGuidByte6, MSEMovementFlags2, @@ -5017,8 +5017,8 @@ MovementStatusElements const ChangeSeatsOnControlledVehicle[] = MSEFallTime, MSEFallVerticalSpeed, MSETransportGuidByte2, - MSETransportTime2, - MSETransportTime3, + MSETransportPrevTime, + MSETransportVehicleId, MSETransportGuidByte0, MSETransportTime, MSETransportSeat, @@ -5064,10 +5064,10 @@ MovementStatusElements const CastSpellEmbeddedMovement[] = MSEHasTransportGuidByte6, MSEHasTransportGuidByte2, MSEHasTransportGuidByte5, - MSEHasTransportTime2, + MSEHasTransportPrevTime, MSEHasTransportGuidByte7, MSEHasTransportGuidByte4, - MSEHasTransportTime3, + MSEHasTransportVehicleId, MSEHasTransportGuidByte0, MSEHasTransportGuidByte1, MSEHasTransportGuidByte3, @@ -5087,13 +5087,13 @@ MovementStatusElements const CastSpellEmbeddedMovement[] = MSETransportTime, MSETransportGuidByte6, MSETransportGuidByte5, - MSETransportTime3, + MSETransportVehicleId, MSETransportPositionX, MSETransportGuidByte4, MSETransportPositionZ, MSETransportGuidByte2, MSETransportGuidByte0, - MSETransportTime2, + MSETransportPrevTime, MSETransportGuidByte1, MSETransportGuidByte3, MSETransportPositionY, diff --git a/src/server/game/Movement/MovementStructures.h b/src/server/game/Movement/MovementStructures.h index d348d08b415..4c7fbd1212b 100644 --- a/src/server/game/Movement/MovementStructures.h +++ b/src/server/game/Movement/MovementStructures.h @@ -48,8 +48,8 @@ enum MovementStatusElements MSEHasTransportGuidByte5, MSEHasTransportGuidByte6, MSEHasTransportGuidByte7, - MSEHasTransportTime2, - MSEHasTransportTime3, + MSEHasTransportPrevTime, + MSEHasTransportVehicleId, MSEHasPitch, MSEHasFallData, MSEHasFallDirection, @@ -85,8 +85,8 @@ enum MovementStatusElements MSETransportOrientation, MSETransportSeat, MSETransportTime, - MSETransportTime2, - MSETransportTime3, + MSETransportPrevTime, + MSETransportVehicleId, MSEPitch, MSEFallTime, MSEFallVerticalSpeed, diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp index fa44c19c354..02fdabb3938 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.cpp +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.cpp @@ -149,100 +149,75 @@ namespace Movement WriteLinearPath(spline, data); } - void PacketBuilder::WriteCreateBits(MoveSpline const& moveSpline, ByteBuffer& data) + void PacketBuilder::WriteCreate(MoveSpline const& moveSpline, ByteBuffer& data) { - if (!data.WriteBit(!moveSpline.Finalized())) - return; - - data.WriteBits(uint8(moveSpline.spline.mode()), 2); - data.WriteBit(moveSpline.splineflags & (MoveSplineFlag::Parabolic | MoveSplineFlag::Animation)); - data.WriteBits(moveSpline.getPath().size(), 22); - switch (moveSpline.splineflags & MoveSplineFlag::Mask_Final_Facing) + data << uint32(moveSpline.GetId()); // ID + if (!moveSpline.isCyclic()) // Destination { - case MoveSplineFlag::Final_Target: - { - ObjectGuid targetGuid(moveSpline.facing.target); - data.WriteBits(2, 2); - data.WriteBit(targetGuid[4]); - data.WriteBit(targetGuid[3]); - data.WriteBit(targetGuid[7]); - data.WriteBit(targetGuid[2]); - data.WriteBit(targetGuid[6]); - data.WriteBit(targetGuid[1]); - data.WriteBit(targetGuid[0]); - data.WriteBit(targetGuid[5]); - break; - } - case MoveSplineFlag::Final_Angle: - data.WriteBits(0, 2); - break; - case MoveSplineFlag::Final_Point: - data.WriteBits(1, 2); - break; - default: - data.WriteBits(3, 2); - break; + Vector3 dest = moveSpline.FinalDestination(); + data << float(dest.z); + data << float(dest.x); + data << float(dest.y); } + else + data << Vector3::zero(); - data.WriteBit((moveSpline.splineflags & MoveSplineFlag::Parabolic) && moveSpline.effect_start_time < moveSpline.Duration()); - data.WriteBits(moveSpline.splineflags.raw(), 25); - } - - void PacketBuilder::WriteCreateData(MoveSpline const& moveSpline, ByteBuffer& data) - { - if (!moveSpline.Finalized()) + if (data.WriteBit(!moveSpline.Finalized())) // MovementSplineMove { MoveSplineFlag const& splineFlags = moveSpline.splineflags; + data.FlushBits(); - if ((splineFlags & MoveSplineFlag::Parabolic) && moveSpline.effect_start_time < moveSpline.Duration()) - data << moveSpline.vertical_acceleration; // added in 3.1 + data.WriteBits(moveSpline.splineflags.raw(), 25); // SplineFlags + data.WriteBits(uint8(moveSpline.spline.mode()), 2); // Mode - data << moveSpline.timePassed(); + bool HasJumpGravity = data.WriteBit(moveSpline.splineflags & (MoveSplineFlag::Parabolic | MoveSplineFlag::Animation)); // HasJumpGravity + bool HasSpecialTime = data.WriteBit((moveSpline.splineflags & MoveSplineFlag::Parabolic) && moveSpline.effect_start_time < moveSpline.Duration()); // HasSpecialTime if (splineFlags.final_angle) - data << moveSpline.facing.angle; + data.WriteBit(3); else if (splineFlags.final_target) - { - ObjectGuid facingGuid(moveSpline.facing.target); - data.WriteByteSeq(facingGuid[5]); - data.WriteByteSeq(facingGuid[3]); - data.WriteByteSeq(facingGuid[7]); - data.WriteByteSeq(facingGuid[1]); - data.WriteByteSeq(facingGuid[6]); - data.WriteByteSeq(facingGuid[4]); - data.WriteByteSeq(facingGuid[2]); - data.WriteByteSeq(facingGuid[0]); - } - - uint32 nodes = moveSpline.getPath().size(); - for (uint32 i = 0; i < nodes; ++i) - { - data << float(moveSpline.getPath()[i].z); - data << float(moveSpline.getPath()[i].x); - data << float(moveSpline.getPath()[i].y); - } + data.WriteBit(2); + else if (splineFlags.final_point) + data.WriteBit(1); + else + data.WriteBit(0); - if (splineFlags.final_point) - data << moveSpline.facing.f.x << moveSpline.facing.f.z << moveSpline.facing.f.y; + data.WriteBit(0); // HasSplineFilterKey - data << float(1.f); // splineInfo.duration_mod_next; added in 3.1 - data << moveSpline.Duration(); - if (splineFlags & (MoveSplineFlag::Parabolic | MoveSplineFlag::Animation)) - data << moveSpline.effect_start_time; // added in 3.1 + data << int32(moveSpline.timePassed()); // Elapsed + data << uint32(moveSpline.Duration()); // Duration + data << float(1.0f); // DurationModifier + data << float(1.0f); // NextDurationModifier - data << float(1.f); // splineInfo.duration_mod; added in 3.1 - } + uint32 PointsCount = moveSpline.getPath().size(); + data << uint32(PointsCount); - if (!moveSpline.isCyclic()) - { - Vector3 dest = moveSpline.FinalDestination(); - data << float(dest.z); - data << float(dest.x); - data << float(dest.y); + if (splineFlags.final_angle) // FaceDirection + data << moveSpline.facing.angle; + else if (splineFlags.final_target) // FaceGUID + data << moveSpline.facing.target; + else if (splineFlags.final_point) // FaceSpot + data << moveSpline.facing.f.x << moveSpline.facing.f.y << moveSpline.facing.f.z; + + if (HasJumpGravity) + data << float(moveSpline.vertical_acceleration); // JumpGravity + + if (HasSpecialTime) + data << uint32(moveSpline.effect_start_time); // SpecialTime + + //if (HasSplineFilterKey) + //{ + // data << uint32(FilterKeysCount); + // for (var i = 0; i < PointsCount; ++i) + // { + // data << float(In); + // data << float(Out); + // } + + // data.WriteBits(FilterFlags, 2); + //} + + data.append<Vector3>(&moveSpline.getPath()[0], PointsCount); // Points } - else - data << Vector3::zero(); - - data << moveSpline.GetId(); } } diff --git a/src/server/game/Movement/Spline/MovementPacketBuilder.h b/src/server/game/Movement/Spline/MovementPacketBuilder.h index 750cdc0fdbf..2878a330f67 100644 --- a/src/server/game/Movement/Spline/MovementPacketBuilder.h +++ b/src/server/game/Movement/Spline/MovementPacketBuilder.h @@ -37,8 +37,7 @@ namespace Movement static void WriteMonsterMove(const MoveSpline& mov, WorldPacket& data); static void WriteStopMovement(Vector3 const& loc, uint32 splineId, ByteBuffer& data); - static void WriteCreateBits(MoveSpline const& moveSpline, ByteBuffer& data); - static void WriteCreateData(MoveSpline const& moveSpline, ByteBuffer& data); + static void WriteCreate(MoveSpline const& moveSpline, ByteBuffer& data); }; } #endif // TRINITYSERVER_PACKET_BUILDER_H |