From 8c347fae7082a746d594f3a3b5fb743618addcc8 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Mon, 12 Nov 2018 12:45:01 -0800 Subject: [PATCH] Fixes for domain server use of changed OctreeDataUtils --- libraries/octree/src/OctreeDataUtils.cpp | 33 +++++++++++++++++++----- libraries/octree/src/OctreeDataUtils.h | 3 +++ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/libraries/octree/src/OctreeDataUtils.cpp b/libraries/octree/src/OctreeDataUtils.cpp index a94fa31800..255933a783 100644 --- a/libraries/octree/src/OctreeDataUtils.cpp +++ b/libraries/octree/src/OctreeDataUtils.cpp @@ -44,6 +44,7 @@ namespace { } return !doc->isNull(); } + } // Anon namespace. bool OctreeUtils::RawOctreeData::readOctreeDataInfoFromJSON(QJsonObject root) { @@ -62,6 +63,7 @@ bool OctreeUtils::RawOctreeData::readOctreeDataInfoFromMap(const QVariantMap& ma dataVersion = map["DataVersion"].toInt(); version = map["Version"].toInt(); } + readSubclassData(map); return true; } @@ -85,13 +87,20 @@ bool OctreeUtils::RawOctreeData::readOctreeDataInfoFromData(QByteArray data) { // Reads octree file and parses it into a RawOctreeData object. // Returns false if readOctreeFile fails. bool OctreeUtils::RawOctreeData::readOctreeDataInfoFromFile(QString path) { - QJsonDocument doc; - if (!readOctreeFile(path, &doc)) { + QFile file(path); + if (!file.open(QIODevice::ReadOnly)) { + qCritical() << "Cannot open json file for reading: " << path; return false; } - auto root = doc.object(); - return readOctreeDataInfoFromJSON(root); + QByteArray data = file.readAll(); + QByteArray jsonData; + + if (!gunzip(data, jsonData)) { + jsonData = data; + } + + return readOctreeDataInfoFromData(jsonData); } QByteArray OctreeUtils::RawOctreeData::toByteArray() { @@ -139,8 +148,18 @@ void OctreeUtils::RawEntityData::readSubclassData(const QJsonObject& root) { } } -void OctreeUtils::RawEntityData::writeSubclassData(QJsonObject& root) const { - root["Entities"] = entityData; +void OctreeUtils::RawEntityData::readSubclassData(const QVariantMap& root) { + variantEntityData = root["Entities"].toList(); } -PacketType OctreeUtils::RawEntityData::dataPacketType() const { return PacketType::EntityData; } \ No newline at end of file +void OctreeUtils::RawEntityData::writeSubclassData(QJsonObject& root) const { + //root["Entities"] = entityData; + QJsonArray entitiesJsonArray; + for (auto entityIter = variantEntityData.begin(); entityIter != variantEntityData.end(); ++entityIter) { + entitiesJsonArray += entityIter->toJsonObject(); + } + + root["Entities"] = entitiesJsonArray; +} + +PacketType OctreeUtils::RawEntityData::dataPacketType() const { return PacketType::EntityData; } diff --git a/libraries/octree/src/OctreeDataUtils.h b/libraries/octree/src/OctreeDataUtils.h index 0dfa99a9a0..20092cd451 100644 --- a/libraries/octree/src/OctreeDataUtils.h +++ b/libraries/octree/src/OctreeDataUtils.h @@ -34,6 +34,7 @@ public: virtual PacketType dataPacketType() const; virtual void readSubclassData(const QJsonObject& root) { } + virtual void readSubclassData(const QVariantMap& root) { } virtual void writeSubclassData(QJsonObject& root) const { } void resetIdAndVersion(); @@ -50,9 +51,11 @@ class RawEntityData : public RawOctreeData { public: PacketType dataPacketType() const override; void readSubclassData(const QJsonObject& root) override; + void readSubclassData(const QVariantMap& root) override; void writeSubclassData(QJsonObject& root) const override; QJsonArray entityData; + QVariantList variantEntityData; }; }