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
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;
}
......
......@@ -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;
......
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