in mujoco_py/mjsim.pyx [0:0]
def set_substep_callback(self, substep_callback, userdata_names=None):
'''
Set a substep callback function.
Parameters :
substep_callback : str or int or None
If `substep_callback` is a string, compile to function pointer and set.
See `builder.build_callback_fn()` for documentation.
If `substep_callback` is an int, we interpret it as a function pointer.
If `substep_callback` is None, we disable substep_callbacks.
userdata_names : list of strings or None
This is a convenience parameter, if not None, this is passed
onto ``model.set_userdata_names()``.
'''
if userdata_names is not None:
self.model.set_userdata_names(userdata_names)
if substep_callback is None:
self.substep_callback_ptr = 0
elif isinstance(substep_callback, int):
self.substep_callback_ptr = substep_callback
elif isinstance(substep_callback, str):
self.substep_callback_ptr = build_callback_fn(substep_callback,
self.model.userdata_names)
else:
raise TypeError('invalid: {}'.format(type(substep_callback)))