Add bind() method to MjModel and MjData.
This method allows users to bind a spec to a model or data object, making it less verbose to access its arrays. PiperOrigin-RevId: 699952211 Change-Id: I6b71a88d5a6968bc0f902bd49db7c568b46a4dfb
This commit is contained in:
committed by
Copybara-Service
parent
13b6055098
commit
c6ba8f27fd
@@ -1716,6 +1716,18 @@ This is useful for example when the MJB is not available as a file on disk.)"));
|
||||
MJMODEL_VIEW_GROUPS
|
||||
#undef XGROUP
|
||||
|
||||
#define XGROUP(spectype, field) \
|
||||
mjModel.def( \
|
||||
"bind", \
|
||||
[](MjModelWrapper& m, spectype& spec) -> auto& { \
|
||||
return m.indexer().field##_by_name(mjs_getString(spec.name)); \
|
||||
}, \
|
||||
py::return_value_policy::reference_internal, \
|
||||
py::arg_v("spec", py::none()));
|
||||
|
||||
MJMODEL_BIND_GROUPS
|
||||
#undef XGROUP
|
||||
|
||||
#define XGROUP(field, altname, FIELD_XMACROS) \
|
||||
mjModel.def( \
|
||||
#altname, \
|
||||
@@ -2050,6 +2062,18 @@ This is useful for example when the MJB is not available as a file on disk.)"));
|
||||
MJDATA_VIEW_GROUPS
|
||||
#undef XGROUP
|
||||
|
||||
#define XGROUP(spectype, field) \
|
||||
mjData.def( \
|
||||
"bind", \
|
||||
[](MjDataWrapper& d, spectype& spec) -> auto& { \
|
||||
return d.indexer().field##_by_name(mjs_getString(spec.name)); \
|
||||
}, \
|
||||
py::return_value_policy::reference_internal, \
|
||||
py::arg_v("spec", py::none()));
|
||||
|
||||
MJDATA_BIND_GROUPS
|
||||
#undef XGROUP
|
||||
|
||||
#define XGROUP(field, altname, FIELD_XMACROS) \
|
||||
mjData.def( \
|
||||
#altname, \
|
||||
|
||||
Reference in New Issue
Block a user