void PacketBuilder::WriteCreateGuid(MoveSpline const& moveSpline, ByteBuffer& data) { if (!moveSpline.Finalized() && (moveSpline.splineflags & MoveSplineFlag::Mask_Final_Facing == MoveSplineFlag::Final_Target)) { ObjectGuid facingGuid = moveSpline.facing.target; uint8 bitOrder[8] = { 4, 7, 0, 5, 1, 2, 3, 6 }; data.WriteBitInOrder(facingGuid, bitOrder); uint8 byteOrder[8] = { 4, 2, 0, 5, 6, 3, 1, 7 }; data.WriteBytesSeq(facingGuid, byteOrder); } }
void PacketBuilder::WriteCreateGuid(MoveSpline const& moveSpline, ByteBuffer& data) { if ((moveSpline.splineflags & MoveSplineFlag::Mask_Final_Facing) == MoveSplineFlag::Final_Target) { ObjectGuid facingGuid = moveSpline.facing.target; uint8 bitOrder[8] = { 6, 7, 3, 0, 5, 1, 4, 2 }; data.WriteBitInOrder(facingGuid, bitOrder); uint8 byteOrder[8] = { 4, 2, 5, 6, 0, 7, 1, 3 }; data.WriteBytesSeq(facingGuid, byteOrder); } }
void PacketBuilder::WriteStopMovement(Vector3 const& pos, uint32 splineId, ByteBuffer& data, Unit* unit) { ObjectGuid guid = unit->GetGUID(); ObjectGuid transport = unit->GetTransGUID(); data << float(0.f); // Most likely transport Y data << uint32(splineId); data << float(0.f); // Most likely transport Z data << float(0.f); // Most likely transport X data << float(pos.x); data << float(pos.y); data << float(pos.z); data.WriteBit(guid[3]); data.WriteBit(1); data.WriteBit(guid[6]); data.WriteBit(1); data.WriteBit(1); data.WriteBits(MonsterMoveStop, 3); data.WriteBit(1); data.WriteBit(guid[2]); data.WriteBit(guid[7]); data.WriteBit(guid[5]); data.WriteBit(1); data.WriteBit(guid[4]); data.WriteBits(0, 22); // WP count data.WriteBit(1); data.WriteBit(0); data.WriteBit(guid[0]); uint8 transportBitsOrder[8] = {3, 6, 5, 0, 1, 2, 4, 7}; uint8 transportBytesOrder[8] = {7, 3, 2, 0, 6, 4, 5, 1}; data.WriteBitInOrder(transport, transportBitsOrder); data.WriteBit(1); data.WriteBit(1); // Parabolic speed // esi+4Ch data.WriteBit(1); data.WriteBits(0, 20); data.WriteBit(guid[1]); data.WriteBit(0); data.WriteBit(0); data.WriteBit(1); data.FlushBits(); data.WriteByteSeq(guid[3]); data.WriteBytesSeq(transport, transportBytesOrder); data.WriteByteSeq(guid[7]); data.WriteByteSeq(guid[5]); data.WriteByteSeq(guid[1]); data.WriteByteSeq(guid[2]); data.WriteByteSeq(guid[6]); data.WriteByteSeq(guid[0]); data.WriteByteSeq(guid[4]); }