diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 0a89268f6b..694a1e1ddc 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) { @@ -123,17 +122,8 @@ 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)); } } 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