From 13b6055098dc79671f73b396d6b47b9cbcfed671 Mon Sep 17 00:00:00 2001 From: Alessio Quaglino Date: Sun, 24 Nov 2024 08:38:41 -0800 Subject: [PATCH] Add material namespacing to sites. Fixes #2243. PiperOrigin-RevId: 699713625 Change-Id: I1b45e43f2a6ccfa64c46489c9426fcc2acdc94c3 --- src/user/user_objects.cc | 9 +++++++++ src/user/user_objects.h | 1 + test/user/user_api_test.cc | 10 +++++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/user/user_objects.cc b/src/user/user_objects.cc index 8796910d..fd3064f3 100644 --- a/src/user/user_objects.cc +++ b/src/user/user_objects.cc @@ -3102,6 +3102,15 @@ void mjCSite::CopyFromSpec() { +void mjCSite::NameSpace(const mjCModel* m) { + mjCBase::NameSpace(m); + if (!spec_material_.empty() && model != m) { + spec_material_ = m->prefix + spec_material_ + m->suffix; + } +} + + + // compiler void mjCSite::Compile(void) { CopyFromSpec(); diff --git a/src/user/user_objects.h b/src/user/user_objects.h index 5b031d6b..3238f1ff 100644 --- a/src/user/user_objects.h +++ b/src/user/user_objects.h @@ -615,6 +615,7 @@ class mjCSite : public mjCSite_, private mjsSite { void Compile(void); // compiler void CopyFromSpec(); // copy spec into attributes void PointToLocal(void); + void NameSpace(const mjCModel* m); }; diff --git a/test/user/user_api_test.cc b/test/user/user_api_test.cc index 9646923d..b50b703d 100644 --- a/test/user/user_api_test.cc +++ b/test/user/user_api_test.cc @@ -731,7 +731,7 @@ static constexpr char xml_child[] = R"( - + @@ -798,7 +798,7 @@ TEST_F(MujocoTest, AttachSame) { - + @@ -811,7 +811,7 @@ TEST_F(MujocoTest, AttachSame) { - + @@ -952,7 +952,7 @@ TEST_F(MujocoTest, AttachDifferent) { - + @@ -1087,7 +1087,7 @@ TEST_F(MujocoTest, AttachFrame) { - +