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:
Alessio Quaglino
2024-11-25 05:53:03 -08:00
committed by Copybara-Service
parent 13b6055098
commit c6ba8f27fd
6 changed files with 75 additions and 17 deletions
+33
View File
@@ -307,6 +307,28 @@
XGROUP( MjModelTupleViews, tuple, ntuple, MJMODEL_TUPLE ) \
XGROUP( MjModelKeyframeViews, key, nkey, MJMODEL_KEYFRAME )
#define MJMODEL_BIND_GROUPS \
XGROUP( mjsActuator, actuator) \
XGROUP( mjsBody, body ) \
XGROUP( mjsCamera, cam ) \
XGROUP( mjsEquality, eq ) \
XGROUP( mjsExclude, exclude ) \
XGROUP( mjsGeom, geom ) \
XGROUP( mjsHField, hfield ) \
XGROUP( mjsJoint, jnt ) \
XGROUP( mjsLight, light ) \
XGROUP( mjsMaterial, mat ) \
XGROUP( mjsMesh, mesh ) \
XGROUP( mjsNumeric, numeric ) \
XGROUP( mjsPair, pair ) \
XGROUP( mjsSensor, sensor ) \
XGROUP( mjsSite, site ) \
XGROUP( mjsSkin, skin ) \
XGROUP( mjsTendon, tendon ) \
XGROUP( mjsTexture, tex ) \
XGROUP( mjsTuple, tuple ) \
XGROUP( mjsKey, key )
#define MJMODEL_VIEW_GROUPS_ALTNAMES \
XGROUP( cam, camera, MJMODEL_CAMERA ) \
XGROUP( eq, equality, MJMODEL_EQUALITY ) \
@@ -399,6 +421,17 @@
XGROUP( MjDataSiteViews, site, nsite, MJDATA_SITE ) \
XGROUP( MjDataTendonViews, tendon, ntendon, MJDATA_TENDON )
#define MJDATA_BIND_GROUPS \
XGROUP( mjsActuator, actuator) \
XGROUP( mjsBody, body ) \
XGROUP( mjsCamera, cam ) \
XGROUP( mjsGeom, geom ) \
XGROUP( mjsJoint, jnt ) \
XGROUP( mjsLight, light ) \
XGROUP( mjsSensor, sensor ) \
XGROUP( mjsSite, site ) \
XGROUP( mjsTendon, tendon )
#define MJDATA_VIEW_GROUPS_ALTNAMES \
XGROUP( cam, camera, MJDATA_CAMERA ) \
XGROUP( jnt, joint, MJDATA_JOINT ) \