From 8e408c91a2b72e27418b97fdb5dc8b7729176a75 Mon Sep 17 00:00:00 2001 From: Andre Meixner <andre.meixner@kit.edu> Date: Wed, 8 Mar 2023 10:00:09 +0100 Subject: [PATCH] Added option to only reload collision model when reloading visualization from xml --- VirtualRobot/SceneObject.cpp | 22 +++++++++++++--------- VirtualRobot/SceneObject.h | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/VirtualRobot/SceneObject.cpp b/VirtualRobot/SceneObject.cpp index 96925f44c..1466ed3e9 100644 --- a/VirtualRobot/SceneObject.cpp +++ b/VirtualRobot/SceneObject.cpp @@ -1464,7 +1464,7 @@ namespace VirtualRobot return scaling; } - bool SceneObject::reloadVisualizationFromXML(bool useVisAsColModelIfMissing) { + bool SceneObject::reloadVisualizationFromXML(bool useVisAsColModelIfMissing, bool loadColOnly) { bool reloaded = false; if (!collisionModelXML.empty()) { @@ -1484,7 +1484,8 @@ namespace VirtualRobot } reloaded = true; } - if (!visualizationModelXML.empty()) + if ((!loadColOnly || (!collisionModel && useVisAsColModelIfMissing)) + && !visualizationModelXML.empty()) { rapidxml::xml_document<> doc; std::vector<char> cstr(visualizationModelXML.size() + 1); // Create char buffer to store string copy @@ -1492,13 +1493,16 @@ namespace VirtualRobot doc.parse<0>(cstr.data()); bool useAsColModel; auto visualizationModel = BaseIO::processVisualizationTag(doc.first_node(), name, basePath, useAsColModel); - if (visualizationModel && scaling != 1.0f) + if (!loadColOnly) { - setVisualization(visualizationModel->clone(true, scaling)); - } - else - { - setVisualization(visualizationModel); + if (visualizationModel && scaling != 1.0f) + { + setVisualization(visualizationModel->clone(true, scaling)); + } + else + { + setVisualization(visualizationModel); + } } if (visualizationModel && collisionModel == nullptr && (useVisAsColModelIfMissing || useAsColModel)) { @@ -1507,7 +1511,7 @@ namespace VirtualRobot reloaded = true; } for (auto child : this->getChildren()) { - reloaded |= child->reloadVisualizationFromXML(useVisAsColModelIfMissing); + reloaded |= child->reloadVisualizationFromXML(useVisAsColModelIfMissing, loadColOnly); } return reloaded; } diff --git a/VirtualRobot/SceneObject.h b/VirtualRobot/SceneObject.h index 3fb7348e3..5572e1cae 100644 --- a/VirtualRobot/SceneObject.h +++ b/VirtualRobot/SceneObject.h @@ -420,7 +420,7 @@ namespace VirtualRobot void setScaling(float scaling); float getScaling(); - bool reloadVisualizationFromXML(bool useVisAsColModelIfMissing = true); + bool reloadVisualizationFromXML(bool useVisAsColModelIfMissing = true, bool loadColOnly = false); const std::string& getVisualizationModelXML() const; -- GitLab