diff --git a/VirtualRobot/CMakeLists.txt b/VirtualRobot/CMakeLists.txt index ee93d870b78ce85c9aeafbea4de12d1ea3a8f2e8..01a073a4b51957fceae1eb381f1b4e0e71ff8d73 100644 --- a/VirtualRobot/CMakeLists.txt +++ b/VirtualRobot/CMakeLists.txt @@ -309,8 +309,6 @@ SET(SOURCES MJCF/Document.cpp MJCF/elements.cpp - MJCF/elements/Attribute.cpp - MJCF/elements/Element.cpp MJCF/elements/actuator.cpp MJCF/elements/asset.cpp MJCF/elements/body.cpp @@ -318,15 +316,17 @@ SET(SOURCES MJCF/elements/custom.cpp MJCF/elements/default.cpp MJCF/elements/equality.cpp - MJCF/elements/exceptions.cpp MJCF/elements/keyframe.cpp - MJCF/elements/mjcf_utils.cpp MJCF/elements/option.cpp MJCF/elements/sensor.cpp MJCF/elements/size.cpp MJCF/elements/statistic.cpp MJCF/elements/tendon.cpp MJCF/elements/visual.cpp + MJCF/elements/core/Attribute.cpp + MJCF/elements/core/Element.cpp + MJCF/elements/core/exceptions.cpp + MJCF/elements/core/mjcf_utils.cpp Nodes/CameraSensor.cpp Nodes/CameraSensorFactory.cpp @@ -513,8 +513,6 @@ SET(INCLUDES MJCF/Document.h MJCF/elements.h - MJCF/elements/Attribute.h - MJCF/elements/Element.h MJCF/elements/actuator.h MJCF/elements/asset.h MJCF/elements/body.h @@ -522,9 +520,7 @@ SET(INCLUDES MJCF/elements/custom.h MJCF/elements/default.h MJCF/elements/equality.h - MJCF/elements/exceptions.h MJCF/elements/keyframe.h - MJCF/elements/mjcf_utils.h MJCF/elements/option.h MJCF/elements/sensor.h MJCF/elements/size.h @@ -532,6 +528,10 @@ SET(INCLUDES MJCF/elements/tendon.h MJCF/elements/visual.h MJCF/elements/has_member.hpp + MJCF/elements/core/Attribute.h + MJCF/elements/core/Element.h + MJCF/elements/core/exceptions.h + MJCF/elements/core/mjcf_utils.h Nodes/CameraSensor.h Nodes/CameraSensorFactory.h diff --git a/VirtualRobot/MJCF/elements/asset.h b/VirtualRobot/MJCF/elements/asset.h index bd9d25bc2f3f5a043fd3685042a184b2f1d29050..4887a3fbc636f71f08fc8298a5835adda088a30d 100644 --- a/VirtualRobot/MJCF/elements/asset.h +++ b/VirtualRobot/MJCF/elements/asset.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf diff --git a/VirtualRobot/MJCF/elements/body.h b/VirtualRobot/MJCF/elements/body.h index 15a781e7b6b936780ce68b5e76b95c229eb8830b..9385c1d72aa7064276c42b3d54ba056ea94d6019 100644 --- a/VirtualRobot/MJCF/elements/body.h +++ b/VirtualRobot/MJCF/elements/body.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf diff --git a/VirtualRobot/MJCF/elements/compiler.h b/VirtualRobot/MJCF/elements/compiler.h index 05492996327db790ce4d0363af5933ceb196fa09..639606a6bf8890d8f7855e536ddf61bdebb66dff 100644 --- a/VirtualRobot/MJCF/elements/compiler.h +++ b/VirtualRobot/MJCF/elements/compiler.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/contact.h b/VirtualRobot/MJCF/elements/contact.h index f5bbe7bfb313d595b38b0a25a44512b10a62115f..7287f5ea7937346f3226607ca3549ccba55b4e93 100644 --- a/VirtualRobot/MJCF/elements/contact.h +++ b/VirtualRobot/MJCF/elements/contact.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" #include "body.h" diff --git a/VirtualRobot/MJCF/elements/Attribute.cpp b/VirtualRobot/MJCF/elements/core/Attribute.cpp similarity index 100% rename from VirtualRobot/MJCF/elements/Attribute.cpp rename to VirtualRobot/MJCF/elements/core/Attribute.cpp diff --git a/VirtualRobot/MJCF/elements/Attribute.h b/VirtualRobot/MJCF/elements/core/Attribute.h similarity index 100% rename from VirtualRobot/MJCF/elements/Attribute.h rename to VirtualRobot/MJCF/elements/core/Attribute.h diff --git a/VirtualRobot/MJCF/elements/Element.cpp b/VirtualRobot/MJCF/elements/core/Element.cpp similarity index 100% rename from VirtualRobot/MJCF/elements/Element.cpp rename to VirtualRobot/MJCF/elements/core/Element.cpp diff --git a/VirtualRobot/MJCF/elements/Element.h b/VirtualRobot/MJCF/elements/core/Element.h similarity index 98% rename from VirtualRobot/MJCF/elements/Element.h rename to VirtualRobot/MJCF/elements/core/Element.h index 034f71ce1968c51187a60e31fb1acab4ddfe97e2..44b5c7a35cd8314099be2f221b4478bfbbccff7f 100644 --- a/VirtualRobot/MJCF/elements/Element.h +++ b/VirtualRobot/MJCF/elements/core/Element.h @@ -13,7 +13,6 @@ namespace mjcf // Forward declaration. class Document; - template <class _Derived> class Element { @@ -148,6 +147,9 @@ namespace mjcf Document& document() { return *_document; } const Document& document() const { return *_document; } + tinyxml2::XMLElement* element() { return elem; } + const tinyxml2::XMLElement* element() const { return elem; } + private: @@ -364,7 +366,7 @@ namespace mjcf template <class D> void Element<D>::assertElemValueEqualsTag() { - if (elem) + if (elem && !Derived::Tag.empty()) { VR_ASSERT_MESSAGE(elem->Value() == Derived::tag, "Element tag '" + std::string(elem->Value()) + "' must be '" + Derived::tag + "'"); diff --git a/VirtualRobot/MJCF/elements/exceptions.cpp b/VirtualRobot/MJCF/elements/core/exceptions.cpp similarity index 100% rename from VirtualRobot/MJCF/elements/exceptions.cpp rename to VirtualRobot/MJCF/elements/core/exceptions.cpp diff --git a/VirtualRobot/MJCF/elements/exceptions.h b/VirtualRobot/MJCF/elements/core/exceptions.h similarity index 100% rename from VirtualRobot/MJCF/elements/exceptions.h rename to VirtualRobot/MJCF/elements/core/exceptions.h diff --git a/VirtualRobot/MJCF/elements/mjcf_utils.cpp b/VirtualRobot/MJCF/elements/core/mjcf_utils.cpp similarity index 100% rename from VirtualRobot/MJCF/elements/mjcf_utils.cpp rename to VirtualRobot/MJCF/elements/core/mjcf_utils.cpp diff --git a/VirtualRobot/MJCF/elements/mjcf_utils.h b/VirtualRobot/MJCF/elements/core/mjcf_utils.h similarity index 100% rename from VirtualRobot/MJCF/elements/mjcf_utils.h rename to VirtualRobot/MJCF/elements/core/mjcf_utils.h diff --git a/VirtualRobot/MJCF/elements/custom.h b/VirtualRobot/MJCF/elements/custom.h index 56d302f8950535d1bf9fa8796f7c1b35c5592a34..2a75c50d53211f0dec946c4f45d4d8639fb595dd 100644 --- a/VirtualRobot/MJCF/elements/custom.h +++ b/VirtualRobot/MJCF/elements/custom.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/default.h b/VirtualRobot/MJCF/elements/default.h index 826c170171163eadd0cc4dc44141f8083013508f..1eacf2fb8eead5635e44ff7654ad22f1cc91fbae 100644 --- a/VirtualRobot/MJCF/elements/default.h +++ b/VirtualRobot/MJCF/elements/default.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf diff --git a/VirtualRobot/MJCF/elements/equality.h b/VirtualRobot/MJCF/elements/equality.h index 1550a50cf5124dabc119d7fd23169f069d63c697..c7d33602a2cb8ba3b19c66bf3bfdc43991e929bd 100644 --- a/VirtualRobot/MJCF/elements/equality.h +++ b/VirtualRobot/MJCF/elements/equality.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf diff --git a/VirtualRobot/MJCF/elements/keyframe.h b/VirtualRobot/MJCF/elements/keyframe.h index c4ff60b1319e978ae851eb38ec65f541f1ef5638..0867ff7014e3500e9af436355ec302e732e5c8f1 100644 --- a/VirtualRobot/MJCF/elements/keyframe.h +++ b/VirtualRobot/MJCF/elements/keyframe.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/option.h b/VirtualRobot/MJCF/elements/option.h index b673dfcdd76828b46f238970899f9b3364fa2fec..1dce69eeee39881aa7e97091b100703d38f52c8f 100644 --- a/VirtualRobot/MJCF/elements/option.h +++ b/VirtualRobot/MJCF/elements/option.h @@ -1,7 +1,7 @@ #pragma once -#include "Attribute.h" -#include "mjcf_utils.h" +#include "core/Attribute.h" +#include "core/mjcf_utils.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/sensor.h b/VirtualRobot/MJCF/elements/sensor.h index f9122689cc932cdb6e4df2b20277c03d4df21690..3a775270bbee1049a6127742cd4949f76a263cdf 100644 --- a/VirtualRobot/MJCF/elements/sensor.h +++ b/VirtualRobot/MJCF/elements/sensor.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/size.h b/VirtualRobot/MJCF/elements/size.h index 1dffaa63e61a527dd43c519ca1a1e6335c989f89..1b70617f605b3f0ed34b48d4189549c9ffb85959 100644 --- a/VirtualRobot/MJCF/elements/size.h +++ b/VirtualRobot/MJCF/elements/size.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/statistic.h b/VirtualRobot/MJCF/elements/statistic.h index 543b6d1135ca45e9db65a9bb804146711e01b4cd..85976bf9d6b979ee134c21f87c7233192b705268 100644 --- a/VirtualRobot/MJCF/elements/statistic.h +++ b/VirtualRobot/MJCF/elements/statistic.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/tendon.h b/VirtualRobot/MJCF/elements/tendon.h index 671cfa636629d7bd02e380738bd31d6520e76595..f923b72028d41d6868d4388af195fa388677c493 100644 --- a/VirtualRobot/MJCF/elements/tendon.h +++ b/VirtualRobot/MJCF/elements/tendon.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf { diff --git a/VirtualRobot/MJCF/elements/visual.h b/VirtualRobot/MJCF/elements/visual.h index d52ffe2a64c2a2129363f720ee8c3a84c0a8197a..ed4e2537a5d0ddfa740fd15808aa56f050cbdc54 100644 --- a/VirtualRobot/MJCF/elements/visual.h +++ b/VirtualRobot/MJCF/elements/visual.h @@ -1,6 +1,6 @@ #pragma once -#include "Attribute.h" +#include "core/Attribute.h" namespace mjcf {