Canonicalize mjVisual macros to include type and dimension.

PiperOrigin-RevId: 928506110
Change-Id: If5d031f9d87892f13486ae9ccde23c16131212de
This commit is contained in:
Yuval Tassa
2026-06-08 05:30:15 -07:00
committed by Copybara-Service
parent da5500c202
commit 6c33e16bf1
5 changed files with 132 additions and 137 deletions
+15 -10
View File
@@ -207,7 +207,7 @@ PYBIND11_MODULE(_structs, m) {
return raw::MjVisualGlobal(other);
});
DefineStructFunctions(mjVisualGlobal);
#define X(type, var) \
#define X(type, var, dim) \
mjVisualGlobal.def_readwrite(#var, &raw::MjVisualGlobal::var);
MJVISUAL_GLOBAL_FIELDS
#undef X
@@ -221,7 +221,8 @@ PYBIND11_MODULE(_structs, m) {
return raw::MjVisualQuality(other);
});
DefineStructFunctions(mjVisualQuality);
#define X(var) mjVisualQuality.def_readwrite(#var, &raw::MjVisualQuality::var);
#define X(type, var, dim) \
mjVisualQuality.def_readwrite(#var, &raw::MjVisualQuality::var);
MJVISUAL_QUALITY_FIELDS
#undef X
@@ -254,7 +255,8 @@ PYBIND11_MODULE(_structs, m) {
return raw::MjVisualMap(other);
});
DefineStructFunctions(mjVisualMap);
#define X(var) mjVisualMap.def_readwrite(#var, &raw::MjVisualMap::var);
#define X(type, var, dim) \
mjVisualMap.def_readwrite(#var, &raw::MjVisualMap::var);
MJVISUAL_MAP_FIELDS
#undef X
@@ -267,7 +269,8 @@ PYBIND11_MODULE(_structs, m) {
return raw::MjVisualScale(other);
});
DefineStructFunctions(mjVisualScale);
#define X(var) mjVisualScale.def_readwrite(#var, &raw::MjVisualScale::var);
#define X(type, var, dim) \
mjVisualScale.def_readwrite(#var, &raw::MjVisualScale::var);
MJVISUAL_SCALE_FIELDS
#undef X
@@ -280,9 +283,10 @@ PYBIND11_MODULE(_structs, m) {
return MjVisualRgbaWrapper(other);
});
DefineStructFunctions(mjVisualRgba);
#define X(var) DefinePyArray(mjVisualRgba, #var, &MjVisualRgbaWrapper::var);
#define XVEC(type, var, dim) \
DefinePyArray(mjVisualRgba, #var, &MjVisualRgbaWrapper::var);
MJVISUAL_RGBA_FIELDS
#undef X
#undef XVEC
#define X(var) \
mjVisual.def_property_readonly( \
@@ -615,15 +619,16 @@ This is useful for example when the MJB is not available as a file on disk.)"));
X(int, nupdate);
#undef X
// ==================== MJPRECONTACT ==========================================
// ==================== MJPRECONTACT =========================================
py::class_<MjPreContactWrapper> mjPreContact(m, "MjPreContact");
mjPreContact.def(py::init<>());
mjPreContact.def("__copy__", [](const MjPreContactWrapper& self) {
return MjPreContactWrapper(self);
});
mjPreContact.def("__deepcopy__", [](const MjPreContactWrapper& self, py::dict) {
return MjPreContactWrapper(self);
});
mjPreContact.def("__deepcopy__",
[](const MjPreContactWrapper& self, py::dict) {
return MjPreContactWrapper(self);
});
DefineStructFunctions(mjPreContact);
#define X(var) \
+5 -5
View File
@@ -270,12 +270,12 @@ class MjWrapper<raw::MjVisualRgba> : public WrapperBase<raw::MjVisualRgba> {
MjWrapper(raw::MjVisualRgba* ptr, pybind11::handle owner);
~MjWrapper() = default;
#define X(var) \
py_array_or_tuple_t< \
std::remove_all_extents_t<decltype(raw::MjVisualRgba::var)>> \
var;
#define XVEC(type, var, dim) \
py_array_or_tuple_t< \
std::remove_all_extents_t<decltype(raw::MjVisualRgba::var)>> \
var;
MJVISUAL_RGBA_FIELDS
#undef X
#undef XVEC
};
using MjVisualRgbaWrapper = MjWrapper<raw::MjVisualRgba>;