From cfa847ba546006168a2da807026dc6a9f754f5e2 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 31 Mar 2016 09:45:28 -0700 Subject: [PATCH 1/3] don't put empty folders at end of scripts tree. allow /~/ to work from outside scripts --- libraries/script-engine/src/BatchLoader.cpp | 6 ++++-- libraries/script-engine/src/ScriptEngine.cpp | 5 ++--- libraries/script-engine/src/ScriptEngines.cpp | 2 +- libraries/script-engine/src/ScriptsModel.cpp | 3 +++ 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libraries/script-engine/src/BatchLoader.cpp b/libraries/script-engine/src/BatchLoader.cpp index ad3f422813..f3e6242216 100644 --- a/libraries/script-engine/src/BatchLoader.cpp +++ b/libraries/script-engine/src/BatchLoader.cpp @@ -18,6 +18,7 @@ #include #include #include "ResourceManager.h" +#include "ScriptEngines.h" BatchLoader::BatchLoader(const QList& urls) : QObject(), @@ -34,8 +35,9 @@ void BatchLoader::start() { } _started = true; - - for (const auto& url : _urls) { + + for (const auto& rawURL : _urls) { + QUrl url = expandScriptUrl(normalizeScriptURL(rawURL)); auto request = ResourceManager::createResourceRequest(this, url); if (!request) { _data.insert(url, QString()); diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 94662308fd..c7a3396078 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -220,11 +220,10 @@ void ScriptEngine::loadURL(const QUrl& scriptURL, bool reload) { return; } - _fileNameString = scriptURL.toString(); + QUrl url = expandScriptUrl(normalizeScriptURL(scriptURL)); + _fileNameString = url.toString(); _isReloading = reload; - QUrl url(scriptURL); - bool isPending; auto scriptCache = DependencyManager::get(); scriptCache->getScript(url, this, isPending, reload); diff --git a/libraries/script-engine/src/ScriptEngines.cpp b/libraries/script-engine/src/ScriptEngines.cpp index 16301dc890..f22d048661 100644 --- a/libraries/script-engine/src/ScriptEngines.cpp +++ b/libraries/script-engine/src/ScriptEngines.cpp @@ -429,7 +429,7 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL connect(scriptEngine, &ScriptEngine::errorLoadingScript, this, &ScriptEngines::onScriptEngineError); // get the script engine object to load the script at the designated script URL - scriptEngine->loadURL(QUrl(expandScriptUrl(scriptUrl.toString())), reload); + scriptEngine->loadURL(scriptUrl, reload); } return scriptEngine; diff --git a/libraries/script-engine/src/ScriptsModel.cpp b/libraries/script-engine/src/ScriptsModel.cpp index 9513a333bc..0c58966e81 100644 --- a/libraries/script-engine/src/ScriptsModel.cpp +++ b/libraries/script-engine/src/ScriptsModel.cpp @@ -309,6 +309,9 @@ void ScriptsModel::rebuildTree() { QString hash; QStringList pathList = script->getLocalPath().split(tr("/")); pathList.removeLast(); + if (pathList.isEmpty()) { + continue; + } QStringList::const_iterator pathIterator; for (pathIterator = pathList.constBegin(); pathIterator != pathList.constEnd(); ++pathIterator) { hash.append(*pathIterator + "/"); From bc2901aa966ba63c12d383c6e9719f2e8e5b6ea3 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 31 Mar 2016 12:54:23 -0700 Subject: [PATCH 2/3] Fix model fetch delay --- .../model-networking/src/model-networking/ModelCache.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 2a6f33b964..9b5666742d 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -66,7 +66,7 @@ void GeometryMappingResource::downloadFinished(const QByteArray& data) { GeometryExtra extra{ mapping, textureBaseUrl }; // Get the raw GeometryResource, not the wrapped NetworkGeometry - _geometryResource = modelCache->getResource(url, QUrl(), true, &extra).staticCast(); + _geometryResource = modelCache->getResource(url, QUrl(), false, &extra).staticCast(); if (_geometryResource->isLoaded()) { onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty()); @@ -226,7 +226,7 @@ QSharedPointer ModelCache::createResource(const QUrl& url, const QShar std::shared_ptr ModelCache::getGeometry(const QUrl& url, const QVariantHash& mapping, const QUrl& textureBaseUrl) { GeometryExtra geometryExtra = { mapping, textureBaseUrl }; GeometryResource::Pointer resource = getResource(url, QUrl(), true, &geometryExtra).staticCast(); - return std::make_shared(resource); + return resource ? std::make_shared(resource) : NetworkGeometry::Pointer(); } const QVariantMap Geometry::getTextures() const { From 63595e196e17e74fa084949636a56ff4dff532ef Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 31 Mar 2016 14:02:47 -0700 Subject: [PATCH 3/3] fix batch-loaded local scripts --- libraries/script-engine/src/ScriptEngine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index c7a3396078..95ca4ab4f8 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -847,7 +847,7 @@ QUrl ScriptEngine::resolvePath(const QString& include) const { QUrl url(include); // first lets check to see if it's already a full URL if (!url.scheme().isEmpty()) { - return url; + return expandScriptUrl(normalizeScriptURL(url)); } // we apparently weren't a fully qualified url, so, let's assume we're relative @@ -864,7 +864,7 @@ QUrl ScriptEngine::resolvePath(const QString& include) const { } // at this point we should have a legitimate fully qualified URL for our parent - url = parentURL.resolved(url); + url = expandScriptUrl(normalizeScriptURL(parentURL.resolved(url))); return url; }