Add mjs_getOriginSpec to retrieve the original spec of an element.

The new function mjs_getOriginSpec returns the mjSpec that was used to define a given mjsElement. Unlike mjs_getSpec, this value remains constant even after the element has been attached to a different model.

PiperOrigin-RevId: 911930951
Change-Id: Ia9cd79d9dfabc513d6121eadcffc5d41075224c9
This commit is contained in:
Sam Haves
2026-05-07 06:32:54 -07:00
committed by Copybara-Service
parent 8b06fe4c16
commit ec50260e26
9 changed files with 90 additions and 0 deletions
+9
View File
@@ -9793,6 +9793,14 @@ std::string mjs_getName_wrapper(MjsElement& element) {
return *mjs_getName(element.get());
}
std::optional<MjSpec> mjs_getOriginSpec_wrapper(const MjsElement& element) {
mjSpec* result = mjs_getOriginSpec(element.get());
if (result == nullptr) {
return std::nullopt;
}
return MjSpec(result);
}
std::optional<MjsBody> mjs_getParent_wrapper(const MjsElement& element) {
mjsBody* result = mjs_getParent(element.get());
if (result == nullptr) {
@@ -13343,6 +13351,7 @@ EMSCRIPTEN_BINDINGS(mujoco_bindings) {
function("mjs_getFrame", &mjs_getFrame_wrapper);
function("mjs_getId", &mjs_getId_wrapper);
function("mjs_getName", &mjs_getName_wrapper);
function("mjs_getOriginSpec", &mjs_getOriginSpec_wrapper);
function("mjs_getParent", &mjs_getParent_wrapper);
function("mjs_getSpec", &mjs_getSpec_wrapper);
function("mjs_getSpecDefault", &mjs_getSpecDefault_wrapper);