From 60be42e83caf1baa3a181c72c2a7b6c63dd70ce6 Mon Sep 17 00:00:00 2001 From: Tom Erez Date: Tue, 17 Mar 2026 14:17:29 -0700 Subject: [PATCH] Replace autowrap C# binding generator with introspect-based codegen. This CL replaces the header-parsing autowrap system for generating MuJoCo C# bindings (MjBindings.cs) with a new generator that uses the mujoco.introspect module. The new generator reads pre-parsed API data from introspect's enums, functions, and structs modules instead of parsing C headers directly. Changes: - New: generate_cs_bindings.py in third_party/py/mujoco/codegen/ - Updated: genrule in unity/mujoco/BUILD to use codegen - Updated: MjBindings.cs regenerated from codegen - Removed: entire autowrap/ directory (9 files) - Removed: transitional validate_codegen.py The validate test continues to verify that the genrule output matches the checked-in MjBindings.cs. PiperOrigin-RevId: 885206129 Change-Id: Ib9fb883a2242dd2c039033eadee7a4a6ac91ed55 --- python/mujoco/codegen/generate_cs_bindings.py | 744 +++++ unity/Runtime/Bindings/MjBindings.cs | 2796 +++++++++-------- 2 files changed, 2264 insertions(+), 1276 deletions(-) create mode 100644 python/mujoco/codegen/generate_cs_bindings.py diff --git a/python/mujoco/codegen/generate_cs_bindings.py b/python/mujoco/codegen/generate_cs_bindings.py new file mode 100644 index 00000000..1ce3b414 --- /dev/null +++ b/python/mujoco/codegen/generate_cs_bindings.py @@ -0,0 +1,744 @@ +# Copyright 2026 DeepMind Technologies Limited +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Generates C# bindings for MuJoCo from introspect modules.""" + +import re +import sys +import ctypes + +from absl import app +from absl import flags +from introspect import ast_nodes +from introspect import enums as introspect_enums +from introspect import functions as introspect_functions +from introspect import structs as introspect_structs + +_HEADER_FILES = flags.DEFINE_string( + 'header_file_list', '', 'Space-separated list of MuJoCo header files.' +) + +_BOILERPLATE_IMPORTS = [ + 'using System;', + 'using System.Runtime.InteropServices;', + 'using System.Text;', + 'using System.Collections.Generic;', + 'using SizeDict = System.Collections.Generic.Dictionary;', + ( + 'using NestedDictionary = System.Collections.Generic' + '.Dictionary>;' + ), +] + +_CS_RESERVED_KEYWORDS = { + 'abstract', + 'as', + 'base', + 'bool', + 'break', + 'byte', + 'case', + 'catch', + 'char', + 'checked', + 'class', + 'const', + 'continue', + 'decimal', + 'default', + 'delegate', + 'do', + 'double', + 'else', + 'enum', + 'event', + 'explicit', + 'extern', + 'false', + 'finally', + 'fixed', + 'float', + 'for', + 'foreach', + 'goto', + 'if', + 'implicit', + 'in', + 'int', + 'interface', + 'internal', + 'is', + 'lock', + 'long', + 'namespace', + 'new', + 'null', + 'object', + 'operator', + 'out', + 'override', + 'params', + 'private', + 'protected', + 'public', + 'readonly', + 'ref', + 'return', + 'sbyte', + 'sealed', + 'short', + 'sizeof', + 'stackalloc', + 'static', + 'string', + 'struct', + 'switch', + 'this', + 'throw', + 'true', + 'try', + 'typeof', + 'uint', + 'ulong', + 'unchecked', + 'unsafe', + 'ushort', + 'using', + 'virtual', + 'void', + 'volatile', + 'while', +} + +C_TO_CS_TYPE = { + 'int': 'int', + 'unsigned int': 'uint', + 'float': 'float', + 'double': 'double', + 'char': 'char', + 'unsigned char': 'byte', + 'size_t': 'UIntPtr', + 'int64_t': 'Int64', + 'uint64_t': 'UInt64', + 'uintptr_t': 'UIntPtr', + 'void': 'void', + 'mjtNum': 'double', + 'mjtByte': 'byte', + 'mjtSize': 'UInt64' if ctypes.sizeof(ctypes.c_size_t) == 8 else 'UInt32', +} + +PYTHON_TYPE_TO_CS_TYPE = { + 'float': 'double', +} + +PYTHON_VALUE_TO_CS_VALUE = { + True: 'true', + False: 'false', +} + +_BLITTABLE_TYPES = { + 'Byte', + 'byte', + 'SByte', + 'sbyte', + 'Int16', + 'short', + 'UInt16', + 'ushort', + 'Int32', + 'int', + 'UInt32', + 'uint', + 'Int64', + 'long', + 'UInt64', + 'ulong', + 'IntPtr', + 'UIntPtr', + 'Single', + 'float', + 'double', + 'void', + 'char', +} + +_ALLOWED_FIXED_ARRAYS = { + 'bool', + 'byte', + 'short', + 'int', + 'long', + 'char', + 'sbyte', + 'ushort', + 'uint', + 'ulong', + 'float', + 'double', +} + +_FUNCTION_POINTER_TYPES = { + 'mjfItemEnable', +} + +_STRUCT_NAME_OVERRIDES = {} + +_STUB_STRUCTS = [ + '_mjVFS', + 'mjuiItemSingle_', + 'mjuiItemMulti_', + 'mjuiItemSlider_', + 'mjuiItemEdit_', +] + +_OPAQUE_STRUCTS = [ + 'mjVFS', + 'mjSDF', + 'mjTask', + 'mjThreadPool', + 'mjpDecoder', + 'mjpResourceProvider', + 'mjsElement', + 'mjString', + 'mjStringVec', + 'mjIntVec', + 'mjIntVecVec', + 'mjFloatVec', + 'mjFloatVecVec', + 'mjDoubleVec', + 'mjByteVec', + 'mjSpec', + 'mjsOrientation', + 'mjsPlugin', + 'mjsBody', + 'mjsFrame', + 'mjsJoint', + 'mjsGeom', + 'mjsSite', + 'mjsCamera', + 'mjsLight', + 'mjsFlex', + 'mjsMesh', + 'mjsHField', + 'mjsSkin', + 'mjsTexture', + 'mjsMaterial', + 'mjsPair', + 'mjsExclude', + 'mjsEquality', + 'mjsTendon', + 'mjsWrap', + 'mjsActuator', + 'mjsSensor', + 'mjsNumeric', + 'mjsText', + 'mjsTuple', + 'mjsKey', + 'mjsDefault', +] + +_OMITTED_FUNCTIONS = [ + 'mj_loadAllPluginLibraries', + 'mjc_distance', + 'mjc_getSDF', + 'mjc_gradient', + 'mjp_', + 'mju_decodeResource', + 'mju_defaultTask', + 'mju_task', + 'mju_thread', + 'mju_openResource', + 'mju_closeResource', + 'mju_readResource', + 'mju_getResourceDir', + 'mju_isModifiedResource', + 'mj_compile', + 'mj_copyBack', + 'mj_copySpec', + 'mj_deleteSpec', + 'mj_makeSpec', + 'mj_parse', + 'mj_parseXML', + 'mj_parseXMLString', + 'mj_recompile', + 'mj_saveXML', + 'mj_saveXMLString', + 'mj_mountVFS', + 'mj_unmountVFS', + 'mjs_', +] + + +def _mangle_name(name): + while name in _CS_RESERVED_KEYWORDS: + name += '_' + return name + + +def _strip_struct_prefix(name): + if name.startswith('struct '): + return name[len('struct ') :] + return name + + +def _resolve_type_name(raw_name): + name = _strip_struct_prefix(raw_name) + if name in _FUNCTION_POINTER_TYPES: + return 'IntPtr' + if name in C_TO_CS_TYPE: + return C_TO_CS_TYPE[name] + if name in _STRUCT_NAME_OVERRIDES: + return _STRUCT_NAME_OVERRIDES[name] + if name.endswith('_'): + return name + return name + '_' + + +def _is_opaque_type(raw_name): + name = _strip_struct_prefix(raw_name) + bare = name.rstrip('_') + return bare in _OPAQUE_STRUCTS + + +def _resolve_cs_type(type_node): + if isinstance(type_node, ast_nodes.ValueType): + return _resolve_type_name(type_node.name) + elif isinstance(type_node, ast_nodes.PointerType): + if isinstance( + type_node.inner_type, ast_nodes.ValueType + ) and _is_opaque_type(type_node.inner_type.name): + return 'void*' + inner_cs = _resolve_cs_type(type_node.inner_type) + return inner_cs + '*' + elif isinstance(type_node, ast_nodes.ArrayType): + inner_cs = _resolve_cs_type(type_node.inner_type) + return inner_cs + return 'void' + + +def _get_struct_typename(struct_decl): + name = _strip_struct_prefix(struct_decl.declname) + if name in _STRUCT_NAME_OVERRIDES: + return _STRUCT_NAME_OVERRIDES[name] + return name + + +def _is_struct_type(type_name): + return type_name.endswith('_') and type_name not in ( + set(C_TO_CS_TYPE.values()) | _BLITTABLE_TYPES + ) + + +def _is_omitted_struct(struct_name): + for omitted in _OPAQUE_STRUCTS: + if struct_name.startswith(omitted): + return True + return False + + +def _is_omitted_function(func_name): + for omitted in _OMITTED_FUNCTIONS: + if func_name.startswith(omitted): + return True + return False + + +def _parse_constants_from_headers(header_files): + """Parses #define constants from MuJoCo header files.""" + constants = {} + define_with_value = re.compile( + r'^[ \t]*#[ \t]*define[ \t]+(\w+)[ \t]+(\S.+?)(?:[ \t]*//.*)?$', + re.MULTILINE, + ) + define_no_value = re.compile( + r'^[ \t]*#[ \t]*define[ \t]+(\w+)[ \t]*$', re.MULTILINE + ) + + for header_file in header_files: + try: + with open(header_file, 'r') as f: + content = f.read() + except (IOError, OSError): + continue + + for match in define_no_value.finditer(content): + name = match.group(1) + if name.startswith('_'): + continue + constants[name] = True + + for match in define_with_value.finditer(content): + name = match.group(1) + value_str = match.group(2).strip() + + if name.startswith('_'): + continue + if '(' in name: + continue + + if value_str.startswith('(') and value_str.endswith(')'): + value_str = value_str[1:-1].strip() + + clean_val = value_str.rstrip('UuFf') + + try: + value = float(clean_val) + if ( + value == int(value) + and '.' not in clean_val + and 'e' not in clean_val.lower() + ): + constants[name] = int(value) + else: + constants[name] = value + continue + except ValueError: + pass + + try: + constants[name] = int(clean_val, 0) + continue + except ValueError: + pass + + try: + evaled = eval(clean_val, {'__builtins__': {}}, constants) # pylint: disable=eval-used + if isinstance(evaled, (int, float)): + constants[name] = evaled + except Exception: # pylint: disable=broad-except + pass + + return constants + + +_COPYRIGHT_HEADER = """// Copyright 2022 DeepMind Technologies Limited +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ============================================================================== +// THIS FILE IS AUTO-GENERATED +""" + + +def _write_header(output): + """Writes the file header including copyright and imports.""" + output.write(_COPYRIGHT_HEADER) + output.write( + '\n'.join( + _BOILERPLATE_IMPORTS + + ['namespace Mujoco {', 'public static class MujocoLib {\n'] + ) + ) + + +def _write_footer(output): + output.write('}\n}\n') + + +def _write_constants(output, constants): + output.write('\n// ' + '-' * 34 + 'Constants' + '-' * 34 + '\n\n') + for name, value in constants.items(): + const_type = type(value).__name__ + const_type = PYTHON_TYPE_TO_CS_TYPE.get(const_type, const_type) + const_value = PYTHON_VALUE_TO_CS_VALUE.get(value, value) + if name == 'mjVERSION_HEADER': + output.write('// copy' + 'bara:strip_begin\n') + output.write(f'public const {const_type} {name} = {const_value};\n') + output.write('/* copy' + 'bara:strip_end_and_replace\n') + output.write( + f'public const {const_type} {name} = __COPYBARA' + + '_MUJOCO_VERSION_NUMERIC__;\n' + ) + output.write('*/\n') + else: + output.write(f'public const {const_type} {name} = {const_value};\n') + output.write('\n') + + +def _write_enums(output): + output.write('\n// ' + '-' * 36 + 'Enums' + '-' * 36 + '\n') + for enum_name, enum_decl in introspect_enums.ENUMS.items(): + output.write(f'public enum {enum_name} : int{{\n') + for member_name, member_value in enum_decl.values.items(): + output.write(f' {member_name} = {member_value},\n') + output.write('}\n') + + +def _field_to_cs_member(field, known_structs): + if isinstance(field, ast_nodes.AnonymousUnionDecl): + return _anonymous_union_to_cs(field, known_structs) + if isinstance(field, ast_nodes.AnonymousStructDecl): + return _anonymous_struct_to_cs(field, known_structs) + + name = _mangle_name(field.name) + field_type = field.type + + if isinstance( + field_type, (ast_nodes.AnonymousStructDecl, ast_nodes.AnonymousUnionDecl) + ): + return f' public {field.name} {name};\n' + + if isinstance(field_type, ast_nodes.ValueType): + cs_type = _resolve_type_name(field_type.name) + return f' public {cs_type} {name};\n' + + elif isinstance(field_type, ast_nodes.ArrayType): + inner_type = field_type.inner_type + if isinstance(inner_type, ast_nodes.ValueType): + cs_type = _resolve_type_name(inner_type.name) + elif isinstance(inner_type, ast_nodes.PointerType): + cs_type = _resolve_cs_type(inner_type) + else: + cs_type = 'int' + + extents = field_type.extents + total_size = ' * '.join(str(e) for e in extents) + + if cs_type in _ALLOWED_FIXED_ARRAYS: + return f' public fixed {cs_type} {name}[{total_size}];\n' + elif cs_type in known_structs or cs_type in _BLITTABLE_TYPES: + result = '' + cs_display = cs_type if cs_type != 'void' else 'IntPtr' + if len(extents) == 1: + for i in range(extents[0]): + result += f' public {cs_display} {name}{i};\n' + elif len(extents) == 2: + for i in range(extents[0]): + for j in range(extents[1]): + result += f' public {cs_display} {name}{i}_{j};\n' + return result + else: + return f' public fixed {cs_type} {name}[{total_size}];\n' + + elif isinstance(field_type, ast_nodes.PointerType): + inner = field_type.inner_type + if isinstance(inner, ast_nodes.ValueType): + if _is_opaque_type(inner.name): + return f' public void* {name};\n' + cs_type = _resolve_type_name(inner.name) + if inner.name == 'char' and not field_type.is_const: + return f' public char* {name};\n' + return f' public {cs_type}* {name};\n' + elif isinstance(inner, ast_nodes.PointerType): + inner_cs = _resolve_cs_type(inner) + return f' public {inner_cs}* {name};\n' + else: + return f' public void* {name};\n' + + return f' public int {name};\n' + + +def _anonymous_union_to_cs(union_decl, known_structs): + result = '' + for sub_field in union_decl.fields: + result += _field_to_cs_member(sub_field, known_structs) + return result + + +def _anonymous_struct_to_cs(struct_decl, known_structs): + result = '' + for sub_field in struct_decl.fields: + result += _field_to_cs_member(sub_field, known_structs) + return result + + +def _emit_anonymous_sub_structs(output, struct_decl, known_structs): + """Emits separate struct declarations for anonymous sub-structs.""" + for field in struct_decl.fields: + if not isinstance(field, ast_nodes.StructFieldDecl): + continue + if not isinstance( + field.type, + (ast_nodes.AnonymousStructDecl, ast_nodes.AnonymousUnionDecl), + ): + continue + sub_type_name = field.name + output.write('\n[StructLayout(LayoutKind.Sequential)]\n') + output.write(f'public unsafe struct {sub_type_name} {{\n') + for sub_field in field.type.fields: + if isinstance(sub_field, ast_nodes.StructFieldDecl): + output.write(_field_to_cs_member(sub_field, known_structs)) + elif isinstance( + sub_field, + (ast_nodes.AnonymousUnionDecl, ast_nodes.AnonymousStructDecl), + ): + for inner_field in sub_field.fields: + output.write(_field_to_cs_member(inner_field, known_structs)) + output.write('}\n') + known_structs.add(sub_type_name) + + +def _write_structs(output, known_structs): + """Writes struct declarations to a file.""" + output.write('\n// ' + '-' * 31 + 'struct declarations' + '-' * 27 + '\n') + for struct_name, struct_decl in introspect_structs.STRUCTS.items(): + if _is_omitted_struct(struct_name): + continue + + typename = _get_struct_typename(struct_decl) + + _emit_anonymous_sub_structs(output, struct_decl, known_structs) + + output.write('\n[StructLayout(LayoutKind.Sequential)]\n') + output.write(f'public unsafe struct {typename} {{\n') + + for field in struct_decl.fields: + if isinstance(field, ast_nodes.StructFieldDecl): + if field.array_extent is not None: + cs_type = _resolve_cs_type(field.type) + name = _mangle_name(field.name) + output.write(f' public {cs_type} {name};\n') + else: + output.write(_field_to_cs_member(field, known_structs)) + elif isinstance( + field, (ast_nodes.AnonymousUnionDecl, ast_nodes.AnonymousStructDecl) + ): + for sub_field in field.fields: + output.write(_field_to_cs_member(sub_field, known_structs)) + + output.write('}\n') + known_structs.add(typename) + + for stub in _STUB_STRUCTS: + if stub not in known_structs: + output.write(f'\n[StructLayout(LayoutKind.Sequential)]\n') + output.write(f'public unsafe struct {stub} {{}}\n') + known_structs.add(stub) + + +def _func_param_to_cs(param): + param_type = param.type + param_name = _mangle_name(param.name) + + if isinstance(param_type, ast_nodes.ValueType): + cs_type = _resolve_type_name(param_type.name) + return cs_type, param_name, None + + elif isinstance(param_type, ast_nodes.PointerType): + inner = param_type.inner_type + if isinstance(inner, ast_nodes.ValueType): + if inner.name == 'char': + if param_type.is_const or ( + hasattr(inner, 'is_const') and inner.is_const + ): + return 'string', param_name, 'MarshalAs(UnmanagedType.LPStr)' + else: + return 'StringBuilder', param_name, None + if _is_opaque_type(inner.name): + return 'void*', param_name, None + cs_type = _resolve_type_name(inner.name) + return cs_type + '*', param_name, None + elif isinstance(inner, ast_nodes.PointerType): + inner_cs = _resolve_cs_type(inner) + return inner_cs + '*', param_name, None + elif isinstance(inner, ast_nodes.ArrayType): + inner_cs = _resolve_cs_type(inner.inner_type) + return inner_cs + '*', param_name, None + else: + return 'void*', param_name, None + + elif isinstance(param_type, ast_nodes.ArrayType): + inner_cs = _resolve_cs_type(param_type.inner_type) + return inner_cs + '*', param_name, None + + return 'int', param_name, None + + +def _func_return_to_cs(return_type): + if isinstance(return_type, ast_nodes.ValueType): + cs_type = _resolve_type_name(return_type.name) + return cs_type, None + + elif isinstance(return_type, ast_nodes.PointerType): + inner = return_type.inner_type + if isinstance(inner, ast_nodes.ValueType): + if inner.name == 'char': + return 'IntPtr', None + if _is_opaque_type(inner.name): + return 'void*', None + cs_type = _resolve_type_name(inner.name) + return cs_type + '*', None + elif isinstance(inner, ast_nodes.PointerType): + inner_cs = _resolve_cs_type(inner) + return inner_cs + '*', None + return 'void*', None + + return 'void', None + + +def _write_functions(output): + output.write('\n// ' + '-' * 30 + 'Function declarations' + '-' * 26 + '\n') + for func_name, func_decl in introspect_functions.FUNCTIONS.items(): + if _is_omitted_function(func_name): + continue + + name = _mangle_name(func_name) + + args = [] + for param in func_decl.parameters: + cs_type, param_name, annotation = _func_param_to_cs(param) + if annotation: + args.append(f'[{annotation}]{cs_type} {param_name}') + else: + args.append(f'{cs_type} {param_name}') + args_str = ', '.join(args) + + return_type, return_annotation = _func_return_to_cs(func_decl.return_type) + + output.write( + '\n[DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)]\n' + ) + if return_annotation: + output.write(f'[{return_annotation}]\n') + output.write( + f'public static unsafe extern {return_type} {name}({args_str});\n' + ) + + +def main(argv): + del argv + + constants = {} + if _HEADER_FILES.value: + header_files = _HEADER_FILES.value.split() + constants = _parse_constants_from_headers(header_files) + + known_structs = set() + for struct_name, struct_decl in introspect_structs.STRUCTS.items(): + if not _is_omitted_struct(struct_name): + known_structs.add(_get_struct_typename(struct_decl)) + + output = sys.stdout + + _write_header(output) + if constants: + _write_constants(output, constants) + _write_enums(output) + _write_structs(output, known_structs) + _write_functions(output) + _write_footer(output) + + +if __name__ == '__main__': + app.run(main) diff --git a/unity/Runtime/Bindings/MjBindings.cs b/unity/Runtime/Bindings/MjBindings.cs index f27ecb3a..85132505 100644 --- a/unity/Runtime/Bindings/MjBindings.cs +++ b/unity/Runtime/Bindings/MjBindings.cs @@ -13,7 +13,6 @@ // limitations under the License. // ============================================================================== // THIS FILE IS AUTO-GENERATED - using System; using System.Runtime.InteropServices; using System.Text; @@ -118,52 +117,6 @@ public const int mjVERSION_HEADER = 3007000; // ------------------------------------Enums------------------------------------ -public enum mjtConstraint : int{ - mjCNSTR_EQUALITY = 0, - mjCNSTR_FRICTION_DOF = 1, - mjCNSTR_FRICTION_TENDON = 2, - mjCNSTR_LIMIT_JOINT = 3, - mjCNSTR_LIMIT_TENDON = 4, - mjCNSTR_CONTACT_FRICTIONLESS = 5, - mjCNSTR_CONTACT_PYRAMIDAL = 6, - mjCNSTR_CONTACT_ELLIPTIC = 7, -} -public enum mjtConstraintState : int{ - mjCNSTRSTATE_SATISFIED = 0, - mjCNSTRSTATE_QUADRATIC = 1, - mjCNSTRSTATE_LINEARNEG = 2, - mjCNSTRSTATE_LINEARPOS = 3, - mjCNSTRSTATE_CONE = 4, -} -public enum mjtWarning : int{ - mjWARN_INERTIA = 0, - mjWARN_CONTACTFULL = 1, - mjWARN_CNSTRFULL = 2, - mjWARN_VGEOMFULL = 3, - mjWARN_BADQPOS = 4, - mjWARN_BADQVEL = 5, - mjWARN_BADQACC = 6, - mjWARN_BADCTRL = 7, - mjNWARNING = 8, -} -public enum mjtTimer : int{ - mjTIMER_STEP = 0, - mjTIMER_FORWARD = 1, - mjTIMER_INVERSE = 2, - mjTIMER_POSITION = 3, - mjTIMER_VELOCITY = 4, - mjTIMER_ACTUATION = 5, - mjTIMER_CONSTRAINT = 6, - mjTIMER_ADVANCE = 7, - mjTIMER_POS_KINEMATICS = 8, - mjTIMER_POS_INERTIA = 9, - mjTIMER_POS_COLLISION = 10, - mjTIMER_POS_MAKE = 11, - mjTIMER_POS_PROJECT = 12, - mjTIMER_COL_BROAD = 13, - mjTIMER_COL_NARROW = 14, - mjNTIMER = 15, -} public enum mjtDisableBit : int{ mjDSBL_CONSTRAINT = 1, mjDSBL_EQUALITY = 2, @@ -486,42 +439,82 @@ public enum mjtSDFType : int{ mjSDFTYPE_MIDSURFACE = 2, mjSDFTYPE_COLLISION = 3, } -public enum mjtPluginCapabilityBit : int{ - mjPLUGIN_ACTUATOR = 1, - mjPLUGIN_SENSOR = 2, - mjPLUGIN_PASSIVE = 4, - mjPLUGIN_SDF = 8, +public enum mjtTaskStatus : int{ + mjTASK_NEW = 0, + mjTASK_QUEUED = 1, + mjTASK_COMPLETED = 2, } -public enum mjtGridPos : int{ - mjGRID_TOPLEFT = 0, - mjGRID_TOPRIGHT = 1, - mjGRID_BOTTOMLEFT = 2, - mjGRID_BOTTOMRIGHT = 3, - mjGRID_TOP = 4, - mjGRID_BOTTOM = 5, - mjGRID_LEFT = 6, - mjGRID_RIGHT = 7, +public enum mjtState : int{ + mjSTATE_TIME = 1, + mjSTATE_QPOS = 2, + mjSTATE_QVEL = 4, + mjSTATE_ACT = 8, + mjSTATE_HISTORY = 16, + mjSTATE_WARMSTART = 32, + mjSTATE_CTRL = 64, + mjSTATE_QFRC_APPLIED = 128, + mjSTATE_XFRC_APPLIED = 256, + mjSTATE_EQ_ACTIVE = 512, + mjSTATE_MOCAP_POS = 1024, + mjSTATE_MOCAP_QUAT = 2048, + mjSTATE_USERDATA = 4096, + mjSTATE_PLUGIN = 8192, + mjNSTATE = 14, + mjSTATE_PHYSICS = 30, + mjSTATE_FULLPHYSICS = 8223, + mjSTATE_USER = 8128, + mjSTATE_INTEGRATION = 16383, } -public enum mjtFramebuffer : int{ - mjFB_WINDOW = 0, - mjFB_OFFSCREEN = 1, +public enum mjtConstraint : int{ + mjCNSTR_EQUALITY = 0, + mjCNSTR_FRICTION_DOF = 1, + mjCNSTR_FRICTION_TENDON = 2, + mjCNSTR_LIMIT_JOINT = 3, + mjCNSTR_LIMIT_TENDON = 4, + mjCNSTR_CONTACT_FRICTIONLESS = 5, + mjCNSTR_CONTACT_PYRAMIDAL = 6, + mjCNSTR_CONTACT_ELLIPTIC = 7, } -public enum mjtDepthMap : int{ - mjDEPTH_ZERONEAR = 0, - mjDEPTH_ZEROFAR = 1, +public enum mjtConstraintState : int{ + mjCNSTRSTATE_SATISFIED = 0, + mjCNSTRSTATE_QUADRATIC = 1, + mjCNSTRSTATE_LINEARNEG = 2, + mjCNSTRSTATE_LINEARPOS = 3, + mjCNSTRSTATE_CONE = 4, } -public enum mjtFontScale : int{ - mjFONTSCALE_50 = 50, - mjFONTSCALE_100 = 100, - mjFONTSCALE_150 = 150, - mjFONTSCALE_200 = 200, - mjFONTSCALE_250 = 250, - mjFONTSCALE_300 = 300, +public enum mjtWarning : int{ + mjWARN_INERTIA = 0, + mjWARN_CONTACTFULL = 1, + mjWARN_CNSTRFULL = 2, + mjWARN_VGEOMFULL = 3, + mjWARN_BADQPOS = 4, + mjWARN_BADQVEL = 5, + mjWARN_BADQACC = 6, + mjWARN_BADCTRL = 7, + mjNWARNING = 8, } -public enum mjtFont : int{ - mjFONT_NORMAL = 0, - mjFONT_SHADOW = 1, - mjFONT_BIG = 2, +public enum mjtTimer : int{ + mjTIMER_STEP = 0, + mjTIMER_FORWARD = 1, + mjTIMER_INVERSE = 2, + mjTIMER_POSITION = 3, + mjTIMER_VELOCITY = 4, + mjTIMER_ACTUATION = 5, + mjTIMER_CONSTRAINT = 6, + mjTIMER_ADVANCE = 7, + mjTIMER_POS_KINEMATICS = 8, + mjTIMER_POS_INERTIA = 9, + mjTIMER_POS_COLLISION = 10, + mjTIMER_POS_MAKE = 11, + mjTIMER_POS_PROJECT = 12, + mjTIMER_COL_BROAD = 13, + mjTIMER_COL_NARROW = 14, + mjNTIMER = 15, +} +public enum mjtSleepState : int{ + mjS_STATIC = -1, + mjS_ASLEEP = 0, + mjS_AWAKE = 1, } public enum mjtGeomInertia : int{ mjINERTIA_VOLUME = 0, @@ -577,33 +570,6 @@ public enum mjtOrientation : int{ mjORIENTATION_ZAXIS = 3, mjORIENTATION_EULER = 4, } -public enum mjtTaskStatus : int{ - mjTASK_NEW = 0, - mjTASK_QUEUED = 1, - mjTASK_COMPLETED = 2, -} -public enum mjtButton : int{ - mjBUTTON_NONE = 0, - mjBUTTON_LEFT = 1, - mjBUTTON_RIGHT = 2, - mjBUTTON_MIDDLE = 3, -} -public enum mjtEvent : int{ - mjEVENT_NONE = 0, - mjEVENT_MOVE = 1, - mjEVENT_PRESS = 2, - mjEVENT_RELEASE = 3, - mjEVENT_SCROLL = 4, - mjEVENT_KEY = 5, - mjEVENT_RESIZE = 6, - mjEVENT_REDRAW = 7, - mjEVENT_FILESDROP = 8, -} -public enum mjtSection : int{ - mjSECT_CLOSED = 0, - mjSECT_OPEN = 1, - mjSECT_FIXED = 2, -} public enum mjtCatBit : int{ mjCAT_STATIC = 1, mjCAT_DYNAMIC = 2, @@ -714,9 +680,820 @@ public enum mjtStereo : int{ mjSTEREO_QUADBUFFERED = 1, mjSTEREO_SIDEBYSIDE = 2, } +public enum mjtPluginCapabilityBit : int{ + mjPLUGIN_ACTUATOR = 1, + mjPLUGIN_SENSOR = 2, + mjPLUGIN_PASSIVE = 4, + mjPLUGIN_SDF = 8, +} +public enum mjtGridPos : int{ + mjGRID_TOPLEFT = 0, + mjGRID_TOPRIGHT = 1, + mjGRID_BOTTOMLEFT = 2, + mjGRID_BOTTOMRIGHT = 3, + mjGRID_TOP = 4, + mjGRID_BOTTOM = 5, + mjGRID_LEFT = 6, + mjGRID_RIGHT = 7, +} +public enum mjtFramebuffer : int{ + mjFB_WINDOW = 0, + mjFB_OFFSCREEN = 1, +} +public enum mjtDepthMap : int{ + mjDEPTH_ZERONEAR = 0, + mjDEPTH_ZEROFAR = 1, +} +public enum mjtFontScale : int{ + mjFONTSCALE_50 = 50, + mjFONTSCALE_100 = 100, + mjFONTSCALE_150 = 150, + mjFONTSCALE_200 = 200, + mjFONTSCALE_250 = 250, + mjFONTSCALE_300 = 300, +} +public enum mjtFont : int{ + mjFONT_NORMAL = 0, + mjFONT_SHADOW = 1, + mjFONT_BIG = 2, +} +public enum mjtButton : int{ + mjBUTTON_NONE = 0, + mjBUTTON_LEFT = 1, + mjBUTTON_RIGHT = 2, + mjBUTTON_MIDDLE = 3, +} +public enum mjtEvent : int{ + mjEVENT_NONE = 0, + mjEVENT_MOVE = 1, + mjEVENT_PRESS = 2, + mjEVENT_RELEASE = 3, + mjEVENT_SCROLL = 4, + mjEVENT_KEY = 5, + mjEVENT_RESIZE = 6, + mjEVENT_REDRAW = 7, + mjEVENT_FILESDROP = 8, +} +public enum mjtItem : int{ + mjITEM_END = -2, + mjITEM_SECTION = -1, + mjITEM_SEPARATOR = 0, + mjITEM_STATIC = 1, + mjITEM_BUTTON = 2, + mjITEM_CHECKINT = 3, + mjITEM_CHECKBYTE = 4, + mjITEM_RADIO = 5, + mjITEM_RADIOLINE = 6, + mjITEM_SELECT = 7, + mjITEM_SLIDERINT = 8, + mjITEM_SLIDERNUM = 9, + mjITEM_EDITINT = 10, + mjITEM_EDITNUM = 11, + mjITEM_EDITFLOAT = 12, + mjITEM_EDITTXT = 13, + mjNITEM = 14, +} +public enum mjtSection : int{ + mjSECT_CLOSED = 0, + mjSECT_OPEN = 1, + mjSECT_FIXED = 2, +} -// -----------------------------struct declarations----------------------------- +// -------------------------------struct declarations--------------------------- +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjLROpt_ { + public int mode; + public int useexisting; + public int uselimit; + public double accel; + public double maxforce; + public double timeconst; + public double timestep; + public double inttotal; + public double interval; + public double tolrange; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjCache_ { + public void* impl_; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjOption_ { + public double timestep; + public double impratio; + public double tolerance; + public double ls_tolerance; + public double noslip_tolerance; + public double ccd_tolerance; + public double sleep_tolerance; + public fixed double gravity[3]; + public fixed double wind[3]; + public fixed double magnetic[3]; + public double density; + public double viscosity; + public double o_margin; + public fixed double o_solref[2]; + public fixed double o_solimp[5]; + public fixed double o_friction[5]; + public int integrator; + public int cone; + public int jacobian; + public int solver; + public int iterations; + public int ls_iterations; + public int noslip_iterations; + public int ccd_iterations; + public int disableflags; + public int enableflags; + public int disableactuator; + public int sdf_initpoints; + public int sdf_iterations; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct global { + public int cameraid; + public int orthographic; + public float fovy; + public float ipd; + public float azimuth; + public float elevation; + public float linewidth; + public float glow; + public float realtime; + public int offwidth; + public int offheight; + public int ellipsoidinertia; + public int bvactive; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct quality { + public int shadowsize; + public int offsamples; + public int numslices; + public int numstacks; + public int numquads; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct headlight { + public fixed float ambient[3]; + public fixed float diffuse[3]; + public fixed float specular[3]; + public int active; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct map { + public float stiffness; + public float stiffnessrot; + public float force; + public float torque; + public float alpha; + public float fogstart; + public float fogend; + public float znear; + public float zfar; + public float haze; + public float shadowclip; + public float shadowscale; + public float actuatortendon; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct scale { + public float forcewidth; + public float contactwidth; + public float contactheight; + public float connect; + public float com; + public float camera; + public float light; + public float selectpoint; + public float jointlength; + public float jointwidth; + public float actuatorlength; + public float actuatorwidth; + public float framelength; + public float framewidth; + public float constraint; + public float slidercrank; + public float frustum; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct rgba { + public fixed float fog[4]; + public fixed float haze[4]; + public fixed float force[4]; + public fixed float inertia[4]; + public fixed float joint[4]; + public fixed float actuator[4]; + public fixed float actuatornegative[4]; + public fixed float actuatorpositive[4]; + public fixed float com[4]; + public fixed float camera[4]; + public fixed float light[4]; + public fixed float selectpoint[4]; + public fixed float connect[4]; + public fixed float contactpoint[4]; + public fixed float contactforce[4]; + public fixed float contactfriction[4]; + public fixed float contacttorque[4]; + public fixed float contactgap[4]; + public fixed float rangefinder[4]; + public fixed float constraint[4]; + public fixed float slidercrank[4]; + public fixed float crankbroken[4]; + public fixed float frustum[4]; + public fixed float bv[4]; + public fixed float bvactive[4]; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjVisual_ { + public global global; + public quality quality; + public headlight headlight; + public map map; + public scale scale; + public rgba rgba; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjStatistic_ { + public double meaninertia; + public double meanmass; + public double meansize; + public double extent; + public fixed double center[3]; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjModel_ { + public UInt64 nq; + public UInt64 nv; + public UInt64 nu; + public UInt64 na; + public UInt64 nbody; + public UInt64 nbvh; + public UInt64 nbvhstatic; + public UInt64 nbvhdynamic; + public UInt64 noct; + public UInt64 njnt; + public UInt64 ntree; + public UInt64 nM; + public UInt64 nB; + public UInt64 nC; + public UInt64 nD; + public UInt64 ngeom; + public UInt64 nsite; + public UInt64 ncam; + public UInt64 nlight; + public UInt64 nflex; + public UInt64 nflexnode; + public UInt64 nflexvert; + public UInt64 nflexedge; + public UInt64 nflexelem; + public UInt64 nflexelemdata; + public UInt64 nflexelemedge; + public UInt64 nflexshelldata; + public UInt64 nflexevpair; + public UInt64 nflextexcoord; + public UInt64 nJfe; + public UInt64 nJfv; + public UInt64 nmesh; + public UInt64 nmeshvert; + public UInt64 nmeshnormal; + public UInt64 nmeshtexcoord; + public UInt64 nmeshface; + public UInt64 nmeshgraph; + public UInt64 nmeshpoly; + public UInt64 nmeshpolyvert; + public UInt64 nmeshpolymap; + public UInt64 nskin; + public UInt64 nskinvert; + public UInt64 nskintexvert; + public UInt64 nskinface; + public UInt64 nskinbone; + public UInt64 nskinbonevert; + public UInt64 nhfield; + public UInt64 nhfielddata; + public UInt64 ntex; + public UInt64 ntexdata; + public UInt64 nmat; + public UInt64 npair; + public UInt64 nexclude; + public UInt64 neq; + public UInt64 ntendon; + public UInt64 nJten; + public UInt64 nwrap; + public UInt64 nsensor; + public UInt64 nnumeric; + public UInt64 nnumericdata; + public UInt64 ntext; + public UInt64 ntextdata; + public UInt64 ntuple; + public UInt64 ntupledata; + public UInt64 nkey; + public UInt64 nmocap; + public UInt64 nplugin; + public UInt64 npluginattr; + public UInt64 nuser_body; + public UInt64 nuser_jnt; + public UInt64 nuser_geom; + public UInt64 nuser_site; + public UInt64 nuser_cam; + public UInt64 nuser_tendon; + public UInt64 nuser_actuator; + public UInt64 nuser_sensor; + public UInt64 nnames; + public UInt64 npaths; + public UInt64 nnames_map; + public UInt64 nJmom; + public UInt64 ngravcomp; + public UInt64 nemax; + public UInt64 njmax; + public UInt64 nconmax; + public UInt64 nuserdata; + public UInt64 nsensordata; + public UInt64 npluginstate; + public UInt64 nhistory; + public UInt64 narena; + public UInt64 nbuffer; + public mjOption_ opt; + public mjVisual_ vis; + public mjStatistic_ stat; + public void* buffer; + public double* qpos0; + public double* qpos_spring; + public int* body_parentid; + public int* body_rootid; + public int* body_weldid; + public int* body_mocapid; + public int* body_jntnum; + public int* body_jntadr; + public int* body_dofnum; + public int* body_dofadr; + public int* body_treeid; + public int* body_geomnum; + public int* body_geomadr; + public byte* body_simple; + public byte* body_sameframe; + public double* body_pos; + public double* body_quat; + public double* body_ipos; + public double* body_iquat; + public double* body_mass; + public double* body_subtreemass; + public double* body_inertia; + public double* body_invweight0; + public double* body_gravcomp; + public double* body_margin; + public double* body_user; + public int* body_plugin; + public int* body_contype; + public int* body_conaffinity; + public int* body_bvhadr; + public int* body_bvhnum; + public int* bvh_depth; + public int* bvh_child; + public int* bvh_nodeid; + public double* bvh_aabb; + public int* oct_depth; + public int* oct_child; + public double* oct_aabb; + public double* oct_coeff; + public int* jnt_type; + public int* jnt_qposadr; + public int* jnt_dofadr; + public int* jnt_bodyid; + public int* jnt_group; + public byte* jnt_limited; + public byte* jnt_actfrclimited; + public byte* jnt_actgravcomp; + public double* jnt_solref; + public double* jnt_solimp; + public double* jnt_pos; + public double* jnt_axis; + public double* jnt_stiffness; + public double* jnt_stiffnesspoly; + public double* jnt_range; + public double* jnt_actfrcrange; + public double* jnt_margin; + public double* jnt_user; + public int* dof_bodyid; + public int* dof_jntid; + public int* dof_parentid; + public int* dof_treeid; + public int* dof_Madr; + public int* dof_simplenum; + public double* dof_solref; + public double* dof_solimp; + public double* dof_frictionloss; + public double* dof_armature; + public double* dof_damping; + public double* dof_dampingpoly; + public double* dof_invweight0; + public double* dof_M0; + public double* dof_length; + public int* tree_bodyadr; + public int* tree_bodynum; + public int* tree_dofadr; + public int* tree_dofnum; + public int* tree_sleep_policy; + public int* geom_type; + public int* geom_contype; + public int* geom_conaffinity; + public int* geom_condim; + public int* geom_bodyid; + public int* geom_dataid; + public int* geom_matid; + public int* geom_group; + public int* geom_priority; + public int* geom_plugin; + public byte* geom_sameframe; + public double* geom_solmix; + public double* geom_solref; + public double* geom_solimp; + public double* geom_size; + public double* geom_aabb; + public double* geom_rbound; + public double* geom_pos; + public double* geom_quat; + public double* geom_friction; + public double* geom_margin; + public double* geom_gap; + public double* geom_fluid; + public double* geom_user; + public float* geom_rgba; + public int* site_type; + public int* site_bodyid; + public int* site_matid; + public int* site_group; + public byte* site_sameframe; + public double* site_size; + public double* site_pos; + public double* site_quat; + public double* site_user; + public float* site_rgba; + public int* cam_mode; + public int* cam_bodyid; + public int* cam_targetbodyid; + public double* cam_pos; + public double* cam_quat; + public double* cam_poscom0; + public double* cam_pos0; + public double* cam_mat0; + public int* cam_projection; + public double* cam_fovy; + public double* cam_ipd; + public int* cam_resolution; + public int* cam_output; + public float* cam_sensorsize; + public float* cam_intrinsic; + public double* cam_user; + public int* light_mode; + public int* light_bodyid; + public int* light_targetbodyid; + public int* light_type; + public int* light_texid; + public byte* light_castshadow; + public float* light_bulbradius; + public float* light_intensity; + public float* light_range; + public byte* light_active; + public double* light_pos; + public double* light_dir; + public double* light_poscom0; + public double* light_pos0; + public double* light_dir0; + public float* light_attenuation; + public float* light_cutoff; + public float* light_exponent; + public float* light_ambient; + public float* light_diffuse; + public float* light_specular; + public int* flex_contype; + public int* flex_conaffinity; + public int* flex_condim; + public int* flex_priority; + public double* flex_solmix; + public double* flex_solref; + public double* flex_solimp; + public double* flex_friction; + public double* flex_margin; + public double* flex_gap; + public byte* flex_internal; + public int* flex_selfcollide; + public int* flex_activelayers; + public int* flex_passive; + public int* flex_dim; + public int* flex_matid; + public int* flex_group; + public int* flex_interp; + public int* flex_nodeadr; + public int* flex_nodenum; + public int* flex_vertadr; + public int* flex_vertnum; + public int* flex_edgeadr; + public int* flex_edgenum; + public int* flex_elemadr; + public int* flex_elemnum; + public int* flex_elemdataadr; + public int* flex_elemedgeadr; + public int* flex_shellnum; + public int* flex_shelldataadr; + public int* flex_evpairadr; + public int* flex_evpairnum; + public int* flex_texcoordadr; + public int* flex_nodebodyid; + public int* flex_vertbodyid; + public int* flex_vertedgeadr; + public int* flex_vertedgenum; + public int* flex_vertedge; + public int* flex_edge; + public int* flex_edgeflap; + public int* flex_elem; + public int* flex_elemtexcoord; + public int* flex_elemedge; + public int* flex_elemlayer; + public int* flex_shell; + public int* flex_evpair; + public double* flex_vert; + public double* flex_vert0; + public double* flex_vertmetric; + public double* flex_node; + public double* flex_node0; + public double* flexedge_length0; + public double* flexedge_invweight0; + public double* flex_radius; + public double* flex_size; + public double* flex_stiffness; + public double* flex_bending; + public double* flex_damping; + public double* flex_edgestiffness; + public double* flex_edgedamping; + public int* flex_edgeequality; + public byte* flex_rigid; + public byte* flexedge_rigid; + public byte* flex_centered; + public byte* flex_flatskin; + public int* flex_bvhadr; + public int* flex_bvhnum; + public int* flexedge_J_rownnz; + public int* flexedge_J_rowadr; + public int* flexedge_J_colind; + public int* flexvert_J_rownnz; + public int* flexvert_J_rowadr; + public int* flexvert_J_colind; + public float* flex_rgba; + public float* flex_texcoord; + public int* mesh_vertadr; + public int* mesh_vertnum; + public int* mesh_faceadr; + public int* mesh_facenum; + public int* mesh_bvhadr; + public int* mesh_bvhnum; + public int* mesh_octadr; + public int* mesh_octnum; + public int* mesh_normaladr; + public int* mesh_normalnum; + public int* mesh_texcoordadr; + public int* mesh_texcoordnum; + public int* mesh_graphadr; + public float* mesh_vert; + public float* mesh_normal; + public float* mesh_texcoord; + public int* mesh_face; + public int* mesh_facenormal; + public int* mesh_facetexcoord; + public int* mesh_graph; + public double* mesh_scale; + public double* mesh_pos; + public double* mesh_quat; + public int* mesh_pathadr; + public int* mesh_polynum; + public int* mesh_polyadr; + public double* mesh_polynormal; + public int* mesh_polyvertadr; + public int* mesh_polyvertnum; + public int* mesh_polyvert; + public int* mesh_polymapadr; + public int* mesh_polymapnum; + public int* mesh_polymap; + public int* skin_matid; + public int* skin_group; + public float* skin_rgba; + public float* skin_inflate; + public int* skin_vertadr; + public int* skin_vertnum; + public int* skin_texcoordadr; + public int* skin_faceadr; + public int* skin_facenum; + public int* skin_boneadr; + public int* skin_bonenum; + public float* skin_vert; + public float* skin_texcoord; + public int* skin_face; + public int* skin_bonevertadr; + public int* skin_bonevertnum; + public float* skin_bonebindpos; + public float* skin_bonebindquat; + public int* skin_bonebodyid; + public int* skin_bonevertid; + public float* skin_bonevertweight; + public int* skin_pathadr; + public double* hfield_size; + public int* hfield_nrow; + public int* hfield_ncol; + public int* hfield_adr; + public float* hfield_data; + public int* hfield_pathadr; + public int* tex_type; + public int* tex_colorspace; + public int* tex_height; + public int* tex_width; + public int* tex_nchannel; + public UInt64* tex_adr; + public byte* tex_data; + public int* tex_pathadr; + public int* mat_texid; + public byte* mat_texuniform; + public float* mat_texrepeat; + public float* mat_emission; + public float* mat_specular; + public float* mat_shininess; + public float* mat_reflectance; + public float* mat_metallic; + public float* mat_roughness; + public float* mat_rgba; + public int* pair_dim; + public int* pair_geom1; + public int* pair_geom2; + public int* pair_signature; + public double* pair_solref; + public double* pair_solreffriction; + public double* pair_solimp; + public double* pair_margin; + public double* pair_gap; + public double* pair_friction; + public int* exclude_signature; + public int* eq_type; + public int* eq_obj1id; + public int* eq_obj2id; + public int* eq_objtype; + public byte* eq_active0; + public double* eq_solref; + public double* eq_solimp; + public double* eq_data; + public int* tendon_adr; + public int* tendon_num; + public int* tendon_matid; + public int* tendon_group; + public int* tendon_treenum; + public int* tendon_treeid; + public int* ten_J_rownnz; + public int* ten_J_rowadr; + public int* ten_J_colind; + public byte* tendon_limited; + public byte* tendon_actfrclimited; + public double* tendon_width; + public double* tendon_solref_lim; + public double* tendon_solimp_lim; + public double* tendon_solref_fri; + public double* tendon_solimp_fri; + public double* tendon_range; + public double* tendon_actfrcrange; + public double* tendon_margin; + public double* tendon_stiffness; + public double* tendon_stiffnesspoly; + public double* tendon_damping; + public double* tendon_dampingpoly; + public double* tendon_armature; + public double* tendon_frictionloss; + public double* tendon_lengthspring; + public double* tendon_length0; + public double* tendon_invweight0; + public double* tendon_user; + public float* tendon_rgba; + public int* wrap_type; + public int* wrap_objid; + public double* wrap_prm; + public int* actuator_trntype; + public int* actuator_dyntype; + public int* actuator_gaintype; + public int* actuator_biastype; + public int* actuator_trnid; + public int* actuator_actadr; + public int* actuator_actnum; + public int* actuator_group; + public int* actuator_history; + public int* actuator_historyadr; + public double* actuator_delay; + public byte* actuator_ctrllimited; + public byte* actuator_forcelimited; + public byte* actuator_actlimited; + public double* actuator_dynprm; + public double* actuator_gainprm; + public double* actuator_biasprm; + public byte* actuator_actearly; + public double* actuator_ctrlrange; + public double* actuator_forcerange; + public double* actuator_actrange; + public double* actuator_gear; + public double* actuator_cranklength; + public double* actuator_acc0; + public double* actuator_length0; + public double* actuator_lengthrange; + public double* actuator_user; + public int* actuator_plugin; + public int* sensor_type; + public int* sensor_datatype; + public int* sensor_needstage; + public int* sensor_objtype; + public int* sensor_objid; + public int* sensor_reftype; + public int* sensor_refid; + public int* sensor_intprm; + public int* sensor_dim; + public int* sensor_adr; + public double* sensor_cutoff; + public double* sensor_noise; + public int* sensor_history; + public int* sensor_historyadr; + public double* sensor_delay; + public double* sensor_interval; + public double* sensor_user; + public int* sensor_plugin; + public int* plugin; + public int* plugin_stateadr; + public int* plugin_statenum; + public char* plugin_attr; + public int* plugin_attradr; + public int* numeric_adr; + public int* numeric_size; + public double* numeric_data; + public int* text_adr; + public int* text_size; + public char* text_data; + public int* tuple_adr; + public int* tuple_size; + public int* tuple_objtype; + public int* tuple_objid; + public double* tuple_objprm; + public double* key_time; + public double* key_qpos; + public double* key_qvel; + public double* key_act; + public double* key_mpos; + public double* key_mquat; + public double* key_ctrl; + public int* name_bodyadr; + public int* name_jntadr; + public int* name_geomadr; + public int* name_siteadr; + public int* name_camadr; + public int* name_lightadr; + public int* name_flexadr; + public int* name_meshadr; + public int* name_skinadr; + public int* name_hfieldadr; + public int* name_texadr; + public int* name_matadr; + public int* name_pairadr; + public int* name_excludeadr; + public int* name_eqadr; + public int* name_tendonadr; + public int* name_actuatoradr; + public int* name_sensoradr; + public int* name_numericadr; + public int* name_textadr; + public int* name_tupleadr; + public int* name_keyadr; + public int* name_pluginadr; + public char* names; + public int* names_map; + public char* paths; + public int* B_rownnz; + public int* B_rowadr; + public int* B_colind; + public int* M_rownnz; + public int* M_rowadr; + public int* M_colind; + public int* mapM2M; + public int* D_rownnz; + public int* D_rowadr; + public int* D_diag; + public int* D_colind; + public int* mapM2D; + public int* mapD2M; + public UInt64 signature; +} [StructLayout(LayoutKind.Sequential)] public unsafe struct mjContact_ { @@ -766,142 +1543,142 @@ public unsafe struct mjSolverStat_ { [StructLayout(LayoutKind.Sequential)] public unsafe struct mjData_ { - public Int64 narena; - public Int64 nbuffer; + public UInt64 narena; + public UInt64 nbuffer; public int nplugin; public UIntPtr pstack; public UIntPtr pbase; public UIntPtr parena; - public Int64 maxuse_stack; - public Int64 maxuse_threadstack0; - public Int64 maxuse_threadstack1; - public Int64 maxuse_threadstack2; - public Int64 maxuse_threadstack3; - public Int64 maxuse_threadstack4; - public Int64 maxuse_threadstack5; - public Int64 maxuse_threadstack6; - public Int64 maxuse_threadstack7; - public Int64 maxuse_threadstack8; - public Int64 maxuse_threadstack9; - public Int64 maxuse_threadstack10; - public Int64 maxuse_threadstack11; - public Int64 maxuse_threadstack12; - public Int64 maxuse_threadstack13; - public Int64 maxuse_threadstack14; - public Int64 maxuse_threadstack15; - public Int64 maxuse_threadstack16; - public Int64 maxuse_threadstack17; - public Int64 maxuse_threadstack18; - public Int64 maxuse_threadstack19; - public Int64 maxuse_threadstack20; - public Int64 maxuse_threadstack21; - public Int64 maxuse_threadstack22; - public Int64 maxuse_threadstack23; - public Int64 maxuse_threadstack24; - public Int64 maxuse_threadstack25; - public Int64 maxuse_threadstack26; - public Int64 maxuse_threadstack27; - public Int64 maxuse_threadstack28; - public Int64 maxuse_threadstack29; - public Int64 maxuse_threadstack30; - public Int64 maxuse_threadstack31; - public Int64 maxuse_threadstack32; - public Int64 maxuse_threadstack33; - public Int64 maxuse_threadstack34; - public Int64 maxuse_threadstack35; - public Int64 maxuse_threadstack36; - public Int64 maxuse_threadstack37; - public Int64 maxuse_threadstack38; - public Int64 maxuse_threadstack39; - public Int64 maxuse_threadstack40; - public Int64 maxuse_threadstack41; - public Int64 maxuse_threadstack42; - public Int64 maxuse_threadstack43; - public Int64 maxuse_threadstack44; - public Int64 maxuse_threadstack45; - public Int64 maxuse_threadstack46; - public Int64 maxuse_threadstack47; - public Int64 maxuse_threadstack48; - public Int64 maxuse_threadstack49; - public Int64 maxuse_threadstack50; - public Int64 maxuse_threadstack51; - public Int64 maxuse_threadstack52; - public Int64 maxuse_threadstack53; - public Int64 maxuse_threadstack54; - public Int64 maxuse_threadstack55; - public Int64 maxuse_threadstack56; - public Int64 maxuse_threadstack57; - public Int64 maxuse_threadstack58; - public Int64 maxuse_threadstack59; - public Int64 maxuse_threadstack60; - public Int64 maxuse_threadstack61; - public Int64 maxuse_threadstack62; - public Int64 maxuse_threadstack63; - public Int64 maxuse_threadstack64; - public Int64 maxuse_threadstack65; - public Int64 maxuse_threadstack66; - public Int64 maxuse_threadstack67; - public Int64 maxuse_threadstack68; - public Int64 maxuse_threadstack69; - public Int64 maxuse_threadstack70; - public Int64 maxuse_threadstack71; - public Int64 maxuse_threadstack72; - public Int64 maxuse_threadstack73; - public Int64 maxuse_threadstack74; - public Int64 maxuse_threadstack75; - public Int64 maxuse_threadstack76; - public Int64 maxuse_threadstack77; - public Int64 maxuse_threadstack78; - public Int64 maxuse_threadstack79; - public Int64 maxuse_threadstack80; - public Int64 maxuse_threadstack81; - public Int64 maxuse_threadstack82; - public Int64 maxuse_threadstack83; - public Int64 maxuse_threadstack84; - public Int64 maxuse_threadstack85; - public Int64 maxuse_threadstack86; - public Int64 maxuse_threadstack87; - public Int64 maxuse_threadstack88; - public Int64 maxuse_threadstack89; - public Int64 maxuse_threadstack90; - public Int64 maxuse_threadstack91; - public Int64 maxuse_threadstack92; - public Int64 maxuse_threadstack93; - public Int64 maxuse_threadstack94; - public Int64 maxuse_threadstack95; - public Int64 maxuse_threadstack96; - public Int64 maxuse_threadstack97; - public Int64 maxuse_threadstack98; - public Int64 maxuse_threadstack99; - public Int64 maxuse_threadstack100; - public Int64 maxuse_threadstack101; - public Int64 maxuse_threadstack102; - public Int64 maxuse_threadstack103; - public Int64 maxuse_threadstack104; - public Int64 maxuse_threadstack105; - public Int64 maxuse_threadstack106; - public Int64 maxuse_threadstack107; - public Int64 maxuse_threadstack108; - public Int64 maxuse_threadstack109; - public Int64 maxuse_threadstack110; - public Int64 maxuse_threadstack111; - public Int64 maxuse_threadstack112; - public Int64 maxuse_threadstack113; - public Int64 maxuse_threadstack114; - public Int64 maxuse_threadstack115; - public Int64 maxuse_threadstack116; - public Int64 maxuse_threadstack117; - public Int64 maxuse_threadstack118; - public Int64 maxuse_threadstack119; - public Int64 maxuse_threadstack120; - public Int64 maxuse_threadstack121; - public Int64 maxuse_threadstack122; - public Int64 maxuse_threadstack123; - public Int64 maxuse_threadstack124; - public Int64 maxuse_threadstack125; - public Int64 maxuse_threadstack126; - public Int64 maxuse_threadstack127; - public Int64 maxuse_arena; + public UInt64 maxuse_stack; + public UInt64 maxuse_threadstack0; + public UInt64 maxuse_threadstack1; + public UInt64 maxuse_threadstack2; + public UInt64 maxuse_threadstack3; + public UInt64 maxuse_threadstack4; + public UInt64 maxuse_threadstack5; + public UInt64 maxuse_threadstack6; + public UInt64 maxuse_threadstack7; + public UInt64 maxuse_threadstack8; + public UInt64 maxuse_threadstack9; + public UInt64 maxuse_threadstack10; + public UInt64 maxuse_threadstack11; + public UInt64 maxuse_threadstack12; + public UInt64 maxuse_threadstack13; + public UInt64 maxuse_threadstack14; + public UInt64 maxuse_threadstack15; + public UInt64 maxuse_threadstack16; + public UInt64 maxuse_threadstack17; + public UInt64 maxuse_threadstack18; + public UInt64 maxuse_threadstack19; + public UInt64 maxuse_threadstack20; + public UInt64 maxuse_threadstack21; + public UInt64 maxuse_threadstack22; + public UInt64 maxuse_threadstack23; + public UInt64 maxuse_threadstack24; + public UInt64 maxuse_threadstack25; + public UInt64 maxuse_threadstack26; + public UInt64 maxuse_threadstack27; + public UInt64 maxuse_threadstack28; + public UInt64 maxuse_threadstack29; + public UInt64 maxuse_threadstack30; + public UInt64 maxuse_threadstack31; + public UInt64 maxuse_threadstack32; + public UInt64 maxuse_threadstack33; + public UInt64 maxuse_threadstack34; + public UInt64 maxuse_threadstack35; + public UInt64 maxuse_threadstack36; + public UInt64 maxuse_threadstack37; + public UInt64 maxuse_threadstack38; + public UInt64 maxuse_threadstack39; + public UInt64 maxuse_threadstack40; + public UInt64 maxuse_threadstack41; + public UInt64 maxuse_threadstack42; + public UInt64 maxuse_threadstack43; + public UInt64 maxuse_threadstack44; + public UInt64 maxuse_threadstack45; + public UInt64 maxuse_threadstack46; + public UInt64 maxuse_threadstack47; + public UInt64 maxuse_threadstack48; + public UInt64 maxuse_threadstack49; + public UInt64 maxuse_threadstack50; + public UInt64 maxuse_threadstack51; + public UInt64 maxuse_threadstack52; + public UInt64 maxuse_threadstack53; + public UInt64 maxuse_threadstack54; + public UInt64 maxuse_threadstack55; + public UInt64 maxuse_threadstack56; + public UInt64 maxuse_threadstack57; + public UInt64 maxuse_threadstack58; + public UInt64 maxuse_threadstack59; + public UInt64 maxuse_threadstack60; + public UInt64 maxuse_threadstack61; + public UInt64 maxuse_threadstack62; + public UInt64 maxuse_threadstack63; + public UInt64 maxuse_threadstack64; + public UInt64 maxuse_threadstack65; + public UInt64 maxuse_threadstack66; + public UInt64 maxuse_threadstack67; + public UInt64 maxuse_threadstack68; + public UInt64 maxuse_threadstack69; + public UInt64 maxuse_threadstack70; + public UInt64 maxuse_threadstack71; + public UInt64 maxuse_threadstack72; + public UInt64 maxuse_threadstack73; + public UInt64 maxuse_threadstack74; + public UInt64 maxuse_threadstack75; + public UInt64 maxuse_threadstack76; + public UInt64 maxuse_threadstack77; + public UInt64 maxuse_threadstack78; + public UInt64 maxuse_threadstack79; + public UInt64 maxuse_threadstack80; + public UInt64 maxuse_threadstack81; + public UInt64 maxuse_threadstack82; + public UInt64 maxuse_threadstack83; + public UInt64 maxuse_threadstack84; + public UInt64 maxuse_threadstack85; + public UInt64 maxuse_threadstack86; + public UInt64 maxuse_threadstack87; + public UInt64 maxuse_threadstack88; + public UInt64 maxuse_threadstack89; + public UInt64 maxuse_threadstack90; + public UInt64 maxuse_threadstack91; + public UInt64 maxuse_threadstack92; + public UInt64 maxuse_threadstack93; + public UInt64 maxuse_threadstack94; + public UInt64 maxuse_threadstack95; + public UInt64 maxuse_threadstack96; + public UInt64 maxuse_threadstack97; + public UInt64 maxuse_threadstack98; + public UInt64 maxuse_threadstack99; + public UInt64 maxuse_threadstack100; + public UInt64 maxuse_threadstack101; + public UInt64 maxuse_threadstack102; + public UInt64 maxuse_threadstack103; + public UInt64 maxuse_threadstack104; + public UInt64 maxuse_threadstack105; + public UInt64 maxuse_threadstack106; + public UInt64 maxuse_threadstack107; + public UInt64 maxuse_threadstack108; + public UInt64 maxuse_threadstack109; + public UInt64 maxuse_threadstack110; + public UInt64 maxuse_threadstack111; + public UInt64 maxuse_threadstack112; + public UInt64 maxuse_threadstack113; + public UInt64 maxuse_threadstack114; + public UInt64 maxuse_threadstack115; + public UInt64 maxuse_threadstack116; + public UInt64 maxuse_threadstack117; + public UInt64 maxuse_threadstack118; + public UInt64 maxuse_threadstack119; + public UInt64 maxuse_threadstack120; + public UInt64 maxuse_threadstack121; + public UInt64 maxuse_threadstack122; + public UInt64 maxuse_threadstack123; + public UInt64 maxuse_threadstack124; + public UInt64 maxuse_threadstack125; + public UInt64 maxuse_threadstack126; + public UInt64 maxuse_threadstack127; + public UInt64 maxuse_arena; public int maxuse_con; public int maxuse_efc; public mjSolverStat_ solver0; @@ -5112,819 +5889,6 @@ public unsafe struct mjData_ { public UInt64 signature; } -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjLROpt_ { - public int mode; - public int useexisting; - public int uselimit; - public double accel; - public double maxforce; - public double timeconst; - public double timestep; - public double inttotal; - public double interval; - public double tolrange; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjCache_ { - public void* impl_; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct _mjVFS -{ - public void* impl_; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjOption_ { - public double timestep; - public double impratio; - public double tolerance; - public double ls_tolerance; - public double noslip_tolerance; - public double ccd_tolerance; - public double sleep_tolerance; - public fixed double gravity[3]; - public fixed double wind[3]; - public fixed double magnetic[3]; - public double density; - public double viscosity; - public double o_margin; - public fixed double o_solref[2]; - public fixed double o_solimp[5]; - public fixed double o_friction[5]; - public int integrator; - public int cone; - public int jacobian; - public int solver; - public int iterations; - public int ls_iterations; - public int noslip_iterations; - public int ccd_iterations; - public int disableflags; - public int enableflags; - public int disableactuator; - public int sdf_initpoints; - public int sdf_iterations; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct global { - public int cameraid; - public int orthographic; - public float fovy; - public float ipd; - public float azimuth; - public float elevation; - public float linewidth; - public float glow; - public float realtime; - public int offwidth; - public int offheight; - public int ellipsoidinertia; - public int bvactive; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct quality { - public int shadowsize; - public int offsamples; - public int numslices; - public int numstacks; - public int numquads; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct headlight { - public fixed float ambient[3]; - public fixed float diffuse[3]; - public fixed float specular[3]; - public int active; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct map { - public float stiffness; - public float stiffnessrot; - public float force; - public float torque; - public float alpha; - public float fogstart; - public float fogend; - public float znear; - public float zfar; - public float haze; - public float shadowclip; - public float shadowscale; - public float actuatortendon; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct scale { - public float forcewidth; - public float contactwidth; - public float contactheight; - public float connect; - public float com; - public float camera; - public float light; - public float selectpoint; - public float jointlength; - public float jointwidth; - public float actuatorlength; - public float actuatorwidth; - public float framelength; - public float framewidth; - public float constraint; - public float slidercrank; - public float frustum; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct rgba { - public fixed float fog[4]; - public fixed float haze[4]; - public fixed float force[4]; - public fixed float inertia[4]; - public fixed float joint[4]; - public fixed float actuator[4]; - public fixed float actuatornegative[4]; - public fixed float actuatorpositive[4]; - public fixed float com[4]; - public fixed float camera[4]; - public fixed float light[4]; - public fixed float selectpoint[4]; - public fixed float connect[4]; - public fixed float contactpoint[4]; - public fixed float contactforce[4]; - public fixed float contactfriction[4]; - public fixed float contacttorque[4]; - public fixed float contactgap[4]; - public fixed float rangefinder[4]; - public fixed float constraint[4]; - public fixed float slidercrank[4]; - public fixed float crankbroken[4]; - public fixed float frustum[4]; - public fixed float bv[4]; - public fixed float bvactive[4]; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjVisual_ { - public global global; - public quality quality; - public headlight headlight; - public map map; - public scale scale; - public rgba rgba; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjStatistic_ { - public double meaninertia; - public double meanmass; - public double meansize; - public double extent; - public fixed double center[3]; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjModel_ { - public Int64 nq; - public Int64 nv; - public Int64 nu; - public Int64 na; - public Int64 nbody; - public Int64 nbvh; - public Int64 nbvhstatic; - public Int64 nbvhdynamic; - public Int64 noct; - public Int64 njnt; - public Int64 ntree; - public Int64 nM; - public Int64 nB; - public Int64 nC; - public Int64 nD; - public Int64 ngeom; - public Int64 nsite; - public Int64 ncam; - public Int64 nlight; - public Int64 nflex; - public Int64 nflexnode; - public Int64 nflexvert; - public Int64 nflexedge; - public Int64 nflexelem; - public Int64 nflexelemdata; - public Int64 nflexelemedge; - public Int64 nflexshelldata; - public Int64 nflexevpair; - public Int64 nflextexcoord; - public Int64 nJfe; - public Int64 nJfv; - public Int64 nmesh; - public Int64 nmeshvert; - public Int64 nmeshnormal; - public Int64 nmeshtexcoord; - public Int64 nmeshface; - public Int64 nmeshgraph; - public Int64 nmeshpoly; - public Int64 nmeshpolyvert; - public Int64 nmeshpolymap; - public Int64 nskin; - public Int64 nskinvert; - public Int64 nskintexvert; - public Int64 nskinface; - public Int64 nskinbone; - public Int64 nskinbonevert; - public Int64 nhfield; - public Int64 nhfielddata; - public Int64 ntex; - public Int64 ntexdata; - public Int64 nmat; - public Int64 npair; - public Int64 nexclude; - public Int64 neq; - public Int64 ntendon; - public Int64 nJten; - public Int64 nwrap; - public Int64 nsensor; - public Int64 nnumeric; - public Int64 nnumericdata; - public Int64 ntext; - public Int64 ntextdata; - public Int64 ntuple; - public Int64 ntupledata; - public Int64 nkey; - public Int64 nmocap; - public Int64 nplugin; - public Int64 npluginattr; - public Int64 nuser_body; - public Int64 nuser_jnt; - public Int64 nuser_geom; - public Int64 nuser_site; - public Int64 nuser_cam; - public Int64 nuser_tendon; - public Int64 nuser_actuator; - public Int64 nuser_sensor; - public Int64 nnames; - public Int64 npaths; - public Int64 nnames_map; - public Int64 nJmom; - public Int64 ngravcomp; - public Int64 nemax; - public Int64 njmax; - public Int64 nconmax; - public Int64 nuserdata; - public Int64 nsensordata; - public Int64 npluginstate; - public Int64 nhistory; - public Int64 narena; - public Int64 nbuffer; - public mjOption_ opt; - public mjVisual_ vis; - public mjStatistic_ stat; - public void* buffer; - public double* qpos0; - public double* qpos_spring; - public int* body_parentid; - public int* body_rootid; - public int* body_weldid; - public int* body_mocapid; - public int* body_jntnum; - public int* body_jntadr; - public int* body_dofnum; - public int* body_dofadr; - public int* body_treeid; - public int* body_geomnum; - public int* body_geomadr; - public byte* body_simple; - public byte* body_sameframe; - public double* body_pos; - public double* body_quat; - public double* body_ipos; - public double* body_iquat; - public double* body_mass; - public double* body_subtreemass; - public double* body_inertia; - public double* body_invweight0; - public double* body_gravcomp; - public double* body_margin; - public double* body_user; - public int* body_plugin; - public int* body_contype; - public int* body_conaffinity; - public int* body_bvhadr; - public int* body_bvhnum; - public int* bvh_depth; - public int* bvh_child; - public int* bvh_nodeid; - public double* bvh_aabb; - public int* oct_depth; - public int* oct_child; - public double* oct_aabb; - public double* oct_coeff; - public int* jnt_type; - public int* jnt_qposadr; - public int* jnt_dofadr; - public int* jnt_bodyid; - public int* jnt_group; - public byte* jnt_limited; - public byte* jnt_actfrclimited; - public byte* jnt_actgravcomp; - public double* jnt_solref; - public double* jnt_solimp; - public double* jnt_pos; - public double* jnt_axis; - public double* jnt_stiffness; - public double* jnt_stiffnesspoly; - public double* jnt_range; - public double* jnt_actfrcrange; - public double* jnt_margin; - public double* jnt_user; - public int* dof_bodyid; - public int* dof_jntid; - public int* dof_parentid; - public int* dof_treeid; - public int* dof_Madr; - public int* dof_simplenum; - public double* dof_solref; - public double* dof_solimp; - public double* dof_frictionloss; - public double* dof_armature; - public double* dof_damping; - public double* dof_dampingpoly; - public double* dof_invweight0; - public double* dof_M0; - public double* dof_length; - public int* tree_bodyadr; - public int* tree_bodynum; - public int* tree_dofadr; - public int* tree_dofnum; - public int* tree_sleep_policy; - public int* geom_type; - public int* geom_contype; - public int* geom_conaffinity; - public int* geom_condim; - public int* geom_bodyid; - public int* geom_dataid; - public int* geom_matid; - public int* geom_group; - public int* geom_priority; - public int* geom_plugin; - public byte* geom_sameframe; - public double* geom_solmix; - public double* geom_solref; - public double* geom_solimp; - public double* geom_size; - public double* geom_aabb; - public double* geom_rbound; - public double* geom_pos; - public double* geom_quat; - public double* geom_friction; - public double* geom_margin; - public double* geom_gap; - public double* geom_fluid; - public double* geom_user; - public float* geom_rgba; - public int* site_type; - public int* site_bodyid; - public int* site_matid; - public int* site_group; - public byte* site_sameframe; - public double* site_size; - public double* site_pos; - public double* site_quat; - public double* site_user; - public float* site_rgba; - public int* cam_mode; - public int* cam_bodyid; - public int* cam_targetbodyid; - public double* cam_pos; - public double* cam_quat; - public double* cam_poscom0; - public double* cam_pos0; - public double* cam_mat0; - public int* cam_projection; - public double* cam_fovy; - public double* cam_ipd; - public int* cam_resolution; - public int* cam_output; - public float* cam_sensorsize; - public float* cam_intrinsic; - public double* cam_user; - public int* light_mode; - public int* light_bodyid; - public int* light_targetbodyid; - public int* light_type; - public int* light_texid; - public byte* light_castshadow; - public float* light_bulbradius; - public float* light_intensity; - public float* light_range; - public byte* light_active; - public double* light_pos; - public double* light_dir; - public double* light_poscom0; - public double* light_pos0; - public double* light_dir0; - public float* light_attenuation; - public float* light_cutoff; - public float* light_exponent; - public float* light_ambient; - public float* light_diffuse; - public float* light_specular; - public int* flex_contype; - public int* flex_conaffinity; - public int* flex_condim; - public int* flex_priority; - public double* flex_solmix; - public double* flex_solref; - public double* flex_solimp; - public double* flex_friction; - public double* flex_margin; - public double* flex_gap; - public byte* flex_internal; - public int* flex_selfcollide; - public int* flex_activelayers; - public int* flex_passive; - public int* flex_dim; - public int* flex_matid; - public int* flex_group; - public int* flex_interp; - public int* flex_nodeadr; - public int* flex_nodenum; - public int* flex_vertadr; - public int* flex_vertnum; - public int* flex_edgeadr; - public int* flex_edgenum; - public int* flex_elemadr; - public int* flex_elemnum; - public int* flex_elemdataadr; - public int* flex_elemedgeadr; - public int* flex_shellnum; - public int* flex_shelldataadr; - public int* flex_evpairadr; - public int* flex_evpairnum; - public int* flex_texcoordadr; - public int* flex_nodebodyid; - public int* flex_vertbodyid; - public int* flex_vertedgeadr; - public int* flex_vertedgenum; - public int* flex_vertedge; - public int* flex_edge; - public int* flex_edgeflap; - public int* flex_elem; - public int* flex_elemtexcoord; - public int* flex_elemedge; - public int* flex_elemlayer; - public int* flex_shell; - public int* flex_evpair; - public double* flex_vert; - public double* flex_vert0; - public double* flex_vertmetric; - public double* flex_node; - public double* flex_node0; - public double* flexedge_length0; - public double* flexedge_invweight0; - public double* flex_radius; - public double* flex_size; - public double* flex_stiffness; - public double* flex_bending; - public double* flex_damping; - public double* flex_edgestiffness; - public double* flex_edgedamping; - public int* flex_edgeequality; - public byte* flex_rigid; - public byte* flexedge_rigid; - public byte* flex_centered; - public byte* flex_flatskin; - public int* flex_bvhadr; - public int* flex_bvhnum; - public int* flexedge_J_rownnz; - public int* flexedge_J_rowadr; - public int* flexedge_J_colind; - public int* flexvert_J_rownnz; - public int* flexvert_J_rowadr; - public int* flexvert_J_colind; - public float* flex_rgba; - public float* flex_texcoord; - public int* mesh_vertadr; - public int* mesh_vertnum; - public int* mesh_faceadr; - public int* mesh_facenum; - public int* mesh_bvhadr; - public int* mesh_bvhnum; - public int* mesh_octadr; - public int* mesh_octnum; - public int* mesh_normaladr; - public int* mesh_normalnum; - public int* mesh_texcoordadr; - public int* mesh_texcoordnum; - public int* mesh_graphadr; - public float* mesh_vert; - public float* mesh_normal; - public float* mesh_texcoord; - public int* mesh_face; - public int* mesh_facenormal; - public int* mesh_facetexcoord; - public int* mesh_graph; - public double* mesh_scale; - public double* mesh_pos; - public double* mesh_quat; - public int* mesh_pathadr; - public int* mesh_polynum; - public int* mesh_polyadr; - public double* mesh_polynormal; - public int* mesh_polyvertadr; - public int* mesh_polyvertnum; - public int* mesh_polyvert; - public int* mesh_polymapadr; - public int* mesh_polymapnum; - public int* mesh_polymap; - public int* skin_matid; - public int* skin_group; - public float* skin_rgba; - public float* skin_inflate; - public int* skin_vertadr; - public int* skin_vertnum; - public int* skin_texcoordadr; - public int* skin_faceadr; - public int* skin_facenum; - public int* skin_boneadr; - public int* skin_bonenum; - public float* skin_vert; - public float* skin_texcoord; - public int* skin_face; - public int* skin_bonevertadr; - public int* skin_bonevertnum; - public float* skin_bonebindpos; - public float* skin_bonebindquat; - public int* skin_bonebodyid; - public int* skin_bonevertid; - public float* skin_bonevertweight; - public int* skin_pathadr; - public double* hfield_size; - public int* hfield_nrow; - public int* hfield_ncol; - public int* hfield_adr; - public float* hfield_data; - public int* hfield_pathadr; - public int* tex_type; - public int* tex_colorspace; - public int* tex_height; - public int* tex_width; - public int* tex_nchannel; - public Int64* tex_adr; - public byte* tex_data; - public int* tex_pathadr; - public int* mat_texid; - public byte* mat_texuniform; - public float* mat_texrepeat; - public float* mat_emission; - public float* mat_specular; - public float* mat_shininess; - public float* mat_reflectance; - public float* mat_metallic; - public float* mat_roughness; - public float* mat_rgba; - public int* pair_dim; - public int* pair_geom1; - public int* pair_geom2; - public int* pair_signature; - public double* pair_solref; - public double* pair_solreffriction; - public double* pair_solimp; - public double* pair_margin; - public double* pair_gap; - public double* pair_friction; - public int* exclude_signature; - public int* eq_type; - public int* eq_obj1id; - public int* eq_obj2id; - public int* eq_objtype; - public byte* eq_active0; - public double* eq_solref; - public double* eq_solimp; - public double* eq_data; - public int* tendon_adr; - public int* tendon_num; - public int* tendon_matid; - public int* tendon_group; - public int* tendon_treenum; - public int* tendon_treeid; - public int* ten_J_rownnz; - public int* ten_J_rowadr; - public int* ten_J_colind; - public byte* tendon_limited; - public byte* tendon_actfrclimited; - public double* tendon_width; - public double* tendon_solref_lim; - public double* tendon_solimp_lim; - public double* tendon_solref_fri; - public double* tendon_solimp_fri; - public double* tendon_range; - public double* tendon_actfrcrange; - public double* tendon_margin; - public double* tendon_stiffness; - public double* tendon_stiffnesspoly; - public double* tendon_damping; - public double* tendon_dampingpoly; - public double* tendon_armature; - public double* tendon_frictionloss; - public double* tendon_lengthspring; - public double* tendon_length0; - public double* tendon_invweight0; - public double* tendon_user; - public float* tendon_rgba; - public int* wrap_type; - public int* wrap_objid; - public double* wrap_prm; - public int* actuator_trntype; - public int* actuator_dyntype; - public int* actuator_gaintype; - public int* actuator_biastype; - public int* actuator_trnid; - public int* actuator_actadr; - public int* actuator_actnum; - public int* actuator_group; - public int* actuator_history; - public int* actuator_historyadr; - public double* actuator_delay; - public byte* actuator_ctrllimited; - public byte* actuator_forcelimited; - public byte* actuator_actlimited; - public double* actuator_dynprm; - public double* actuator_gainprm; - public double* actuator_biasprm; - public byte* actuator_actearly; - public double* actuator_ctrlrange; - public double* actuator_forcerange; - public double* actuator_actrange; - public double* actuator_gear; - public double* actuator_cranklength; - public double* actuator_acc0; - public double* actuator_length0; - public double* actuator_lengthrange; - public double* actuator_user; - public int* actuator_plugin; - public int* sensor_type; - public int* sensor_datatype; - public int* sensor_needstage; - public int* sensor_objtype; - public int* sensor_objid; - public int* sensor_reftype; - public int* sensor_refid; - public int* sensor_intprm; - public int* sensor_dim; - public int* sensor_adr; - public double* sensor_cutoff; - public double* sensor_noise; - public int* sensor_history; - public int* sensor_historyadr; - public double* sensor_delay; - public double* sensor_interval; - public double* sensor_user; - public int* sensor_plugin; - public int* plugin; - public int* plugin_stateadr; - public int* plugin_statenum; - public char* plugin_attr; - public int* plugin_attradr; - public int* numeric_adr; - public int* numeric_size; - public double* numeric_data; - public int* text_adr; - public int* text_size; - public char* text_data; - public int* tuple_adr; - public int* tuple_size; - public int* tuple_objtype; - public int* tuple_objid; - public double* tuple_objprm; - public double* key_time; - public double* key_qpos; - public double* key_qvel; - public double* key_act; - public double* key_mpos; - public double* key_mquat; - public double* key_ctrl; - public int* name_bodyadr; - public int* name_jntadr; - public int* name_geomadr; - public int* name_siteadr; - public int* name_camadr; - public int* name_lightadr; - public int* name_flexadr; - public int* name_meshadr; - public int* name_skinadr; - public int* name_hfieldadr; - public int* name_texadr; - public int* name_matadr; - public int* name_pairadr; - public int* name_excludeadr; - public int* name_eqadr; - public int* name_tendonadr; - public int* name_actuatoradr; - public int* name_sensoradr; - public int* name_numericadr; - public int* name_textadr; - public int* name_tupleadr; - public int* name_keyadr; - public int* name_pluginadr; - public char* names; - public int* names_map; - public char* paths; - public int* B_rownnz; - public int* B_rowadr; - public int* B_colind; - public int* M_rownnz; - public int* M_rowadr; - public int* M_colind; - public int* mapM2M; - public int* D_rownnz; - public int* D_rowadr; - public int* D_diag; - public int* D_colind; - public int* mapM2D; - public int* mapD2M; - public UInt64 signature; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjrRect_ { - public int left; - public int bottom; - public int width; - public int height; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjrContext_ { - public float lineWidth; - public float shadowClip; - public float shadowScale; - public float fogStart; - public float fogEnd; - public fixed float fogRGBA[4]; - public int shadowSize; - public int offWidth; - public int offHeight; - public int offSamples; - public int fontScale; - public fixed int auxWidth[10]; - public fixed int auxHeight[10]; - public fixed int auxSamples[10]; - public uint offFBO; - public uint offFBO_r; - public uint offColor; - public uint offColor_r; - public uint offDepthStencil; - public uint offDepthStencil_r; - public uint shadowFBO; - public uint shadowTex; - public fixed uint auxFBO[10]; - public fixed uint auxFBO_r[10]; - public fixed uint auxColor[10]; - public fixed uint auxColor_r[10]; - public fixed int mat_texid[10000]; - public fixed int mat_texuniform[1000]; - public fixed float mat_texrepeat[2000]; - public int ntexture; - public fixed int textureType[1000]; - public fixed uint texture[1000]; - public uint basePlane; - public uint baseMesh; - public uint baseHField; - public uint baseBuiltin; - public uint baseFontNormal; - public uint baseFontShadow; - public uint baseFontBig; - public int rangePlane; - public int rangeMesh; - public int rangeHField; - public int rangeBuiltin; - public int rangeFont; - public int nskin; - public uint* skinvertVBO; - public uint* skinnormalVBO; - public uint* skintexcoordVBO; - public uint* skinfaceVBO; - public fixed int charWidth[127]; - public fixed int charWidthBig[127]; - public int charHeight; - public int charHeightBig; - public int glInitialized; - public int windowAvailable; - public int windowSamples; - public int windowStereo; - public int windowDoublebuffer; - public int currentBuffer; - public int readPixelFormat; - public int readDepthMap; -} - [StructLayout(LayoutKind.Sequential)] public unsafe struct mjsCompiler_ { public byte autolimits; @@ -5934,7 +5898,7 @@ public unsafe struct mjsCompiler_ { public byte balanceinertia; public byte fitaabb; public byte degree; - public fixed sbyte eulerseq[3]; + public fixed char eulerseq[3]; public byte discardvisual; public byte usethread; public byte fusestatic; @@ -5947,193 +5911,6 @@ public unsafe struct mjsCompiler_ { public void* texturedir; } -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiState_ { - public int nrect; - public mjrRect_ rect0; - public mjrRect_ rect1; - public mjrRect_ rect2; - public mjrRect_ rect3; - public mjrRect_ rect4; - public mjrRect_ rect5; - public mjrRect_ rect6; - public mjrRect_ rect7; - public mjrRect_ rect8; - public mjrRect_ rect9; - public mjrRect_ rect10; - public mjrRect_ rect11; - public mjrRect_ rect12; - public mjrRect_ rect13; - public mjrRect_ rect14; - public mjrRect_ rect15; - public mjrRect_ rect16; - public mjrRect_ rect17; - public mjrRect_ rect18; - public mjrRect_ rect19; - public mjrRect_ rect20; - public mjrRect_ rect21; - public mjrRect_ rect22; - public mjrRect_ rect23; - public mjrRect_ rect24; - public void* userdata; - public int type; - public int left; - public int right; - public int middle; - public int doubleclick; - public int button; - public double buttontime; - public double x; - public double y; - public double dx; - public double dy; - public double sx; - public double sy; - public int control; - public int shift; - public int alt; - public int key; - public double keytime; - public int mouserect; - public int dragrect; - public int dragbutton; - public int dropcount; - public char** droppaths; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiThemeSpacing_ { - public int total; - public int scroll; - public int label; - public int section; - public int cornersect; - public int cornersep; - public int itemside; - public int itemmid; - public int itemver; - public int texthor; - public int textver; - public int linescroll; - public int samples; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiThemeColor_ { - public fixed float master[3]; - public fixed float thumb[3]; - public fixed float secttitle[3]; - public fixed float secttitle2[3]; - public fixed float secttitleuncheck[3]; - public fixed float secttitleuncheck2[3]; - public fixed float secttitlecheck[3]; - public fixed float secttitlecheck2[3]; - public fixed float sectfont[3]; - public fixed float sectsymbol[3]; - public fixed float sectpane[3]; - public fixed float separator[3]; - public fixed float separator2[3]; - public fixed float shortcut[3]; - public fixed float fontactive[3]; - public fixed float fontinactive[3]; - public fixed float decorinactive[3]; - public fixed float decorinactive2[3]; - public fixed float button[3]; - public fixed float check[3]; - public fixed float radio[3]; - public fixed float select[3]; - public fixed float select2[3]; - public fixed float slider[3]; - public fixed float slider2[3]; - public fixed float edit[3]; - public fixed float edit2[3]; - public fixed float cursor[3]; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiItemSingle_ { - public int modifier; - public int shortcut; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiItemMulti_ { - public int nelem; - public fixed sbyte name[35 * 40]; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiItemSlider_ { - public fixed double range[2]; - public double divisions; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiItemEdit_ { - public int nelem; - public fixed double range[7 * 2]; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiSection_ { - public fixed sbyte name[40]; - public int state; - public int modifier; - public int shortcut; - public int checkbox; - public int nitem; - public mjrRect_ rtitle; - public mjrRect_ rcontent; - public int lastclick; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjUI_ { - public mjuiThemeSpacing_ spacing; - public mjuiThemeColor_ color; - public mjfItemEnable predicate; - public void* userdata; - public int rectid; - public int auxid; - public int radiocol; - public int width; - public int height; - public int maxheight; - public int scroll; - public int mousesect; - public int mouseitem; - public int mousehelp; - public int mouseclicks; - public int mousesectcheck; - public int editsect; - public int edititem; - public int editcursor; - public int editscroll; - public fixed sbyte edittext[300]; - public mjuiItem_* editchanged; - public int nsect; - public mjuiSection_ sect0; - public mjuiSection_ sect1; - public mjuiSection_ sect2; - public mjuiSection_ sect3; - public mjuiSection_ sect4; - public mjuiSection_ sect5; - public mjuiSection_ sect6; - public mjuiSection_ sect7; - public mjuiSection_ sect8; - public mjuiSection_ sect9; -} - -[StructLayout(LayoutKind.Sequential)] -public unsafe struct mjuiDef_ { - public int type; - public fixed sbyte name[40]; - public int state; - public void* pdata; - public fixed sbyte other[300]; - public int otherint; -} - [StructLayout(LayoutKind.Sequential)] public unsafe struct mjvPerturb_ { public int select; @@ -6193,7 +5970,7 @@ public unsafe struct mjvGeom_ { public float specular; public float shininess; public float reflectance; - public fixed sbyte label[100]; + public fixed char label[100]; public float camdist; public float modelrbound; public byte transparent; @@ -6396,12 +6173,12 @@ public unsafe struct mjvFigure_ { public fixed float textrgb[3]; public fixed float linergb[100 * 3]; public fixed float range[2 * 2]; - public fixed sbyte xformat[20]; - public fixed sbyte yformat[20]; - public fixed sbyte minwidth[20]; - public fixed sbyte title[1000]; - public fixed sbyte xlabel[100]; - public fixed sbyte linename[100 * 100]; + public fixed char xformat[20]; + public fixed char yformat[20]; + public fixed char minwidth[20]; + public fixed char title[1000]; + public fixed char xlabel[100]; + public fixed char linename[100 * 100]; public int legendoffset; public int subplot; public fixed int highlight[2]; @@ -6413,9 +6190,477 @@ public unsafe struct mjvFigure_ { public fixed int yaxispixel[2]; public fixed float xaxisdata[2]; public fixed float yaxisdata[2]; -}public struct mjuiItem_ {}public struct mjfItemEnable {} +} -// ----------------------------Function declarations---------------------------- +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjrRect_ { + public int left; + public int bottom; + public int width; + public int height; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjrContext_ { + public float lineWidth; + public float shadowClip; + public float shadowScale; + public float fogStart; + public float fogEnd; + public fixed float fogRGBA[4]; + public int shadowSize; + public int offWidth; + public int offHeight; + public int offSamples; + public int fontScale; + public fixed int auxWidth[10]; + public fixed int auxHeight[10]; + public fixed int auxSamples[10]; + public uint offFBO; + public uint offFBO_r; + public uint offColor; + public uint offColor_r; + public uint offDepthStencil; + public uint offDepthStencil_r; + public uint shadowFBO; + public uint shadowTex; + public fixed uint auxFBO[10]; + public fixed uint auxFBO_r[10]; + public fixed uint auxColor[10]; + public fixed uint auxColor_r[10]; + public fixed int mat_texid[10000]; + public fixed int mat_texuniform[1000]; + public fixed float mat_texrepeat[2000]; + public int ntexture; + public fixed int textureType[1000]; + public fixed uint texture[1000]; + public uint basePlane; + public uint baseMesh; + public uint baseHField; + public uint baseBuiltin; + public uint baseFontNormal; + public uint baseFontShadow; + public uint baseFontBig; + public int rangePlane; + public int rangeMesh; + public int rangeHField; + public int rangeBuiltin; + public int rangeFont; + public int nskin; + public uint* skinvertVBO; + public uint* skinnormalVBO; + public uint* skintexcoordVBO; + public uint* skinfaceVBO; + public fixed int charWidth[127]; + public fixed int charWidthBig[127]; + public int charHeight; + public int charHeightBig; + public int glInitialized; + public int windowAvailable; + public int windowSamples; + public int windowStereo; + public int windowDoublebuffer; + public int currentBuffer; + public int readPixelFormat; + public int readDepthMap; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiState_ { + public int nrect; + public mjrRect_ rect0; + public mjrRect_ rect1; + public mjrRect_ rect2; + public mjrRect_ rect3; + public mjrRect_ rect4; + public mjrRect_ rect5; + public mjrRect_ rect6; + public mjrRect_ rect7; + public mjrRect_ rect8; + public mjrRect_ rect9; + public mjrRect_ rect10; + public mjrRect_ rect11; + public mjrRect_ rect12; + public mjrRect_ rect13; + public mjrRect_ rect14; + public mjrRect_ rect15; + public mjrRect_ rect16; + public mjrRect_ rect17; + public mjrRect_ rect18; + public mjrRect_ rect19; + public mjrRect_ rect20; + public mjrRect_ rect21; + public mjrRect_ rect22; + public mjrRect_ rect23; + public mjrRect_ rect24; + public void* userdata; + public int type; + public int left; + public int right; + public int middle; + public int doubleclick; + public int button; + public double buttontime; + public double x; + public double y; + public double dx; + public double dy; + public double sx; + public double sy; + public int control; + public int shift; + public int alt; + public int key; + public double keytime; + public int mouserect; + public int dragrect; + public int dragbutton; + public int dropcount; + public char** droppaths; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiThemeSpacing_ { + public int total; + public int scroll; + public int label; + public int section; + public int cornersect; + public int cornersep; + public int itemside; + public int itemmid; + public int itemver; + public int texthor; + public int textver; + public int linescroll; + public int samples; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiThemeColor_ { + public fixed float master[3]; + public fixed float thumb[3]; + public fixed float secttitle[3]; + public fixed float secttitle2[3]; + public fixed float secttitleuncheck[3]; + public fixed float secttitleuncheck2[3]; + public fixed float secttitlecheck[3]; + public fixed float secttitlecheck2[3]; + public fixed float sectfont[3]; + public fixed float sectsymbol[3]; + public fixed float sectpane[3]; + public fixed float separator[3]; + public fixed float separator2[3]; + public fixed float shortcut[3]; + public fixed float fontactive[3]; + public fixed float fontinactive[3]; + public fixed float decorinactive[3]; + public fixed float decorinactive2[3]; + public fixed float button[3]; + public fixed float check[3]; + public fixed float radio[3]; + public fixed float select[3]; + public fixed float select2[3]; + public fixed float slider[3]; + public fixed float slider2[3]; + public fixed float edit[3]; + public fixed float edit2[3]; + public fixed float cursor[3]; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiItem_ { + public int type; + public fixed char name[40]; + public int state; + public void* pdata; + public int sectionid; + public int itemid; + public int userid; + public mjuiItemSingle_ single; + public mjuiItemMulti_ multi; + public mjuiItemSlider_ slider; + public mjuiItemEdit_ edit; + public mjrRect_ rect; + public int skip; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiSection_ { + public fixed char name[40]; + public int state; + public int modifier; + public int shortcut; + public int checkbox; + public int nitem; + public mjuiItem_ item0; + public mjuiItem_ item1; + public mjuiItem_ item2; + public mjuiItem_ item3; + public mjuiItem_ item4; + public mjuiItem_ item5; + public mjuiItem_ item6; + public mjuiItem_ item7; + public mjuiItem_ item8; + public mjuiItem_ item9; + public mjuiItem_ item10; + public mjuiItem_ item11; + public mjuiItem_ item12; + public mjuiItem_ item13; + public mjuiItem_ item14; + public mjuiItem_ item15; + public mjuiItem_ item16; + public mjuiItem_ item17; + public mjuiItem_ item18; + public mjuiItem_ item19; + public mjuiItem_ item20; + public mjuiItem_ item21; + public mjuiItem_ item22; + public mjuiItem_ item23; + public mjuiItem_ item24; + public mjuiItem_ item25; + public mjuiItem_ item26; + public mjuiItem_ item27; + public mjuiItem_ item28; + public mjuiItem_ item29; + public mjuiItem_ item30; + public mjuiItem_ item31; + public mjuiItem_ item32; + public mjuiItem_ item33; + public mjuiItem_ item34; + public mjuiItem_ item35; + public mjuiItem_ item36; + public mjuiItem_ item37; + public mjuiItem_ item38; + public mjuiItem_ item39; + public mjuiItem_ item40; + public mjuiItem_ item41; + public mjuiItem_ item42; + public mjuiItem_ item43; + public mjuiItem_ item44; + public mjuiItem_ item45; + public mjuiItem_ item46; + public mjuiItem_ item47; + public mjuiItem_ item48; + public mjuiItem_ item49; + public mjuiItem_ item50; + public mjuiItem_ item51; + public mjuiItem_ item52; + public mjuiItem_ item53; + public mjuiItem_ item54; + public mjuiItem_ item55; + public mjuiItem_ item56; + public mjuiItem_ item57; + public mjuiItem_ item58; + public mjuiItem_ item59; + public mjuiItem_ item60; + public mjuiItem_ item61; + public mjuiItem_ item62; + public mjuiItem_ item63; + public mjuiItem_ item64; + public mjuiItem_ item65; + public mjuiItem_ item66; + public mjuiItem_ item67; + public mjuiItem_ item68; + public mjuiItem_ item69; + public mjuiItem_ item70; + public mjuiItem_ item71; + public mjuiItem_ item72; + public mjuiItem_ item73; + public mjuiItem_ item74; + public mjuiItem_ item75; + public mjuiItem_ item76; + public mjuiItem_ item77; + public mjuiItem_ item78; + public mjuiItem_ item79; + public mjuiItem_ item80; + public mjuiItem_ item81; + public mjuiItem_ item82; + public mjuiItem_ item83; + public mjuiItem_ item84; + public mjuiItem_ item85; + public mjuiItem_ item86; + public mjuiItem_ item87; + public mjuiItem_ item88; + public mjuiItem_ item89; + public mjuiItem_ item90; + public mjuiItem_ item91; + public mjuiItem_ item92; + public mjuiItem_ item93; + public mjuiItem_ item94; + public mjuiItem_ item95; + public mjuiItem_ item96; + public mjuiItem_ item97; + public mjuiItem_ item98; + public mjuiItem_ item99; + public mjuiItem_ item100; + public mjuiItem_ item101; + public mjuiItem_ item102; + public mjuiItem_ item103; + public mjuiItem_ item104; + public mjuiItem_ item105; + public mjuiItem_ item106; + public mjuiItem_ item107; + public mjuiItem_ item108; + public mjuiItem_ item109; + public mjuiItem_ item110; + public mjuiItem_ item111; + public mjuiItem_ item112; + public mjuiItem_ item113; + public mjuiItem_ item114; + public mjuiItem_ item115; + public mjuiItem_ item116; + public mjuiItem_ item117; + public mjuiItem_ item118; + public mjuiItem_ item119; + public mjuiItem_ item120; + public mjuiItem_ item121; + public mjuiItem_ item122; + public mjuiItem_ item123; + public mjuiItem_ item124; + public mjuiItem_ item125; + public mjuiItem_ item126; + public mjuiItem_ item127; + public mjuiItem_ item128; + public mjuiItem_ item129; + public mjuiItem_ item130; + public mjuiItem_ item131; + public mjuiItem_ item132; + public mjuiItem_ item133; + public mjuiItem_ item134; + public mjuiItem_ item135; + public mjuiItem_ item136; + public mjuiItem_ item137; + public mjuiItem_ item138; + public mjuiItem_ item139; + public mjuiItem_ item140; + public mjuiItem_ item141; + public mjuiItem_ item142; + public mjuiItem_ item143; + public mjuiItem_ item144; + public mjuiItem_ item145; + public mjuiItem_ item146; + public mjuiItem_ item147; + public mjuiItem_ item148; + public mjuiItem_ item149; + public mjuiItem_ item150; + public mjuiItem_ item151; + public mjuiItem_ item152; + public mjuiItem_ item153; + public mjuiItem_ item154; + public mjuiItem_ item155; + public mjuiItem_ item156; + public mjuiItem_ item157; + public mjuiItem_ item158; + public mjuiItem_ item159; + public mjuiItem_ item160; + public mjuiItem_ item161; + public mjuiItem_ item162; + public mjuiItem_ item163; + public mjuiItem_ item164; + public mjuiItem_ item165; + public mjuiItem_ item166; + public mjuiItem_ item167; + public mjuiItem_ item168; + public mjuiItem_ item169; + public mjuiItem_ item170; + public mjuiItem_ item171; + public mjuiItem_ item172; + public mjuiItem_ item173; + public mjuiItem_ item174; + public mjuiItem_ item175; + public mjuiItem_ item176; + public mjuiItem_ item177; + public mjuiItem_ item178; + public mjuiItem_ item179; + public mjuiItem_ item180; + public mjuiItem_ item181; + public mjuiItem_ item182; + public mjuiItem_ item183; + public mjuiItem_ item184; + public mjuiItem_ item185; + public mjuiItem_ item186; + public mjuiItem_ item187; + public mjuiItem_ item188; + public mjuiItem_ item189; + public mjuiItem_ item190; + public mjuiItem_ item191; + public mjuiItem_ item192; + public mjuiItem_ item193; + public mjuiItem_ item194; + public mjuiItem_ item195; + public mjuiItem_ item196; + public mjuiItem_ item197; + public mjuiItem_ item198; + public mjuiItem_ item199; + public mjrRect_ rtitle; + public mjrRect_ rcontent; + public int lastclick; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjUI_ { + public mjuiThemeSpacing_ spacing; + public mjuiThemeColor_ color; + public IntPtr predicate; + public void* userdata; + public int rectid; + public int auxid; + public int radiocol; + public int width; + public int height; + public int maxheight; + public int scroll; + public int mousesect; + public int mouseitem; + public int mousehelp; + public int mouseclicks; + public int mousesectcheck; + public int editsect; + public int edititem; + public int editcursor; + public int editscroll; + public fixed char edittext[300]; + public mjuiItem_* editchanged; + public int nsect; + public mjuiSection_ sect0; + public mjuiSection_ sect1; + public mjuiSection_ sect2; + public mjuiSection_ sect3; + public mjuiSection_ sect4; + public mjuiSection_ sect5; + public mjuiSection_ sect6; + public mjuiSection_ sect7; + public mjuiSection_ sect8; + public mjuiSection_ sect9; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiDef_ { + public int type; + public fixed char name[40]; + public int state; + public void* pdata; + public fixed char other[300]; + public int otherint; +} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct _mjVFS {} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiItemSingle_ {} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiItemMulti_ {} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiItemSlider_ {} + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct mjuiItemEdit_ {} + +// ------------------------------Function declarations-------------------------- [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mj_defaultVFS(void* vfs); @@ -6508,7 +6753,7 @@ public static unsafe extern mjModel_* mj_loadModelBuffer(void* buffer, int buffe public static unsafe extern void mj_deleteModel(mjModel_* m); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern Int64 mj_sizeModel(mjModel_* m); +public static unsafe extern UInt64 mj_sizeModel(mjModel_* m); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern mjData_* mj_makeData(mjModel_* m); @@ -6790,8 +7035,7 @@ public static unsafe extern void mj_angmomMat(mjModel_* m, mjData_* d, double* m public static unsafe extern int mj_name2id(mjModel_* m, int type, [MarshalAs(UnmanagedType.LPStr)]string name); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -[return: MarshalAs(UnmanagedType.LPStr)] -public static unsafe extern string mj_id2name(mjModel_* m, int type, int id); +public static unsafe extern IntPtr mj_id2name(mjModel_* m, int type, int id); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mj_fullM(mjModel_* m, double* dst, double* M); @@ -6839,8 +7083,7 @@ public static unsafe extern double mj_getTotalmass(mjModel_* m); public static unsafe extern void mj_setTotalmass(mjModel_* m, double newmass); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -[return: MarshalAs(UnmanagedType.LPStr)] -public static unsafe extern string mj_getPluginConfig(mjModel_* m, int plugin_id, [MarshalAs(UnmanagedType.LPStr)]string attrib); +public static unsafe extern IntPtr mj_getPluginConfig(mjModel_* m, int plugin_id, [MarshalAs(UnmanagedType.LPStr)]string attrib); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mj_loadPluginLibrary([MarshalAs(UnmanagedType.LPStr)]string path); @@ -6849,8 +7092,7 @@ public static unsafe extern void mj_loadPluginLibrary([MarshalAs(UnmanagedType.L public static unsafe extern int mj_version(); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -[return: MarshalAs(UnmanagedType.LPStr)] -public static unsafe extern string mj_versionString(); +public static unsafe extern IntPtr mj_versionString(); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern double mj_ray(mjModel_* m, mjData_* d, double* pnt, double* vec, byte* geomgroup, byte flg_static, int bodyexclude, int* geomid, double* normal); @@ -6919,7 +7161,7 @@ public static unsafe extern void mjv_applyPerturbPose(mjModel_* m, mjData_* d, m public static unsafe extern void mjv_applyPerturbForce(mjModel_* m, mjData_* d, mjvPerturb_* pert); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern mjvGLCamera_* mjv_averageCamera(mjvGLCamera_* cam1, mjvGLCamera_* cam2); +public static unsafe extern mjvGLCamera_ mjv_averageCamera(mjvGLCamera_* cam1, mjvGLCamera_* cam2); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern int mjv_select(mjModel_* m, mjData_* d, mjvOption_* vopt, double aspectratio, double relx, double rely, mjvScene_* scn, double* selpnt, int* geomid, int* flexid, int* skinid); @@ -7003,40 +7245,40 @@ public static unsafe extern void mjr_restoreBuffer(mjrContext_* con); public static unsafe extern void mjr_setBuffer(int framebuffer, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_readPixels(byte* rgb, float* depth, mjrRect_* viewport, mjrContext_* con); +public static unsafe extern void mjr_readPixels(byte* rgb, float* depth, mjrRect_ viewport, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_drawPixels(byte* rgb, float* depth, mjrRect_* viewport, mjrContext_* con); +public static unsafe extern void mjr_drawPixels(byte* rgb, float* depth, mjrRect_ viewport, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_blitBuffer(mjrRect_* src, mjrRect_* dst, int flg_color, int flg_depth, mjrContext_* con); +public static unsafe extern void mjr_blitBuffer(mjrRect_ src, mjrRect_ dst, int flg_color, int flg_depth, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mjr_setAux(int index, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_blitAux(int index, mjrRect_* src, int left, int bottom, mjrContext_* con); +public static unsafe extern void mjr_blitAux(int index, mjrRect_ src, int left, int bottom, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mjr_text(int font, [MarshalAs(UnmanagedType.LPStr)]string txt, mjrContext_* con, float x, float y, float r, float g, float b); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_overlay(int font, int gridpos, mjrRect_* viewport, [MarshalAs(UnmanagedType.LPStr)]string overlay, [MarshalAs(UnmanagedType.LPStr)]string overlay2, mjrContext_* con); +public static unsafe extern void mjr_overlay(int font, int gridpos, mjrRect_ viewport, [MarshalAs(UnmanagedType.LPStr)]string overlay, [MarshalAs(UnmanagedType.LPStr)]string overlay2, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern mjrRect_* mjr_maxViewport(mjrContext_* con); +public static unsafe extern mjrRect_ mjr_maxViewport(mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_rectangle(mjrRect_* viewport, float r, float g, float b, float a); +public static unsafe extern void mjr_rectangle(mjrRect_ viewport, float r, float g, float b, float a); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_label(mjrRect_* viewport, int font, [MarshalAs(UnmanagedType.LPStr)]string txt, float r, float g, float b, float a, float rt, float gt, float bt, mjrContext_* con); +public static unsafe extern void mjr_label(mjrRect_ viewport, int font, [MarshalAs(UnmanagedType.LPStr)]string txt, float r, float g, float b, float a, float rt, float gt, float bt, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_figure(mjrRect_* viewport, mjvFigure_* fig, mjrContext_* con); +public static unsafe extern void mjr_figure(mjrRect_ viewport, mjvFigure_* fig, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern void mjr_render(mjrRect_* viewport, mjvScene_* scn, mjrContext_* con); +public static unsafe extern void mjr_render(mjrRect_ viewport, mjvScene_* scn, mjrContext_* con); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mjr_finish(); @@ -7048,10 +7290,10 @@ public static unsafe extern int mjr_getError(); public static unsafe extern int mjr_findRect(int x, int y, int nrect, mjrRect_* rect); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern mjuiThemeSpacing_* mjui_themeSpacing(int ind); +public static unsafe extern mjuiThemeSpacing_ mjui_themeSpacing(int ind); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -public static unsafe extern mjuiThemeColor_* mjui_themeColor(int ind); +public static unsafe extern mjuiThemeColor_ mjui_themeColor(int ind); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mjui_add(mjUI_* ui, mjuiDef_* def); @@ -7071,12 +7313,18 @@ public static unsafe extern mjuiItem_* mjui_event(mjUI_* ui, mjuiState_* state, [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mjui_render(mjUI_* ui, mjuiState_* state, mjrContext_* con); +[DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] +public static unsafe extern void mju_error([MarshalAs(UnmanagedType.LPStr)]string msg); + [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mju_error_i([MarshalAs(UnmanagedType.LPStr)]string msg, int i); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mju_error_s([MarshalAs(UnmanagedType.LPStr)]string msg, [MarshalAs(UnmanagedType.LPStr)]string text); +[DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] +public static unsafe extern void mju_warning([MarshalAs(UnmanagedType.LPStr)]string msg); + [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern void mju_warning_i([MarshalAs(UnmanagedType.LPStr)]string msg, int i); @@ -7363,19 +7611,16 @@ public static unsafe extern double mju_sign(double x); public static unsafe extern int mju_round(double x); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -[return: MarshalAs(UnmanagedType.LPStr)] -public static unsafe extern string mju_type2Str(int type); +public static unsafe extern IntPtr mju_type2Str(int type); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern int mju_str2Type([MarshalAs(UnmanagedType.LPStr)]string str); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -[return: MarshalAs(UnmanagedType.LPStr)] -public static unsafe extern string mju_writeNumBytes(UIntPtr nbytes); +public static unsafe extern IntPtr mju_writeNumBytes(UIntPtr nbytes); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -[return: MarshalAs(UnmanagedType.LPStr)] -public static unsafe extern string mju_warningText(int warning, UIntPtr info); +public static unsafe extern IntPtr mju_warningText(int warning, UIntPtr info); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern int mju_isBad(double x); @@ -7408,8 +7653,7 @@ public static unsafe extern void mju_insertionSortInt(int* list, int n); public static unsafe extern double mju_Halton(int index, int base_); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] -[return: MarshalAs(UnmanagedType.LPStr)] -public static unsafe extern string mju_strncpy(StringBuilder dst, [MarshalAs(UnmanagedType.LPStr)]string src, int n); +public static unsafe extern IntPtr mju_strncpy(StringBuilder dst, [MarshalAs(UnmanagedType.LPStr)]string src, int n); [DllImport("mujoco", CallingConvention = CallingConvention.Cdecl)] public static unsafe extern double mju_sigmoid(double x);