From ac8962d7ce480ff1431b407860058d0e9a0adeb7 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@student.kit.edu>
Date: Wed, 26 Jun 2019 13:28:20 +0200
Subject: [PATCH] Add reset()

---
 VirtualRobot/XML/mujoco/RobotMjcf.cpp | 17 ++++++++++++++++-
 VirtualRobot/XML/mujoco/RobotMjcf.h   |  3 +++
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/VirtualRobot/XML/mujoco/RobotMjcf.cpp b/VirtualRobot/XML/mujoco/RobotMjcf.cpp
index 5210f82be..42131e5e7 100644
--- a/VirtualRobot/XML/mujoco/RobotMjcf.cpp
+++ b/VirtualRobot/XML/mujoco/RobotMjcf.cpp
@@ -54,10 +54,25 @@ ActuatorType toActuatorType(const std::string& string)
 
 RobotMjcf::RobotMjcf(RobotPtr robot) : robot(robot)
 {
+    reset();
+}
+
+void RobotMjcf::reset()
+{
+    document.reset(new mjcf::Document());
+    robotBody = mjcf::Body();
+    nodeBodies.clear();
+    
+    // Set model name.
     document->setModelName(robot->getName());
     
+    const std::string className = robot->getName();
+    
+    // Add robot defaults class.
+    document->default_().addClass(className);
+    
     // Add robot body.
-    robotBody = document->worldbody().addBody(robot->getName(), robot->getName());
+    robotBody = document->worldbody().addBody(robot->getName(), className);
     nodeBodies[robot->getName()] = robotBody;
 }
 
diff --git a/VirtualRobot/XML/mujoco/RobotMjcf.h b/VirtualRobot/XML/mujoco/RobotMjcf.h
index 1d0fd6729..02d9b2c60 100644
--- a/VirtualRobot/XML/mujoco/RobotMjcf.h
+++ b/VirtualRobot/XML/mujoco/RobotMjcf.h
@@ -31,6 +31,9 @@ namespace VirtualRobot::mujoco
         RobotMjcf(RobotPtr robot);
         
         
+        /// Reset the document and related data.
+        void reset();
+        
         /// Get the document.
         mjcf::Document& getDocument();
         const mjcf::Document& getDocument() const;
-- 
GitLab