From 10d1792956a7e5ce3f10f2cfa8b001d0d3af71dd Mon Sep 17 00:00:00 2001 From: ahcorde Date: Mon, 15 Aug 2022 15:54:35 +0200 Subject: [PATCH] Fixed usd2sdf when import from model:// Signed-off-by: ahcorde --- src/sdf_parser/Geometry.cc | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/sdf_parser/Geometry.cc b/src/sdf_parser/Geometry.cc index 321c1f2..330bddb 100644 --- a/src/sdf_parser/Geometry.cc +++ b/src/sdf_parser/Geometry.cc @@ -211,6 +211,36 @@ namespace usd fullName = ignition::common::findFile(uri.Str()); } + else if (uri.Scheme() == "model") + { + fullName = + ignition::common::findFile(_geometry.MeshShape()->Uri()); + + std::function addSubFolders = + [&](const std::string &_dir) + { + for (ignition::common::DirIter file(_dir); + file != ignition::common::DirIter(); ++file) + { + std::string current(*file); + if (ignition::common::isDirectory(current)) + { + auto systemPaths = ignition::common::systemPaths(); + systemPaths->AddFilePaths(current); + addSubFolders(current); + } + } + }; + auto fileExtensionIndex = fullName.rfind( + ignition::common::basename(fullName)); + if (fileExtensionIndex != std::string::npos) + { + std::string dirName = fullName; + dirName.erase(fileExtensionIndex, + ignition::common::basename(fullName).length() + 1); + addSubFolders(ignition::common::parentPath(dirName)); + } + } else { fullName =