Skip to content
Snippets Groups Projects
Commit 7657f412 authored by Andre Meixner's avatar Andre Meixner :camera:
Browse files

Merge branch 'feature/reload-collision-model-only' into 'master'

Added option to only reload collision model when reloading visualization from xml

See merge request sw/simox/simox!131
parents a07b7446 8e408c91
No related branches found
No related tags found
No related merge requests found
...@@ -1464,7 +1464,7 @@ namespace VirtualRobot ...@@ -1464,7 +1464,7 @@ namespace VirtualRobot
return scaling; return scaling;
} }
bool SceneObject::reloadVisualizationFromXML(bool useVisAsColModelIfMissing) { bool SceneObject::reloadVisualizationFromXML(bool useVisAsColModelIfMissing, bool loadColOnly) {
bool reloaded = false; bool reloaded = false;
if (!collisionModelXML.empty()) if (!collisionModelXML.empty())
{ {
...@@ -1484,7 +1484,8 @@ namespace VirtualRobot ...@@ -1484,7 +1484,8 @@ namespace VirtualRobot
} }
reloaded = true; reloaded = true;
} }
if (!visualizationModelXML.empty()) if ((!loadColOnly || (!collisionModel && useVisAsColModelIfMissing))
&& !visualizationModelXML.empty())
{ {
rapidxml::xml_document<> doc; rapidxml::xml_document<> doc;
std::vector<char> cstr(visualizationModelXML.size() + 1); // Create char buffer to store string copy std::vector<char> cstr(visualizationModelXML.size() + 1); // Create char buffer to store string copy
...@@ -1492,13 +1493,16 @@ namespace VirtualRobot ...@@ -1492,13 +1493,16 @@ namespace VirtualRobot
doc.parse<0>(cstr.data()); doc.parse<0>(cstr.data());
bool useAsColModel; bool useAsColModel;
auto visualizationModel = BaseIO::processVisualizationTag(doc.first_node(), name, basePath, useAsColModel); auto visualizationModel = BaseIO::processVisualizationTag(doc.first_node(), name, basePath, useAsColModel);
if (visualizationModel && scaling != 1.0f) if (!loadColOnly)
{ {
setVisualization(visualizationModel->clone(true, scaling)); if (visualizationModel && scaling != 1.0f)
} {
else setVisualization(visualizationModel->clone(true, scaling));
{ }
setVisualization(visualizationModel); else
{
setVisualization(visualizationModel);
}
} }
if (visualizationModel && collisionModel == nullptr && (useVisAsColModelIfMissing || useAsColModel)) if (visualizationModel && collisionModel == nullptr && (useVisAsColModelIfMissing || useAsColModel))
{ {
...@@ -1507,7 +1511,7 @@ namespace VirtualRobot ...@@ -1507,7 +1511,7 @@ namespace VirtualRobot
reloaded = true; reloaded = true;
} }
for (auto child : this->getChildren()) { for (auto child : this->getChildren()) {
reloaded |= child->reloadVisualizationFromXML(useVisAsColModelIfMissing); reloaded |= child->reloadVisualizationFromXML(useVisAsColModelIfMissing, loadColOnly);
} }
return reloaded; return reloaded;
} }
......
...@@ -420,7 +420,7 @@ namespace VirtualRobot ...@@ -420,7 +420,7 @@ namespace VirtualRobot
void setScaling(float scaling); void setScaling(float scaling);
float getScaling(); float getScaling();
bool reloadVisualizationFromXML(bool useVisAsColModelIfMissing = true); bool reloadVisualizationFromXML(bool useVisAsColModelIfMissing = true, bool loadColOnly = false);
const std::string& getVisualizationModelXML() const; const std::string& getVisualizationModelXML() const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment