Add mjs_getParent to retrieve the parent body of an object.

PiperOrigin-RevId: 715794859
Change-Id: Ib9792787cdb966f579938dde3f94ebabca8ef1fc
This commit is contained in:
Alessio Quaglino
2025-01-15 07:41:45 -08:00
committed by Copybara-Service
parent 10c7207cea
commit 05d4c3d670
10 changed files with 116 additions and 0 deletions
+42
View File
@@ -680,6 +680,12 @@ PYBIND11_MODULE(_specs, m) {
return mjs_getSpec(self.element);
},
py::return_value_policy::reference_internal);
mjsBody.def_property_readonly(
"parent",
[](raw::MjsBody& self) -> raw::MjsBody* {
return mjs_getParent(self.element);
},
py::return_value_policy::reference_internal);
mjsBody.def(
"attach_frame",
[](raw::MjsBody& self, raw::MjsFrame& frame,
@@ -713,6 +719,12 @@ PYBIND11_MODULE(_specs, m) {
mjsFrame.def("set_frame", [](raw::MjsFrame& self, raw::MjsFrame& frame) {
mjs_setFrame(self.element, &frame);
});
mjsFrame.def_property_readonly(
"parent",
[](raw::MjsFrame& self) -> raw::MjsBody* {
return mjs_getParent(self.element);
},
py::return_value_policy::reference_internal);
mjsFrame.def(
"attach_body",
[](raw::MjsFrame& self, raw::MjsBody& body,
@@ -760,6 +772,12 @@ PYBIND11_MODULE(_specs, m) {
mjsGeom.def("set_default", [](raw::MjsGeom& self, raw::MjsDefault& def) {
mjs_setDefault(self.element, &def);
});
mjsGeom.def_property_readonly(
"parent",
[](raw::MjsGeom& self) -> raw::MjsBody* {
return mjs_getParent(self.element);
},
py::return_value_policy::reference_internal);
mjsGeom.def(
"default",
[](raw::MjsGeom& self) -> raw::MjsDefault* {
@@ -775,6 +793,12 @@ PYBIND11_MODULE(_specs, m) {
mjsJoint.def("set_default", [](raw::MjsJoint& self, raw::MjsDefault& def) {
mjs_setDefault(self.element, &def);
});
mjsJoint.def_property_readonly(
"parent",
[](raw::MjsJoint& self) -> raw::MjsBody* {
return mjs_getParent(self.element);
},
py::return_value_policy::reference_internal);
mjsJoint.def(
"default",
[](raw::MjsJoint& self) -> raw::MjsDefault* {
@@ -790,6 +814,12 @@ PYBIND11_MODULE(_specs, m) {
mjsSite.def("set_default", [](raw::MjsSite& self, raw::MjsDefault& def) {
mjs_setDefault(self.element, &def);
});
mjsSite.def_property_readonly(
"parent",
[](raw::MjsSite& self) -> raw::MjsBody* {
return mjs_getParent(self.element);
},
py::return_value_policy::reference_internal);
mjsSite.def(
"default",
[](raw::MjsSite& self) -> raw::MjsDefault* {
@@ -845,6 +875,12 @@ PYBIND11_MODULE(_specs, m) {
mjsCamera.def("set_default", [](raw::MjsCamera& self, raw::MjsDefault& def) {
mjs_setDefault(self.element, &def);
});
mjsCamera.def_property_readonly(
"parent",
[](raw::MjsCamera& self) -> raw::MjsBody* {
return mjs_getParent(self.element);
},
py::return_value_policy::reference_internal);
mjsCamera.def(
"default",
[](raw::MjsCamera& self) -> raw::MjsDefault* {
@@ -860,6 +896,12 @@ PYBIND11_MODULE(_specs, m) {
mjsLight.def("set_default", [](raw::MjsLight& self, raw::MjsDefault& def) {
mjs_setDefault(self.element, &def);
});
mjsLight.def_property_readonly(
"parent",
[](raw::MjsLight& self) -> raw::MjsBody* {
return mjs_getParent(self.element);
},
py::return_value_policy::reference_internal);
mjsLight.def(
"default",
[](raw::MjsLight& self) -> raw::MjsDefault* {