From 7b0854c121089270f4a4bf472954ad4993140b2c Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 2 Apr 2019 14:13:00 -0700 Subject: [PATCH] support selecting material in json by name with ? --- libraries/render-utils/src/Model.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 30c4000bc7..865f8dba08 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1555,7 +1555,23 @@ void Model::applyMaterialMapping() { return; } render::Transaction transaction; - auto networkMaterial = networkMaterialResource->parsedMaterials.networkMaterials[networkMaterialResource->parsedMaterials.names[0]]; + std::shared_ptr networkMaterial; + { + QString url = networkMaterialResource->getURL().toString(); + bool foundMaterialName = false; + if (url.contains("?")) { + auto split = url.split("?"); + std::string materialName = split.last().toStdString(); + auto networkMaterialIter = networkMaterialResource->parsedMaterials.networkMaterials.find(materialName); + if (networkMaterialIter != networkMaterialResource->parsedMaterials.networkMaterials.end()) { + networkMaterial = networkMaterialIter->second; + foundMaterialName = true; + } + } + if (!foundMaterialName) { + networkMaterial = networkMaterialResource->parsedMaterials.networkMaterials[networkMaterialResource->parsedMaterials.names[0]]; + } + } for (auto shapeID : shapeIDs) { if (shapeID < _modelMeshRenderItemIDs.size()) { auto itemID = _modelMeshRenderItemIDs[shapeID];