diff --git a/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp b/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp index 3542c7c40d..d70afa4e04 100644 --- a/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp +++ b/assignment-client/src/octree/OctreeInboundPacketProcessor.cpp @@ -128,7 +128,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet } if (debugProcessPacket) { - qDebug() << " numBytesPacketHeader=" << packet->localHeaderSize(); + qDebug() << " numBytesPacketHeader=" << packet->totalHeadersSize(); qDebug() << " sizeof(sequence)=" << sizeof(sequence); qDebug() << " sizeof(sentAt)=" << sizeof(sentAt); } @@ -143,7 +143,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer packet } const unsigned char* editData = nullptr; - + while (packet->bytesLeftToRead() > 0) { editData = reinterpret_cast(packet->getPayload() + packet->pos()); diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 6e6a9eb0a8..61253ba6ba 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -900,14 +900,11 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType::Value command, Ent // // TODO: Implement support for script and visible properties. // -bool EntityItemProperties::decodeEntityEditPacket(NLPacket& packet, int& processedBytes, +bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int bytesToRead, int& processedBytes, EntityItemID& entityID, EntityItemProperties& properties) { bool valid = false; - const unsigned char* data = reinterpret_cast(packet.getPayload()); const unsigned char* dataAt = data; - - int bytesToRead = packet.getPayloadSize(); processedBytes = 0; // the first part of the data is an octcode, this is a required element of the edit packet format, but we don't @@ -933,10 +930,9 @@ bool EntityItemProperties::decodeEntityEditPacket(NLPacket& packet, int& process // 2) if the edit is to a new entity, the created time is the last edited time // encoded id - QByteArray encodedID((const char*)dataAt, NUM_BYTES_RFC4122_UUID); // maximum possible size - QUuid editID = QUuid::fromRfc4122(encodedID); - dataAt += encodedID.size(); - processedBytes += encodedID.size(); + QUuid editID = QUuid::fromRfc4122(QByteArray::fromRawData(reinterpret_cast(dataAt), NUM_BYTES_RFC4122_UUID)); + dataAt += NUM_BYTES_RFC4122_UUID; + processedBytes += NUM_BYTES_RFC4122_UUID; entityID = editID; valid = true; diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index f9a4d499d2..4532ffd67b 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -179,7 +179,7 @@ public: static bool encodeEraseEntityMessage(const EntityItemID& entityItemID, QByteArray& buffer); - static bool decodeEntityEditPacket(NLPacket& packet, int& processedBytes, + static bool decodeEntityEditPacket(const unsigned char* data, int bytesToRead, int& processedBytes, EntityItemID& entityID, EntityItemProperties& properties); bool glowLevelChanged() const { return _glowLevelChanged; } diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 61bbde6f1a..d5f2026978 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -598,7 +598,8 @@ int EntityTree::processEditPacketData(NLPacket& packet, const unsigned char* edi EntityItemID entityItemID; EntityItemProperties properties; startDecode = usecTimestampNow(); - bool validEditPacket = EntityItemProperties::decodeEntityEditPacket(packet, processedBytes, + + bool validEditPacket = EntityItemProperties::decodeEntityEditPacket(editData, maxLength, processedBytes, entityItemID, properties); endDecode = usecTimestampNow(); diff --git a/libraries/octree/src/OctreeEditPacketSender.cpp b/libraries/octree/src/OctreeEditPacketSender.cpp index 8fc13b440d..4df172008f 100644 --- a/libraries/octree/src/OctreeEditPacketSender.cpp +++ b/libraries/octree/src/OctreeEditPacketSender.cpp @@ -251,7 +251,7 @@ void OctreeEditPacketSender::queueOctreeEditMessage(PacketType::Value type, QByt std::unique_ptr& bufferedPacket = _pendingEditPackets[nodeUUID]; if (!bufferedPacket) { - bufferedPacket = std::move(NLPacket::create(type)); + bufferedPacket = initializePacket(type, node->getClockSkewUsec()); } else { // If we're switching type, then we send the last one and start over if ((type != bufferedPacket->getType() && bufferedPacket->getPayloadSize() > 0) ||