diff --git a/wasm/codegen/generated/bindings.cc b/wasm/codegen/generated/bindings.cc index c59a9278..f1580184 100644 --- a/wasm/codegen/generated/bindings.cc +++ b/wasm/codegen/generated/bindings.cc @@ -12776,34 +12776,36 @@ EMSCRIPTEN_BINDINGS(mujoco_functions) { register_type("number[]"); register_type("string"); register_vector("mjByteVec"); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); + register_optional(); } } // namespace mujoco::wasm diff --git a/wasm/codegen/generators/structs.py b/wasm/codegen/generators/structs.py index 5f6e2ac5..709803ab 100644 --- a/wasm/codegen/generators/structs.py +++ b/wasm/codegen/generators/structs.py @@ -776,4 +776,17 @@ def generate(struct_to_bind: List[str]) -> list[tuple[str, list[str]]]: "// {{ AUTOGENNED_STRUCTS_BINDINGS }}", autogenned_struct_bindings, )) + + # Generate optional bindings + optional_bindings = [] + for s_name in sorted(struct_to_bind): + w_name = common.capitalize(s_name) + if w_name.startswith("Mjs") or w_name == "MjSpec": + optional_bindings.append(f"register_optional<{w_name}>();") + + markers_and_content.append(( + "// {{ OPTIONAL_STRUCT_BINDINGS }}", + optional_bindings, + )) + return markers_and_content diff --git a/wasm/codegen/templates/bindings.cc b/wasm/codegen/templates/bindings.cc index 99394700..c67f8768 100644 --- a/wasm/codegen/templates/bindings.cc +++ b/wasm/codegen/templates/bindings.cc @@ -516,34 +516,7 @@ EMSCRIPTEN_BINDINGS(mujoco_functions) { register_type("number[]"); register_type("string"); register_vector("mjByteVec"); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); - register_optional(); + // {{ OPTIONAL_STRUCT_BINDINGS }} } } // namespace mujoco::wasm