diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 49c2e17d84..7a74258916 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2916,7 +2916,7 @@ bool Application::exportEntities(const QString& filename, const QVectorwriteToJSONFile(filename.toLocal8Bit().constData()); + success = exportTree->writeToJSONFile(filename.toLocal8Bit().constData()); // restore the main window's active state _window->activateWindow(); diff --git a/libraries/octree/src/Octree.cpp b/libraries/octree/src/Octree.cpp index 475beef03c..d8c8229ce3 100644 --- a/libraries/octree/src/Octree.cpp +++ b/libraries/octree/src/Octree.cpp @@ -1868,24 +1868,26 @@ bool Octree::readJSONFromStream(unsigned long streamLength, QDataStream& inputSt return success; } -void Octree::writeToFile(const char* fileName, OctreeElementPointer element, QString persistAsFileType) { +bool Octree::writeToFile(const char* fileName, OctreeElementPointer element, QString persistAsFileType) { // make the sure file extension makes sense QString qFileName = fileNameWithoutExtension(QString(fileName), PERSIST_EXTENSIONS) + "." + persistAsFileType; QByteArray byteArray = qFileName.toUtf8(); const char* cFileName = byteArray.constData(); + bool success = false; if (persistAsFileType == "svo") { - writeToSVOFile(fileName, element); + success = writeToSVOFile(fileName, element); } else if (persistAsFileType == "json") { - writeToJSONFile(cFileName, element); + success = writeToJSONFile(cFileName, element); } else if (persistAsFileType == "json.gz") { - writeToJSONFile(cFileName, element, true); + success = writeToJSONFile(cFileName, element, true); } else { qCDebug(octree) << "unable to write octree to file of type" << persistAsFileType; } + return success; } -void Octree::writeToJSONFile(const char* fileName, OctreeElementPointer element, bool doGzip) { +bool Octree::writeToJSONFile(const char* fileName, OctreeElementPointer element, bool doGzip) { QVariantMap entityDescription; qCDebug(octree, "Saving JSON SVO to file %s...", fileName); @@ -1906,7 +1908,7 @@ void Octree::writeToJSONFile(const char* fileName, OctreeElementPointer element, bool entityDescriptionSuccess = writeToMap(entityDescription, top, true, true); if (!entityDescriptionSuccess) { qCritical("Failed to convert Entities to QVariantMap while saving to json."); - return; + return false; } // convert the QVariantMap to JSON @@ -1916,22 +1918,26 @@ void Octree::writeToJSONFile(const char* fileName, OctreeElementPointer element, if (doGzip) { if (!gzip(jsonData, jsonDataForFile, -1)) { qCritical("unable to gzip data while saving to json."); - return; + return false; } } else { jsonDataForFile = jsonData; } QFile persistFile(fileName); + bool success = false; if (persistFile.open(QIODevice::WriteOnly)) { - persistFile.write(jsonDataForFile); + success = persistFile.write(jsonDataForFile) != -1; } else { qCritical("Could not write to JSON description of entities."); } + + return success; } -void Octree::writeToSVOFile(const char* fileName, OctreeElementPointer element) { - qWarning() << "SVO file format depricated. Support for reading SVO files is no longer support and will be removed soon."; +bool Octree::writeToSVOFile(const char* fileName, OctreeElementPointer element) { + qWarning() << "SVO file format deprecated. Support for reading SVO files is no longer support and will be removed soon."; + bool success = false; std::ofstream file(fileName, std::ios::out|std::ios::binary); @@ -2010,8 +2016,12 @@ void Octree::writeToSVOFile(const char* fileName, OctreeElementPointer element) } releaseSceneEncodeData(&extraEncodeData); + + success = true; } file.close(); + + return success; } unsigned long Octree::getOctreeElementsCount() { diff --git a/libraries/octree/src/Octree.h b/libraries/octree/src/Octree.h index 2f0ce3b807..6894f0aa1a 100644 --- a/libraries/octree/src/Octree.h +++ b/libraries/octree/src/Octree.h @@ -299,9 +299,9 @@ public: void loadOctreeFile(const char* fileName); // Octree exporters - void writeToFile(const char* filename, OctreeElementPointer element = NULL, QString persistAsFileType = "svo"); - void writeToJSONFile(const char* filename, OctreeElementPointer element = NULL, bool doGzip = false); - void writeToSVOFile(const char* filename, OctreeElementPointer element = NULL); + bool writeToFile(const char* filename, OctreeElementPointer element = NULL, QString persistAsFileType = "svo"); + bool writeToJSONFile(const char* filename, OctreeElementPointer element = NULL, bool doGzip = false); + bool writeToSVOFile(const char* filename, OctreeElementPointer element = NULL); virtual bool writeToMap(QVariantMap& entityDescription, OctreeElementPointer element, bool skipDefaultValues, bool skipThoseWithBadParents) = 0; diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index a9a297a2e1..7dd729384c 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -96,7 +96,9 @@ bool Procedural::parseVersion(const QJsonValue& version) { bool Procedural::parseUrl(const QUrl& shaderUrl) { if (!shaderUrl.isValid()) { - qWarning() << "Invalid shader URL: " << shaderUrl; + if (!shaderUrl.isEmpty()) { + qWarning() << "Invalid shader URL: " << shaderUrl; + } _networkShader.reset(); return false; } diff --git a/libraries/procedural/src/procedural/ProceduralCommon.slf b/libraries/procedural/src/procedural/ProceduralCommon.slf index 128723265f..d4144ad537 100644 --- a/libraries/procedural/src/procedural/ProceduralCommon.slf +++ b/libraries/procedural/src/procedural/ProceduralCommon.slf @@ -264,12 +264,18 @@ float snoise(vec2 v) { return 130.0 * dot(m, g); } + #define PROCEDURAL 1 //PROCEDURAL_VERSION #ifdef PROCEDURAL_V1 +// shader playback time (in seconds) +uniform float iGlobalTime; +// the dimensions of the object being rendered +uniform vec3 iWorldScale; + #else // Unimplemented uniforms diff --git a/scripts/system/html/entityProperties.html b/scripts/system/html/entityProperties.html index c8edbdb369..82387cafa5 100644 --- a/scripts/system/html/entityProperties.html +++ b/scripts/system/html/entityProperties.html @@ -671,7 +671,6 @@ } else { for (var i = 0; i < elShapeSections.length; i++) { - console.log("Hiding shape section " + elShapeSections[i]) elShapeSections[i].style.display = 'none'; } } @@ -805,8 +804,10 @@ } var activeElement = document.activeElement; - - activeElement.select(); + + if(typeof activeElement.select!=="undefined"){ + activeElement.select(); + } } } }); diff --git a/scripts/system/selectAudioDevice.js b/scripts/system/selectAudioDevice.js index fd4cd43a59..663f96b59c 100644 --- a/scripts/system/selectAudioDevice.js +++ b/scripts/system/selectAudioDevice.js @@ -48,7 +48,7 @@ var selectedInputMenu = ""; var selectedOutputMenu = ""; function setupAudioMenus() { - Menu.addMenu("Audio > Devices", "Advanced"); + Menu.addMenu("Audio > Devices"); Menu.addSeparator("Audio > Devices","Output Audio Device"); var outputDeviceSetting = Settings.getValue(OUTPUT_DEVICE_SETTING);