From c683c82817b402bfb8c0836538b075c6f9102085 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 8 Sep 2016 14:55:51 -0700 Subject: [PATCH 1/3] Fix setting textures in model overlays --- interface/src/ui/overlays/ModelOverlay.cpp | 24 ++++++++++++---------- libraries/render-utils/src/Model.h | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 0a89268f6b..74719aeeb6 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -123,17 +123,19 @@ void ModelOverlay::setProperties(const QVariantMap& properties) { auto texturesValue = properties["textures"]; if (texturesValue.isValid() && texturesValue.canConvert(QVariant::Map)) { QVariantMap textureMap = texturesValue.toMap(); - foreach(const QString& key, textureMap.keys()) { - - QUrl newTextureURL = textureMap[key].toUrl(); - qDebug() << "Updating texture named" << key << "to texture at URL" << newTextureURL; - - QMetaObject::invokeMethod(_model.get(), "setTextureWithNameToURL", Qt::AutoConnection, - Q_ARG(const QString&, key), - Q_ARG(const QUrl&, newTextureURL)); - - _modelTextures[key] = newTextureURL; // Keep local track of textures for getProperty() - } + QMetaObject::invokeMethod(_model.get(), "setTextures", Qt::AutoConnection, + Q_ARG(const QVariantMap&, textureMap)); +// foreach(const QString& key, textureMap.keys()) { +// +// QUrl newTextureURL = textureMap[key].toUrl(); +// qDebug() << "Updating texture named" << key << "to texture at URL" << newTextureURL; +// +// QMetaObject::invokeMethod(_model.get(), "setTextureWithNameToURL", Qt::AutoConnection, +// Q_ARG(const QString&, key), +// Q_ARG(const QUrl&, newTextureURL)); +// +// _modelTextures[key] = newTextureURL; // Keep local track of textures for getProperty() +// } } } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index bd94fb706b..0ab028f8eb 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -131,7 +131,7 @@ public: const Geometry::Pointer& getCollisionGeometry() const { return _collisionGeometry; } const QVariantMap getTextures() const { assert(isLoaded()); return _renderGeometry->getTextures(); } - void setTextures(const QVariantMap& textures); + Q_INVOKABLE void setTextures(const QVariantMap& textures); /// Provided as a convenience, will crash if !isLoaded() // And so that getGeometry() isn't chained everywhere From 93d995a5ae5bff53b087b32cfcb5d293329eed24 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 8 Sep 2016 15:59:17 -0700 Subject: [PATCH 2/3] Fix model overlay visible not working --- interface/src/ui/overlays/ModelOverlay.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 74719aeeb6..e299070dca 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -79,11 +79,10 @@ void ModelOverlay::render(RenderArgs* args) { _model->removeFromScene(scene, pendingChanges); _model->addToScene(scene, pendingChanges); } - scene->enqueuePendingChanges(pendingChanges); - if (!_visible) { - return; - } + _model->setVisibleInScene(_visible, scene); + + scene->enqueuePendingChanges(pendingChanges); } void ModelOverlay::setProperties(const QVariantMap& properties) { From 847a5cc7a1a494708dffcab640e992ed19a7b44f Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 20 Sep 2016 12:55:15 -0700 Subject: [PATCH 3/3] Remove old texture setting code in ModelOverlay --- interface/src/ui/overlays/ModelOverlay.cpp | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index e299070dca..694a1e1ddc 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -123,18 +123,7 @@ void ModelOverlay::setProperties(const QVariantMap& properties) { if (texturesValue.isValid() && texturesValue.canConvert(QVariant::Map)) { QVariantMap textureMap = texturesValue.toMap(); QMetaObject::invokeMethod(_model.get(), "setTextures", Qt::AutoConnection, - Q_ARG(const QVariantMap&, textureMap)); -// foreach(const QString& key, textureMap.keys()) { -// -// QUrl newTextureURL = textureMap[key].toUrl(); -// qDebug() << "Updating texture named" << key << "to texture at URL" << newTextureURL; -// -// QMetaObject::invokeMethod(_model.get(), "setTextureWithNameToURL", Qt::AutoConnection, -// Q_ARG(const QString&, key), -// Q_ARG(const QUrl&, newTextureURL)); -// -// _modelTextures[key] = newTextureURL; // Keep local track of textures for getProperty() -// } + Q_ARG(const QVariantMap&, textureMap)); } }