Add missing id attributes in Python bindings of mjsElements.
PiperOrigin-RevId: 649435098 Change-Id: I16383958c25cb8fdc16a107d5abef8626a675632
This commit is contained in:
committed by
Copybara-Service
parent
57e6760ec9
commit
47d25bc4ac
+219
-234
@@ -18,7 +18,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string_view> // IWYU pragma: keep
|
#include <string_view> // IWYU pragma: keep
|
||||||
#include <vector> // IWYU pragma: keep
|
#include <vector> // IWYU pragma: keep
|
||||||
|
|
||||||
#include <Eigen/Core>
|
#include <Eigen/Core>
|
||||||
#include <Eigen/Eigen>
|
#include <Eigen/Eigen>
|
||||||
@@ -298,202 +298,201 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
mjs_detachBody(self.ptr, &body);
|
mjs_detachBody(self.ptr, &body);
|
||||||
});
|
});
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"actuators",
|
"actuators",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_ACTUATOR);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_ACTUATOR);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asActuator(el));
|
list.append(mjs_asActuator(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"sensors",
|
"sensors",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_SENSOR);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_SENSOR);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asSensor(el));
|
list.append(mjs_asSensor(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"flexes",
|
"flexes",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_FLEX);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_FLEX);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asFlex(el));
|
list.append(mjs_asFlex(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"pairs",
|
"pairs",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_PAIR);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_PAIR);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asPair(el));
|
list.append(mjs_asPair(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"equality",
|
"equality",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_EQUALITY);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_EQUALITY);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asEquality(el));
|
list.append(mjs_asEquality(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"excludes",
|
"excludes",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_EXCLUDE);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_EXCLUDE);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asExclude(el));
|
list.append(mjs_asExclude(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"tendons",
|
"tendons",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TENDON);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TENDON);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asTendon(el));
|
list.append(mjs_asTendon(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"numeric",
|
"numeric",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_NUMERIC);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_NUMERIC);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asNumeric(el));
|
list.append(mjs_asNumeric(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"text",
|
"text",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TEXT);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TEXT);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asText(el));
|
list.append(mjs_asText(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"tuple",
|
"tuple",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TUPLE);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TUPLE);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asTuple(el));
|
list.append(mjs_asTuple(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"key",
|
"key",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_KEY);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_KEY);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asKey(el));
|
list.append(mjs_asKey(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"mesh",
|
"mesh",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_MESH);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_MESH);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asMesh(el));
|
list.append(mjs_asMesh(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"hfield",
|
"hfield",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_HFIELD);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_HFIELD);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asHField(el));
|
list.append(mjs_asHField(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"skin",
|
"skin",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_SKIN);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_SKIN);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asSkin(el));
|
list.append(mjs_asSkin(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"texture",
|
"texture",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TEXTURE);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_TEXTURE);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asTexture(el));
|
list.append(mjs_asTexture(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
mjSpec.def_property_readonly(
|
mjSpec.def_property_readonly(
|
||||||
"material",
|
"material",
|
||||||
[](MjSpec& self) -> py::list {
|
[](MjSpec& self) -> py::list {
|
||||||
py::list list;
|
py::list list;
|
||||||
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_MATERIAL);
|
raw::MjsElement* el = mjs_firstElement(self.ptr, mjOBJ_MATERIAL);
|
||||||
while (el) {
|
while (el) {
|
||||||
list.append(mjs_asMaterial(el));
|
list.append(mjs_asMaterial(el));
|
||||||
el = mjs_nextElement(self.ptr, el);
|
el = mjs_nextElement(self.ptr, el);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
},
|
},
|
||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
// ============================= MJSBODY =====================================
|
// ============================= MJSBODY =====================================
|
||||||
mjsBody.def_property_readonly(
|
mjsBody.def_property_readonly(
|
||||||
"id", [](raw::MjsBody& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsBody& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsBody.def("delete", [](raw::MjsBody& self) { mjs_delete(self.element); });
|
mjsBody.def("delete", [](raw::MjsBody& self) { mjs_delete(self.element); });
|
||||||
mjsBody.def(
|
mjsBody.def(
|
||||||
"add_body",
|
"add_body",
|
||||||
@@ -666,8 +665,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
|
|
||||||
// ============================= MJSFRAME ====================================
|
// ============================= MJSFRAME ====================================
|
||||||
mjsFrame.def_property_readonly(
|
mjsFrame.def_property_readonly(
|
||||||
"id", [](raw::MjsFrame& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsFrame& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsFrame.def("delete", [](raw::MjsFrame& self) { mjs_delete(self.element); });
|
mjsFrame.def("delete", [](raw::MjsFrame& self) { mjs_delete(self.element); });
|
||||||
mjsFrame.def("set_frame", [](raw::MjsFrame& self, raw::MjsFrame& frame) {
|
mjsFrame.def("set_frame", [](raw::MjsFrame& self, raw::MjsFrame& frame) {
|
||||||
mjs_setFrame(self.element, &frame);
|
mjs_setFrame(self.element, &frame);
|
||||||
@@ -679,8 +677,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
|
|
||||||
// ============================= MJSGEOM =====================================
|
// ============================= MJSGEOM =====================================
|
||||||
mjsGeom.def_property_readonly(
|
mjsGeom.def_property_readonly(
|
||||||
"id", [](raw::MjsGeom& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsGeom& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsGeom.def("delete", [](raw::MjsGeom& self) { mjs_delete(self.element); });
|
mjsGeom.def("delete", [](raw::MjsGeom& self) { mjs_delete(self.element); });
|
||||||
mjsGeom.def("set_frame", [](raw::MjsGeom& self, raw::MjsFrame& frame) {
|
mjsGeom.def("set_frame", [](raw::MjsGeom& self, raw::MjsFrame& frame) {
|
||||||
mjs_setFrame(self.element, &frame);
|
mjs_setFrame(self.element, &frame);
|
||||||
@@ -697,8 +694,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
|
|
||||||
// ============================= MJSJOINT ====================================
|
// ============================= MJSJOINT ====================================
|
||||||
mjsJoint.def_property_readonly(
|
mjsJoint.def_property_readonly(
|
||||||
"id", [](raw::MjsJoint& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsJoint& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsJoint.def("delete", [](raw::MjsJoint& self) { mjs_delete(self.element); });
|
mjsJoint.def("delete", [](raw::MjsJoint& self) { mjs_delete(self.element); });
|
||||||
mjsJoint.def("set_frame", [](raw::MjsJoint& self, raw::MjsFrame& frame) {
|
mjsJoint.def("set_frame", [](raw::MjsJoint& self, raw::MjsFrame& frame) {
|
||||||
mjs_setFrame(self.element, &frame);
|
mjs_setFrame(self.element, &frame);
|
||||||
@@ -715,8 +711,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
|
|
||||||
// ============================= MJSSITE =====================================
|
// ============================= MJSSITE =====================================
|
||||||
mjsSite.def_property_readonly(
|
mjsSite.def_property_readonly(
|
||||||
"id", [](raw::MjsSite& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsSite& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsSite.def("delete", [](raw::MjsSite& self) { mjs_delete(self.element); });
|
mjsSite.def("delete", [](raw::MjsSite& self) { mjs_delete(self.element); });
|
||||||
mjsSite.def("set_frame", [](raw::MjsSite& self, raw::MjsFrame& frame) {
|
mjsSite.def("set_frame", [](raw::MjsSite& self, raw::MjsFrame& frame) {
|
||||||
mjs_setFrame(self.element, &frame);
|
mjs_setFrame(self.element, &frame);
|
||||||
@@ -732,9 +727,9 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
// ============================= MJSCAMERA ===================================
|
// ============================= MJSCAMERA ===================================
|
||||||
mjsCamera.def_property_readonly(
|
mjsCamera.def_property_readonly("id", [](raw::MjsCamera& self) -> int {
|
||||||
"id", [](raw::MjsCamera& self) -> int { return mjs_getId(self.element); },
|
return mjs_getId(self.element);
|
||||||
py::return_value_policy::reference_internal);
|
});
|
||||||
mjsCamera.def("delete",
|
mjsCamera.def("delete",
|
||||||
[](raw::MjsCamera& self) { mjs_delete(self.element); });
|
[](raw::MjsCamera& self) { mjs_delete(self.element); });
|
||||||
mjsCamera.def("set_frame", [](raw::MjsCamera& self, raw::MjsFrame& frame) {
|
mjsCamera.def("set_frame", [](raw::MjsCamera& self, raw::MjsFrame& frame) {
|
||||||
@@ -752,8 +747,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
|
|
||||||
// ============================= MJSLIGHT ====================================
|
// ============================= MJSLIGHT ====================================
|
||||||
mjsLight.def_property_readonly(
|
mjsLight.def_property_readonly(
|
||||||
"id", [](raw::MjsLight& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsLight& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsLight.def("delete", [](raw::MjsLight& self) { mjs_delete(self.element); });
|
mjsLight.def("delete", [](raw::MjsLight& self) { mjs_delete(self.element); });
|
||||||
mjsLight.def("set_frame", [](raw::MjsLight& self, raw::MjsFrame& frame) {
|
mjsLight.def("set_frame", [](raw::MjsLight& self, raw::MjsFrame& frame) {
|
||||||
mjs_setFrame(self.element, &frame);
|
mjs_setFrame(self.element, &frame);
|
||||||
@@ -769,10 +763,9 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
// ============================= MJSMATERIAL =================================
|
// ============================= MJSMATERIAL =================================
|
||||||
mjsMaterial.def_property_readonly(
|
mjsMaterial.def_property_readonly("id", [](raw::MjsMaterial& self) -> int {
|
||||||
"id",
|
return mjs_getId(self.element);
|
||||||
[](raw::MjsMaterial& self) -> int { return mjs_getId(self.element); },
|
});
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsMaterial.def("delete",
|
mjsMaterial.def("delete",
|
||||||
[](raw::MjsMaterial& self) { mjs_delete(self.element); });
|
[](raw::MjsMaterial& self) { mjs_delete(self.element); });
|
||||||
mjsMaterial.def("set_default",
|
mjsMaterial.def("set_default",
|
||||||
@@ -788,8 +781,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
|
|
||||||
// ============================= MJSMESH =====================================
|
// ============================= MJSMESH =====================================
|
||||||
mjsMesh.def_property_readonly(
|
mjsMesh.def_property_readonly(
|
||||||
"id", [](raw::MjsMesh& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsMesh& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsMesh.def("delete", [](raw::MjsMesh& self) { mjs_delete(self.element); });
|
mjsMesh.def("delete", [](raw::MjsMesh& self) { mjs_delete(self.element); });
|
||||||
mjsMesh.def("set_default", [](raw::MjsMesh& self, raw::MjsDefault& def) {
|
mjsMesh.def("set_default", [](raw::MjsMesh& self, raw::MjsDefault& def) {
|
||||||
mjs_setDefault(self.element, &def);
|
mjs_setDefault(self.element, &def);
|
||||||
@@ -803,8 +795,7 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
|
|
||||||
// ============================= MJSPAIR =====================================
|
// ============================= MJSPAIR =====================================
|
||||||
mjsPair.def_property_readonly(
|
mjsPair.def_property_readonly(
|
||||||
"id", [](raw::MjsPair& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsPair& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsPair.def("delete", [](raw::MjsPair& self) { mjs_delete(self.element); });
|
mjsPair.def("delete", [](raw::MjsPair& self) { mjs_delete(self.element); });
|
||||||
mjsPair.def("set_default", [](raw::MjsPair& self, raw::MjsDefault& def) {
|
mjsPair.def("set_default", [](raw::MjsPair& self, raw::MjsDefault& def) {
|
||||||
mjs_setDefault(self.element, &def);
|
mjs_setDefault(self.element, &def);
|
||||||
@@ -817,10 +808,9 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
// ============================= MJSEQUAL ====================================
|
// ============================= MJSEQUAL ====================================
|
||||||
mjsEquality.def_property_readonly(
|
mjsEquality.def_property_readonly("id", [](raw::MjsEquality& self) -> int {
|
||||||
"id",
|
return mjs_getId(self.element);
|
||||||
[](raw::MjsEquality& self) -> int { return mjs_getId(self.element); },
|
});
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsEquality.def("delete",
|
mjsEquality.def("delete",
|
||||||
[](raw::MjsEquality& self) { mjs_delete(self.element); });
|
[](raw::MjsEquality& self) { mjs_delete(self.element); });
|
||||||
mjsEquality.def("set_default",
|
mjsEquality.def("set_default",
|
||||||
@@ -835,10 +825,9 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
// ============================= MJSACTUATOR =================================
|
// ============================= MJSACTUATOR =================================
|
||||||
mjsActuator.def_property_readonly(
|
mjsActuator.def_property_readonly("id", [](raw::MjsActuator& self) -> int {
|
||||||
"id",
|
return mjs_getId(self.element);
|
||||||
[](raw::MjsActuator& self) -> int { return mjs_getId(self.element); },
|
});
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsActuator.def("delete",
|
mjsActuator.def("delete",
|
||||||
[](raw::MjsActuator& self) { mjs_delete(self.element); });
|
[](raw::MjsActuator& self) { mjs_delete(self.element); });
|
||||||
mjsActuator.def("set_default",
|
mjsActuator.def("set_default",
|
||||||
@@ -853,9 +842,9 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
// ============================= MJSTENDON ===================================
|
// ============================= MJSTENDON ===================================
|
||||||
mjsTendon.def_property_readonly(
|
mjsTendon.def_property_readonly("id", [](raw::MjsTendon& self) -> int {
|
||||||
"id", [](raw::MjsTendon& self) -> int { return mjs_getId(self.element); },
|
return mjs_getId(self.element);
|
||||||
py::return_value_policy::reference_internal);
|
});
|
||||||
mjsTendon.def("delete",
|
mjsTendon.def("delete",
|
||||||
[](raw::MjsTendon& self) { mjs_delete(self.element); });
|
[](raw::MjsTendon& self) { mjs_delete(self.element); });
|
||||||
mjsTendon.def("set_default", [](raw::MjsTendon& self, raw::MjsDefault& def) {
|
mjsTendon.def("set_default", [](raw::MjsTendon& self, raw::MjsDefault& def) {
|
||||||
@@ -893,22 +882,21 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
py::return_value_policy::reference_internal);
|
py::return_value_policy::reference_internal);
|
||||||
|
|
||||||
// ============================= MJSSENSOR ===================================
|
// ============================= MJSSENSOR ===================================
|
||||||
mjsSensor.def_property_readonly(
|
mjsSensor.def_property_readonly("id", [](raw::MjsSensor& self) -> int {
|
||||||
"id", [](raw::MjsSensor& self) -> int { return mjs_getId(self.element); },
|
return mjs_getId(self.element);
|
||||||
py::return_value_policy::reference_internal);
|
});
|
||||||
mjsSensor.def("delete",
|
mjsSensor.def("delete",
|
||||||
[](raw::MjsSensor& self) { mjs_delete(self.element); });
|
[](raw::MjsSensor& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSFLEX =====================================
|
// ============================= MJSFLEX =====================================
|
||||||
mjsFlex.def_property_readonly(
|
mjsFlex.def_property_readonly(
|
||||||
"id", [](raw::MjsFlex& self) -> int { return mjs_getId(self.element); },
|
"id", [](raw::MjsFlex& self) -> int { return mjs_getId(self.element); });
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsFlex.def("delete", [](raw::MjsFlex& self) { mjs_delete(self.element); });
|
mjsFlex.def("delete", [](raw::MjsFlex& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSHFIELD ===================================
|
// ============================= MJSHFIELD ===================================
|
||||||
mjsHField.def_property_readonly(
|
mjsHField.def_property_readonly("id", [](raw::MjsHField& self) -> int {
|
||||||
"id", [](raw::MjsHField& self) -> int { return mjs_getId(self.element); },
|
return mjs_getId(self.element);
|
||||||
py::return_value_policy::reference_internal);
|
});
|
||||||
mjsHField.def("delete",
|
mjsHField.def("delete",
|
||||||
[](raw::MjsHField& self) { mjs_delete(self.element); });
|
[](raw::MjsHField& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
@@ -919,46 +907,43 @@ PYBIND11_MODULE(_specs, m) {
|
|||||||
mjsSkin.def("delete", [](raw::MjsSkin& self) { mjs_delete(self.element); });
|
mjsSkin.def("delete", [](raw::MjsSkin& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSTEXTURE ==================================
|
// ============================= MJSTEXTURE ==================================
|
||||||
mjsTexture.def_property_readonly(
|
mjsTexture.def_property_readonly("id", [](raw::MjsTexture& self) -> int {
|
||||||
"id",
|
return mjs_getId(self.element);
|
||||||
[](raw::MjsTexture& self) -> int { return mjs_getId(self.element); },
|
});
|
||||||
py::return_value_policy::reference_internal);
|
|
||||||
mjsTexture.def("delete",
|
mjsTexture.def("delete",
|
||||||
[](raw::MjsTexture& self) { mjs_delete(self.element); });
|
[](raw::MjsTexture& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSKEY ======================================
|
// ============================= MJSKEY ======================================
|
||||||
mjsKey.def("id",
|
mjsKey.def_property_readonly(
|
||||||
[](raw::MjsKey& self) -> int { return mjs_getId(self.element); });
|
"id", [](raw::MjsKey& self) -> int { return mjs_getId(self.element); });
|
||||||
mjsKey.def("delete", [](raw::MjsKey& self) { mjs_delete(self.element); });
|
mjsKey.def("delete", [](raw::MjsKey& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSTEXT =====================================
|
// ============================= MJSTEXT =====================================
|
||||||
mjsText.def("id", [](raw::MjsText& self) -> int {
|
mjsText.def_property_readonly(
|
||||||
return mjs_getId(self.element);
|
"id", [](raw::MjsText& self) -> int { return mjs_getId(self.element); });
|
||||||
});
|
|
||||||
mjsText.def("delete", [](raw::MjsText& self) { mjs_delete(self.element); });
|
mjsText.def("delete", [](raw::MjsText& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSNUMERIC ==================================
|
// ============================= MJSNUMERIC ==================================
|
||||||
mjsNumeric.def("id", [](raw::MjsNumeric& self) -> int {
|
mjsNumeric.def_property_readonly("id", [](raw::MjsNumeric& self) -> int {
|
||||||
return mjs_getId(self.element);
|
return mjs_getId(self.element);
|
||||||
});
|
});
|
||||||
mjsNumeric.def("delete",
|
mjsNumeric.def("delete",
|
||||||
[](raw::MjsNumeric& self) { mjs_delete(self.element); });
|
[](raw::MjsNumeric& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSEXCLUDE ==================================
|
// ============================= MJSEXCLUDE ==================================
|
||||||
mjsExclude.def("id", [](raw::MjsExclude& self) -> int {
|
mjsExclude.def_property_readonly("id", [](raw::MjsExclude& self) -> int {
|
||||||
return mjs_getId(self.element);
|
return mjs_getId(self.element);
|
||||||
});
|
});
|
||||||
mjsExclude.def("delete",
|
mjsExclude.def("delete",
|
||||||
[](raw::MjsExclude& self) { mjs_delete(self.element); });
|
[](raw::MjsExclude& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSTUPLE ====================================
|
// ============================= MJSTUPLE ====================================
|
||||||
mjsTuple.def("id", [](raw::MjsTuple& self) -> int {
|
mjsTuple.def_property_readonly(
|
||||||
return mjs_getId(self.element);
|
"id", [](raw::MjsTuple& self) -> int { return mjs_getId(self.element); });
|
||||||
});
|
|
||||||
mjsTuple.def("delete", [](raw::MjsTuple& self) { mjs_delete(self.element); });
|
mjsTuple.def("delete", [](raw::MjsTuple& self) { mjs_delete(self.element); });
|
||||||
|
|
||||||
// ============================= MJSPLUGIN ===================================
|
// ============================= MJSPLUGIN ===================================
|
||||||
mjsPlugin.def("id", [](raw::MjsPlugin& self) -> int {
|
mjsPlugin.def_property_readonly("id", [](raw::MjsPlugin& self) -> int {
|
||||||
return mjs_getId(self.instance);
|
return mjs_getId(self.instance);
|
||||||
});
|
});
|
||||||
mjsPlugin.def("delete",
|
mjsPlugin.def("delete",
|
||||||
|
|||||||
Reference in New Issue
Block a user