From 06ecdd6ba1a07dd123baed7f07f201063ff9d0c2 Mon Sep 17 00:00:00 2001 From: Matias Manevi Date: Thu, 6 Nov 2025 08:48:52 -0800 Subject: [PATCH] Refactor: Generate all struct bindings within the codegen. PiperOrigin-RevId: 828973537 Change-Id: I3f371d2f88e1cd9b1bb5c0a9c6a5ace7a21673fb --- wasm/codegen/generated/bindings.cc | 3015 +++++++++++++------------- wasm/codegen/generators/structs.py | 9 +- wasm/codegen/helpers/code_builder.py | 14 +- wasm/codegen/helpers/structs.py | 49 +- wasm/codegen/templates/bindings.cc | 20 - 5 files changed, 1517 insertions(+), 1590 deletions(-) diff --git a/wasm/codegen/generated/bindings.cc b/wasm/codegen/generated/bindings.cc index 64f835ce..aa64d587 100644 --- a/wasm/codegen/generated/bindings.cc +++ b/wasm/codegen/generated/bindings.cc @@ -8500,1591 +8500,1536 @@ std::unique_ptr parseXMLString(const std::string &xml) { EMSCRIPTEN_BINDINGS(mujoco_bindings) { function("parseXMLString", &parseXMLString, take_ownership()); - - emscripten::class_("MjModel") - .class_function("loadFromXML", &loadFromXML, take_ownership()) - .constructor() - .property("nq", &MjModel::nq, &MjModel::set_nq, reference()) - .property("nv", &MjModel::nv, &MjModel::set_nv, reference()) - .property("nu", &MjModel::nu, &MjModel::set_nu, reference()) - .property("na", &MjModel::na, &MjModel::set_na, reference()) - .property("nbody", &MjModel::nbody, &MjModel::set_nbody, reference()) - .property("nbvh", &MjModel::nbvh, &MjModel::set_nbvh, reference()) - .property("nbvhstatic", &MjModel::nbvhstatic, &MjModel::set_nbvhstatic, reference()) - .property("nbvhdynamic", &MjModel::nbvhdynamic, &MjModel::set_nbvhdynamic, reference()) - .property("noct", &MjModel::noct, &MjModel::set_noct, reference()) - .property("njnt", &MjModel::njnt, &MjModel::set_njnt, reference()) - .property("ntree", &MjModel::ntree, &MjModel::set_ntree, reference()) - .property("nM", &MjModel::nM, &MjModel::set_nM, reference()) - .property("nB", &MjModel::nB, &MjModel::set_nB, reference()) - .property("nC", &MjModel::nC, &MjModel::set_nC, reference()) - .property("nD", &MjModel::nD, &MjModel::set_nD, reference()) - .property("ngeom", &MjModel::ngeom, &MjModel::set_ngeom, reference()) - .property("nsite", &MjModel::nsite, &MjModel::set_nsite, reference()) - .property("ncam", &MjModel::ncam, &MjModel::set_ncam, reference()) - .property("nlight", &MjModel::nlight, &MjModel::set_nlight, reference()) - .property("nflex", &MjModel::nflex, &MjModel::set_nflex, reference()) - .property("nflexnode", &MjModel::nflexnode, &MjModel::set_nflexnode, reference()) - .property("nflexvert", &MjModel::nflexvert, &MjModel::set_nflexvert, reference()) - .property("nflexedge", &MjModel::nflexedge, &MjModel::set_nflexedge, reference()) - .property("nflexelem", &MjModel::nflexelem, &MjModel::set_nflexelem, reference()) - .property("nflexelemdata", &MjModel::nflexelemdata, &MjModel::set_nflexelemdata, reference()) - .property("nflexelemedge", &MjModel::nflexelemedge, &MjModel::set_nflexelemedge, reference()) - .property("nflexshelldata", &MjModel::nflexshelldata, &MjModel::set_nflexshelldata, reference()) - .property("nflexevpair", &MjModel::nflexevpair, &MjModel::set_nflexevpair, reference()) - .property("nflextexcoord", &MjModel::nflextexcoord, &MjModel::set_nflextexcoord, reference()) - .property("nmesh", &MjModel::nmesh, &MjModel::set_nmesh, reference()) - .property("nmeshvert", &MjModel::nmeshvert, &MjModel::set_nmeshvert, reference()) - .property("nmeshnormal", &MjModel::nmeshnormal, &MjModel::set_nmeshnormal, reference()) - .property("nmeshtexcoord", &MjModel::nmeshtexcoord, &MjModel::set_nmeshtexcoord, reference()) - .property("nmeshface", &MjModel::nmeshface, &MjModel::set_nmeshface, reference()) - .property("nmeshgraph", &MjModel::nmeshgraph, &MjModel::set_nmeshgraph, reference()) - .property("nmeshpoly", &MjModel::nmeshpoly, &MjModel::set_nmeshpoly, reference()) - .property("nmeshpolyvert", &MjModel::nmeshpolyvert, &MjModel::set_nmeshpolyvert, reference()) - .property("nmeshpolymap", &MjModel::nmeshpolymap, &MjModel::set_nmeshpolymap, reference()) - .property("nskin", &MjModel::nskin, &MjModel::set_nskin, reference()) - .property("nskinvert", &MjModel::nskinvert, &MjModel::set_nskinvert, reference()) - .property("nskintexvert", &MjModel::nskintexvert, &MjModel::set_nskintexvert, reference()) - .property("nskinface", &MjModel::nskinface, &MjModel::set_nskinface, reference()) - .property("nskinbone", &MjModel::nskinbone, &MjModel::set_nskinbone, reference()) - .property("nskinbonevert", &MjModel::nskinbonevert, &MjModel::set_nskinbonevert, reference()) - .property("nhfield", &MjModel::nhfield, &MjModel::set_nhfield, reference()) - .property("nhfielddata", &MjModel::nhfielddata, &MjModel::set_nhfielddata, reference()) - .property("ntex", &MjModel::ntex, &MjModel::set_ntex, reference()) - .property("ntexdata", &MjModel::ntexdata, &MjModel::set_ntexdata, reference()) - .property("nmat", &MjModel::nmat, &MjModel::set_nmat, reference()) - .property("npair", &MjModel::npair, &MjModel::set_npair, reference()) - .property("nexclude", &MjModel::nexclude, &MjModel::set_nexclude, reference()) - .property("neq", &MjModel::neq, &MjModel::set_neq, reference()) - .property("ntendon", &MjModel::ntendon, &MjModel::set_ntendon, reference()) - .property("nwrap", &MjModel::nwrap, &MjModel::set_nwrap, reference()) - .property("nsensor", &MjModel::nsensor, &MjModel::set_nsensor, reference()) - .property("nnumeric", &MjModel::nnumeric, &MjModel::set_nnumeric, reference()) - .property("nnumericdata", &MjModel::nnumericdata, &MjModel::set_nnumericdata, reference()) - .property("ntext", &MjModel::ntext, &MjModel::set_ntext, reference()) - .property("ntextdata", &MjModel::ntextdata, &MjModel::set_ntextdata, reference()) - .property("ntuple", &MjModel::ntuple, &MjModel::set_ntuple, reference()) - .property("ntupledata", &MjModel::ntupledata, &MjModel::set_ntupledata, reference()) - .property("nkey", &MjModel::nkey, &MjModel::set_nkey, reference()) - .property("nmocap", &MjModel::nmocap, &MjModel::set_nmocap, reference()) - .property("nplugin", &MjModel::nplugin, &MjModel::set_nplugin, reference()) - .property("npluginattr", &MjModel::npluginattr, &MjModel::set_npluginattr, reference()) - .property("nuser_body", &MjModel::nuser_body, &MjModel::set_nuser_body, reference()) - .property("nuser_jnt", &MjModel::nuser_jnt, &MjModel::set_nuser_jnt, reference()) - .property("nuser_geom", &MjModel::nuser_geom, &MjModel::set_nuser_geom, reference()) - .property("nuser_site", &MjModel::nuser_site, &MjModel::set_nuser_site, reference()) - .property("nuser_cam", &MjModel::nuser_cam, &MjModel::set_nuser_cam, reference()) - .property("nuser_tendon", &MjModel::nuser_tendon, &MjModel::set_nuser_tendon, reference()) - .property("nuser_actuator", &MjModel::nuser_actuator, &MjModel::set_nuser_actuator, reference()) - .property("nuser_sensor", &MjModel::nuser_sensor, &MjModel::set_nuser_sensor, reference()) - .property("nnames", &MjModel::nnames, &MjModel::set_nnames, reference()) - .property("npaths", &MjModel::npaths, &MjModel::set_npaths, reference()) - .property("nnames_map", &MjModel::nnames_map, &MjModel::set_nnames_map, reference()) - .property("nJmom", &MjModel::nJmom, &MjModel::set_nJmom, reference()) - .property("ngravcomp", &MjModel::ngravcomp, &MjModel::set_ngravcomp, reference()) - .property("nemax", &MjModel::nemax, &MjModel::set_nemax, reference()) - .property("njmax", &MjModel::njmax, &MjModel::set_njmax, reference()) - .property("nconmax", &MjModel::nconmax, &MjModel::set_nconmax, reference()) - .property("nuserdata", &MjModel::nuserdata, &MjModel::set_nuserdata, reference()) - .property("nsensordata", &MjModel::nsensordata, &MjModel::set_nsensordata, reference()) - .property("npluginstate", &MjModel::npluginstate, &MjModel::set_npluginstate, reference()) - .property("narena", &MjModel::narena, &MjModel::set_narena, reference()) - .property("nbuffer", &MjModel::nbuffer, &MjModel::set_nbuffer, reference()) - .property("opt", &MjModel::opt, reference()) - .property("vis", &MjModel::vis, reference()) - .property("stat", &MjModel::stat, reference()) - .property("buffer", &MjModel::buffer) - .property("qpos0", &MjModel::qpos0) - .property("qpos_spring", &MjModel::qpos_spring) - .property("body_parentid", &MjModel::body_parentid) - .property("body_rootid", &MjModel::body_rootid) - .property("body_weldid", &MjModel::body_weldid) - .property("body_mocapid", &MjModel::body_mocapid) - .property("body_jntnum", &MjModel::body_jntnum) - .property("body_jntadr", &MjModel::body_jntadr) - .property("body_dofnum", &MjModel::body_dofnum) - .property("body_dofadr", &MjModel::body_dofadr) - .property("body_treeid", &MjModel::body_treeid) - .property("body_geomnum", &MjModel::body_geomnum) - .property("body_geomadr", &MjModel::body_geomadr) - .property("body_simple", &MjModel::body_simple) - .property("body_sameframe", &MjModel::body_sameframe) - .property("body_pos", &MjModel::body_pos) - .property("body_quat", &MjModel::body_quat) - .property("body_ipos", &MjModel::body_ipos) - .property("body_iquat", &MjModel::body_iquat) - .property("body_mass", &MjModel::body_mass) - .property("body_subtreemass", &MjModel::body_subtreemass) - .property("body_inertia", &MjModel::body_inertia) - .property("body_invweight0", &MjModel::body_invweight0) - .property("body_gravcomp", &MjModel::body_gravcomp) - .property("body_margin", &MjModel::body_margin) - .property("body_user", &MjModel::body_user) - .property("body_plugin", &MjModel::body_plugin) - .property("body_contype", &MjModel::body_contype) - .property("body_conaffinity", &MjModel::body_conaffinity) - .property("body_bvhadr", &MjModel::body_bvhadr) - .property("body_bvhnum", &MjModel::body_bvhnum) - .property("bvh_depth", &MjModel::bvh_depth) - .property("bvh_child", &MjModel::bvh_child) - .property("bvh_nodeid", &MjModel::bvh_nodeid) - .property("bvh_aabb", &MjModel::bvh_aabb) - .property("oct_depth", &MjModel::oct_depth) - .property("oct_child", &MjModel::oct_child) - .property("oct_aabb", &MjModel::oct_aabb) - .property("oct_coeff", &MjModel::oct_coeff) - .property("jnt_type", &MjModel::jnt_type) - .property("jnt_qposadr", &MjModel::jnt_qposadr) - .property("jnt_dofadr", &MjModel::jnt_dofadr) - .property("jnt_bodyid", &MjModel::jnt_bodyid) - .property("jnt_group", &MjModel::jnt_group) - .property("jnt_limited", &MjModel::jnt_limited) - .property("jnt_actfrclimited", &MjModel::jnt_actfrclimited) - .property("jnt_actgravcomp", &MjModel::jnt_actgravcomp) - .property("jnt_solref", &MjModel::jnt_solref) - .property("jnt_solimp", &MjModel::jnt_solimp) - .property("jnt_pos", &MjModel::jnt_pos) - .property("jnt_axis", &MjModel::jnt_axis) - .property("jnt_stiffness", &MjModel::jnt_stiffness) - .property("jnt_range", &MjModel::jnt_range) - .property("jnt_actfrcrange", &MjModel::jnt_actfrcrange) - .property("jnt_margin", &MjModel::jnt_margin) - .property("jnt_user", &MjModel::jnt_user) - .property("dof_bodyid", &MjModel::dof_bodyid) - .property("dof_jntid", &MjModel::dof_jntid) - .property("dof_parentid", &MjModel::dof_parentid) - .property("dof_treeid", &MjModel::dof_treeid) - .property("dof_Madr", &MjModel::dof_Madr) - .property("dof_simplenum", &MjModel::dof_simplenum) - .property("dof_solref", &MjModel::dof_solref) - .property("dof_solimp", &MjModel::dof_solimp) - .property("dof_frictionloss", &MjModel::dof_frictionloss) - .property("dof_armature", &MjModel::dof_armature) - .property("dof_damping", &MjModel::dof_damping) - .property("dof_invweight0", &MjModel::dof_invweight0) - .property("dof_M0", &MjModel::dof_M0) - .property("geom_type", &MjModel::geom_type) - .property("geom_contype", &MjModel::geom_contype) - .property("geom_conaffinity", &MjModel::geom_conaffinity) - .property("geom_condim", &MjModel::geom_condim) - .property("geom_bodyid", &MjModel::geom_bodyid) - .property("geom_dataid", &MjModel::geom_dataid) - .property("geom_matid", &MjModel::geom_matid) - .property("geom_group", &MjModel::geom_group) - .property("geom_priority", &MjModel::geom_priority) - .property("geom_plugin", &MjModel::geom_plugin) - .property("geom_sameframe", &MjModel::geom_sameframe) - .property("geom_solmix", &MjModel::geom_solmix) - .property("geom_solref", &MjModel::geom_solref) - .property("geom_solimp", &MjModel::geom_solimp) - .property("geom_size", &MjModel::geom_size) - .property("geom_aabb", &MjModel::geom_aabb) - .property("geom_rbound", &MjModel::geom_rbound) - .property("geom_pos", &MjModel::geom_pos) - .property("geom_quat", &MjModel::geom_quat) - .property("geom_friction", &MjModel::geom_friction) - .property("geom_margin", &MjModel::geom_margin) - .property("geom_gap", &MjModel::geom_gap) - .property("geom_fluid", &MjModel::geom_fluid) - .property("geom_user", &MjModel::geom_user) - .property("geom_rgba", &MjModel::geom_rgba) - .property("site_type", &MjModel::site_type) - .property("site_bodyid", &MjModel::site_bodyid) - .property("site_matid", &MjModel::site_matid) - .property("site_group", &MjModel::site_group) - .property("site_sameframe", &MjModel::site_sameframe) - .property("site_size", &MjModel::site_size) - .property("site_pos", &MjModel::site_pos) - .property("site_quat", &MjModel::site_quat) - .property("site_user", &MjModel::site_user) - .property("site_rgba", &MjModel::site_rgba) - .property("cam_mode", &MjModel::cam_mode) - .property("cam_bodyid", &MjModel::cam_bodyid) - .property("cam_targetbodyid", &MjModel::cam_targetbodyid) - .property("cam_pos", &MjModel::cam_pos) - .property("cam_quat", &MjModel::cam_quat) - .property("cam_poscom0", &MjModel::cam_poscom0) - .property("cam_pos0", &MjModel::cam_pos0) - .property("cam_mat0", &MjModel::cam_mat0) - .property("cam_orthographic", &MjModel::cam_orthographic) - .property("cam_fovy", &MjModel::cam_fovy) - .property("cam_ipd", &MjModel::cam_ipd) - .property("cam_resolution", &MjModel::cam_resolution) - .property("cam_sensorsize", &MjModel::cam_sensorsize) - .property("cam_intrinsic", &MjModel::cam_intrinsic) - .property("cam_user", &MjModel::cam_user) - .property("light_mode", &MjModel::light_mode) - .property("light_bodyid", &MjModel::light_bodyid) - .property("light_targetbodyid", &MjModel::light_targetbodyid) - .property("light_type", &MjModel::light_type) - .property("light_texid", &MjModel::light_texid) - .property("light_castshadow", &MjModel::light_castshadow) - .property("light_bulbradius", &MjModel::light_bulbradius) - .property("light_intensity", &MjModel::light_intensity) - .property("light_range", &MjModel::light_range) - .property("light_active", &MjModel::light_active) - .property("light_pos", &MjModel::light_pos) - .property("light_dir", &MjModel::light_dir) - .property("light_poscom0", &MjModel::light_poscom0) - .property("light_pos0", &MjModel::light_pos0) - .property("light_dir0", &MjModel::light_dir0) - .property("light_attenuation", &MjModel::light_attenuation) - .property("light_cutoff", &MjModel::light_cutoff) - .property("light_exponent", &MjModel::light_exponent) - .property("light_ambient", &MjModel::light_ambient) - .property("light_diffuse", &MjModel::light_diffuse) - .property("light_specular", &MjModel::light_specular) - .property("flex_contype", &MjModel::flex_contype) - .property("flex_conaffinity", &MjModel::flex_conaffinity) - .property("flex_condim", &MjModel::flex_condim) - .property("flex_priority", &MjModel::flex_priority) - .property("flex_solmix", &MjModel::flex_solmix) - .property("flex_solref", &MjModel::flex_solref) - .property("flex_solimp", &MjModel::flex_solimp) - .property("flex_friction", &MjModel::flex_friction) - .property("flex_margin", &MjModel::flex_margin) - .property("flex_gap", &MjModel::flex_gap) - .property("flex_internal", &MjModel::flex_internal) - .property("flex_selfcollide", &MjModel::flex_selfcollide) - .property("flex_activelayers", &MjModel::flex_activelayers) - .property("flex_passive", &MjModel::flex_passive) - .property("flex_dim", &MjModel::flex_dim) - .property("flex_matid", &MjModel::flex_matid) - .property("flex_group", &MjModel::flex_group) - .property("flex_interp", &MjModel::flex_interp) - .property("flex_nodeadr", &MjModel::flex_nodeadr) - .property("flex_nodenum", &MjModel::flex_nodenum) - .property("flex_vertadr", &MjModel::flex_vertadr) - .property("flex_vertnum", &MjModel::flex_vertnum) - .property("flex_edgeadr", &MjModel::flex_edgeadr) - .property("flex_edgenum", &MjModel::flex_edgenum) - .property("flex_elemadr", &MjModel::flex_elemadr) - .property("flex_elemnum", &MjModel::flex_elemnum) - .property("flex_elemdataadr", &MjModel::flex_elemdataadr) - .property("flex_elemedgeadr", &MjModel::flex_elemedgeadr) - .property("flex_shellnum", &MjModel::flex_shellnum) - .property("flex_shelldataadr", &MjModel::flex_shelldataadr) - .property("flex_evpairadr", &MjModel::flex_evpairadr) - .property("flex_evpairnum", &MjModel::flex_evpairnum) - .property("flex_texcoordadr", &MjModel::flex_texcoordadr) - .property("flex_nodebodyid", &MjModel::flex_nodebodyid) - .property("flex_vertbodyid", &MjModel::flex_vertbodyid) - .property("flex_edge", &MjModel::flex_edge) - .property("flex_edgeflap", &MjModel::flex_edgeflap) - .property("flex_elem", &MjModel::flex_elem) - .property("flex_elemtexcoord", &MjModel::flex_elemtexcoord) - .property("flex_elemedge", &MjModel::flex_elemedge) - .property("flex_elemlayer", &MjModel::flex_elemlayer) - .property("flex_shell", &MjModel::flex_shell) - .property("flex_evpair", &MjModel::flex_evpair) - .property("flex_vert", &MjModel::flex_vert) - .property("flex_vert0", &MjModel::flex_vert0) - .property("flex_node", &MjModel::flex_node) - .property("flex_node0", &MjModel::flex_node0) - .property("flexedge_length0", &MjModel::flexedge_length0) - .property("flexedge_invweight0", &MjModel::flexedge_invweight0) - .property("flex_radius", &MjModel::flex_radius) - .property("flex_stiffness", &MjModel::flex_stiffness) - .property("flex_bending", &MjModel::flex_bending) - .property("flex_damping", &MjModel::flex_damping) - .property("flex_edgestiffness", &MjModel::flex_edgestiffness) - .property("flex_edgedamping", &MjModel::flex_edgedamping) - .property("flex_edgeequality", &MjModel::flex_edgeequality) - .property("flex_rigid", &MjModel::flex_rigid) - .property("flexedge_rigid", &MjModel::flexedge_rigid) - .property("flex_centered", &MjModel::flex_centered) - .property("flex_flatskin", &MjModel::flex_flatskin) - .property("flex_bvhadr", &MjModel::flex_bvhadr) - .property("flex_bvhnum", &MjModel::flex_bvhnum) - .property("flex_rgba", &MjModel::flex_rgba) - .property("flex_texcoord", &MjModel::flex_texcoord) - .property("mesh_vertadr", &MjModel::mesh_vertadr) - .property("mesh_vertnum", &MjModel::mesh_vertnum) - .property("mesh_faceadr", &MjModel::mesh_faceadr) - .property("mesh_facenum", &MjModel::mesh_facenum) - .property("mesh_bvhadr", &MjModel::mesh_bvhadr) - .property("mesh_bvhnum", &MjModel::mesh_bvhnum) - .property("mesh_octadr", &MjModel::mesh_octadr) - .property("mesh_octnum", &MjModel::mesh_octnum) - .property("mesh_normaladr", &MjModel::mesh_normaladr) - .property("mesh_normalnum", &MjModel::mesh_normalnum) - .property("mesh_texcoordadr", &MjModel::mesh_texcoordadr) - .property("mesh_texcoordnum", &MjModel::mesh_texcoordnum) - .property("mesh_graphadr", &MjModel::mesh_graphadr) - .property("mesh_vert", &MjModel::mesh_vert) - .property("mesh_normal", &MjModel::mesh_normal) - .property("mesh_texcoord", &MjModel::mesh_texcoord) - .property("mesh_face", &MjModel::mesh_face) - .property("mesh_facenormal", &MjModel::mesh_facenormal) - .property("mesh_facetexcoord", &MjModel::mesh_facetexcoord) - .property("mesh_graph", &MjModel::mesh_graph) - .property("mesh_scale", &MjModel::mesh_scale) - .property("mesh_pos", &MjModel::mesh_pos) - .property("mesh_quat", &MjModel::mesh_quat) - .property("mesh_pathadr", &MjModel::mesh_pathadr) - .property("mesh_polynum", &MjModel::mesh_polynum) - .property("mesh_polyadr", &MjModel::mesh_polyadr) - .property("mesh_polynormal", &MjModel::mesh_polynormal) - .property("mesh_polyvertadr", &MjModel::mesh_polyvertadr) - .property("mesh_polyvertnum", &MjModel::mesh_polyvertnum) - .property("mesh_polyvert", &MjModel::mesh_polyvert) - .property("mesh_polymapadr", &MjModel::mesh_polymapadr) - .property("mesh_polymapnum", &MjModel::mesh_polymapnum) - .property("mesh_polymap", &MjModel::mesh_polymap) - .property("skin_matid", &MjModel::skin_matid) - .property("skin_group", &MjModel::skin_group) - .property("skin_rgba", &MjModel::skin_rgba) - .property("skin_inflate", &MjModel::skin_inflate) - .property("skin_vertadr", &MjModel::skin_vertadr) - .property("skin_vertnum", &MjModel::skin_vertnum) - .property("skin_texcoordadr", &MjModel::skin_texcoordadr) - .property("skin_faceadr", &MjModel::skin_faceadr) - .property("skin_facenum", &MjModel::skin_facenum) - .property("skin_boneadr", &MjModel::skin_boneadr) - .property("skin_bonenum", &MjModel::skin_bonenum) - .property("skin_vert", &MjModel::skin_vert) - .property("skin_texcoord", &MjModel::skin_texcoord) - .property("skin_face", &MjModel::skin_face) - .property("skin_bonevertadr", &MjModel::skin_bonevertadr) - .property("skin_bonevertnum", &MjModel::skin_bonevertnum) - .property("skin_bonebindpos", &MjModel::skin_bonebindpos) - .property("skin_bonebindquat", &MjModel::skin_bonebindquat) - .property("skin_bonebodyid", &MjModel::skin_bonebodyid) - .property("skin_bonevertid", &MjModel::skin_bonevertid) - .property("skin_bonevertweight", &MjModel::skin_bonevertweight) - .property("skin_pathadr", &MjModel::skin_pathadr) - .property("hfield_size", &MjModel::hfield_size) - .property("hfield_nrow", &MjModel::hfield_nrow) - .property("hfield_ncol", &MjModel::hfield_ncol) - .property("hfield_adr", &MjModel::hfield_adr) - .property("hfield_data", &MjModel::hfield_data) - .property("hfield_pathadr", &MjModel::hfield_pathadr) - .property("tex_type", &MjModel::tex_type) - .property("tex_colorspace", &MjModel::tex_colorspace) - .property("tex_height", &MjModel::tex_height) - .property("tex_width", &MjModel::tex_width) - .property("tex_nchannel", &MjModel::tex_nchannel) - .property("tex_adr", &MjModel::tex_adr) - .property("tex_data", &MjModel::tex_data) - .property("tex_pathadr", &MjModel::tex_pathadr) - .property("mat_texid", &MjModel::mat_texid) - .property("mat_texuniform", &MjModel::mat_texuniform) - .property("mat_texrepeat", &MjModel::mat_texrepeat) - .property("mat_emission", &MjModel::mat_emission) - .property("mat_specular", &MjModel::mat_specular) - .property("mat_shininess", &MjModel::mat_shininess) - .property("mat_reflectance", &MjModel::mat_reflectance) - .property("mat_metallic", &MjModel::mat_metallic) - .property("mat_roughness", &MjModel::mat_roughness) - .property("mat_rgba", &MjModel::mat_rgba) - .property("pair_dim", &MjModel::pair_dim) - .property("pair_geom1", &MjModel::pair_geom1) - .property("pair_geom2", &MjModel::pair_geom2) - .property("pair_signature", &MjModel::pair_signature) - .property("pair_solref", &MjModel::pair_solref) - .property("pair_solreffriction", &MjModel::pair_solreffriction) - .property("pair_solimp", &MjModel::pair_solimp) - .property("pair_margin", &MjModel::pair_margin) - .property("pair_gap", &MjModel::pair_gap) - .property("pair_friction", &MjModel::pair_friction) - .property("exclude_signature", &MjModel::exclude_signature) - .property("eq_type", &MjModel::eq_type) - .property("eq_obj1id", &MjModel::eq_obj1id) - .property("eq_obj2id", &MjModel::eq_obj2id) - .property("eq_objtype", &MjModel::eq_objtype) - .property("eq_active0", &MjModel::eq_active0) - .property("eq_solref", &MjModel::eq_solref) - .property("eq_solimp", &MjModel::eq_solimp) - .property("eq_data", &MjModel::eq_data) - .property("tendon_adr", &MjModel::tendon_adr) - .property("tendon_num", &MjModel::tendon_num) - .property("tendon_matid", &MjModel::tendon_matid) - .property("tendon_group", &MjModel::tendon_group) - .property("tendon_limited", &MjModel::tendon_limited) - .property("tendon_actfrclimited", &MjModel::tendon_actfrclimited) - .property("tendon_width", &MjModel::tendon_width) - .property("tendon_solref_lim", &MjModel::tendon_solref_lim) - .property("tendon_solimp_lim", &MjModel::tendon_solimp_lim) - .property("tendon_solref_fri", &MjModel::tendon_solref_fri) - .property("tendon_solimp_fri", &MjModel::tendon_solimp_fri) - .property("tendon_range", &MjModel::tendon_range) - .property("tendon_actfrcrange", &MjModel::tendon_actfrcrange) - .property("tendon_margin", &MjModel::tendon_margin) - .property("tendon_stiffness", &MjModel::tendon_stiffness) - .property("tendon_damping", &MjModel::tendon_damping) - .property("tendon_armature", &MjModel::tendon_armature) - .property("tendon_frictionloss", &MjModel::tendon_frictionloss) - .property("tendon_lengthspring", &MjModel::tendon_lengthspring) - .property("tendon_length0", &MjModel::tendon_length0) - .property("tendon_invweight0", &MjModel::tendon_invweight0) - .property("tendon_user", &MjModel::tendon_user) - .property("tendon_rgba", &MjModel::tendon_rgba) - .property("wrap_type", &MjModel::wrap_type) - .property("wrap_objid", &MjModel::wrap_objid) - .property("wrap_prm", &MjModel::wrap_prm) - .property("actuator_trntype", &MjModel::actuator_trntype) - .property("actuator_dyntype", &MjModel::actuator_dyntype) - .property("actuator_gaintype", &MjModel::actuator_gaintype) - .property("actuator_biastype", &MjModel::actuator_biastype) - .property("actuator_trnid", &MjModel::actuator_trnid) - .property("actuator_actadr", &MjModel::actuator_actadr) - .property("actuator_actnum", &MjModel::actuator_actnum) - .property("actuator_group", &MjModel::actuator_group) - .property("actuator_ctrllimited", &MjModel::actuator_ctrllimited) - .property("actuator_forcelimited", &MjModel::actuator_forcelimited) - .property("actuator_actlimited", &MjModel::actuator_actlimited) - .property("actuator_dynprm", &MjModel::actuator_dynprm) - .property("actuator_gainprm", &MjModel::actuator_gainprm) - .property("actuator_biasprm", &MjModel::actuator_biasprm) - .property("actuator_actearly", &MjModel::actuator_actearly) - .property("actuator_ctrlrange", &MjModel::actuator_ctrlrange) - .property("actuator_forcerange", &MjModel::actuator_forcerange) - .property("actuator_actrange", &MjModel::actuator_actrange) - .property("actuator_gear", &MjModel::actuator_gear) - .property("actuator_cranklength", &MjModel::actuator_cranklength) - .property("actuator_acc0", &MjModel::actuator_acc0) - .property("actuator_length0", &MjModel::actuator_length0) - .property("actuator_lengthrange", &MjModel::actuator_lengthrange) - .property("actuator_user", &MjModel::actuator_user) - .property("actuator_plugin", &MjModel::actuator_plugin) - .property("sensor_type", &MjModel::sensor_type) - .property("sensor_datatype", &MjModel::sensor_datatype) - .property("sensor_needstage", &MjModel::sensor_needstage) - .property("sensor_objtype", &MjModel::sensor_objtype) - .property("sensor_objid", &MjModel::sensor_objid) - .property("sensor_reftype", &MjModel::sensor_reftype) - .property("sensor_refid", &MjModel::sensor_refid) - .property("sensor_intprm", &MjModel::sensor_intprm) - .property("sensor_dim", &MjModel::sensor_dim) - .property("sensor_adr", &MjModel::sensor_adr) - .property("sensor_cutoff", &MjModel::sensor_cutoff) - .property("sensor_noise", &MjModel::sensor_noise) - .property("sensor_user", &MjModel::sensor_user) - .property("sensor_plugin", &MjModel::sensor_plugin) - .property("plugin", &MjModel::plugin) - .property("plugin_stateadr", &MjModel::plugin_stateadr) - .property("plugin_statenum", &MjModel::plugin_statenum) - .property("plugin_attr", &MjModel::plugin_attr) - .property("plugin_attradr", &MjModel::plugin_attradr) - .property("numeric_adr", &MjModel::numeric_adr) - .property("numeric_size", &MjModel::numeric_size) - .property("numeric_data", &MjModel::numeric_data) - .property("text_adr", &MjModel::text_adr) - .property("text_size", &MjModel::text_size) - .property("text_data", &MjModel::text_data) - .property("tuple_adr", &MjModel::tuple_adr) - .property("tuple_size", &MjModel::tuple_size) - .property("tuple_objtype", &MjModel::tuple_objtype) - .property("tuple_objid", &MjModel::tuple_objid) - .property("tuple_objprm", &MjModel::tuple_objprm) - .property("key_time", &MjModel::key_time) - .property("key_qpos", &MjModel::key_qpos) - .property("key_qvel", &MjModel::key_qvel) - .property("key_act", &MjModel::key_act) - .property("key_mpos", &MjModel::key_mpos) - .property("key_mquat", &MjModel::key_mquat) - .property("key_ctrl", &MjModel::key_ctrl) - .property("name_bodyadr", &MjModel::name_bodyadr) - .property("name_jntadr", &MjModel::name_jntadr) - .property("name_geomadr", &MjModel::name_geomadr) - .property("name_siteadr", &MjModel::name_siteadr) - .property("name_camadr", &MjModel::name_camadr) - .property("name_lightadr", &MjModel::name_lightadr) - .property("name_flexadr", &MjModel::name_flexadr) - .property("name_meshadr", &MjModel::name_meshadr) - .property("name_skinadr", &MjModel::name_skinadr) - .property("name_hfieldadr", &MjModel::name_hfieldadr) - .property("name_texadr", &MjModel::name_texadr) - .property("name_matadr", &MjModel::name_matadr) - .property("name_pairadr", &MjModel::name_pairadr) - .property("name_excludeadr", &MjModel::name_excludeadr) - .property("name_eqadr", &MjModel::name_eqadr) - .property("name_tendonadr", &MjModel::name_tendonadr) - .property("name_actuatoradr", &MjModel::name_actuatoradr) - .property("name_sensoradr", &MjModel::name_sensoradr) - .property("name_numericadr", &MjModel::name_numericadr) - .property("name_textadr", &MjModel::name_textadr) - .property("name_tupleadr", &MjModel::name_tupleadr) - .property("name_keyadr", &MjModel::name_keyadr) - .property("name_pluginadr", &MjModel::name_pluginadr) - .property("names", &MjModel::names) - .property("names_map", &MjModel::names_map) - .property("paths", &MjModel::paths) - .property("B_rownnz", &MjModel::B_rownnz) - .property("B_rowadr", &MjModel::B_rowadr) - .property("B_colind", &MjModel::B_colind) - .property("M_rownnz", &MjModel::M_rownnz) - .property("M_rowadr", &MjModel::M_rowadr) - .property("M_colind", &MjModel::M_colind) - .property("mapM2M", &MjModel::mapM2M) - .property("D_rownnz", &MjModel::D_rownnz) - .property("D_rowadr", &MjModel::D_rowadr) - .property("D_diag", &MjModel::D_diag) - .property("D_colind", &MjModel::D_colind) - .property("mapM2D", &MjModel::mapM2D) - .property("mapD2M", &MjModel::mapD2M) - .property("signature", &MjModel::signature, &MjModel::set_signature, reference()) - ; - emscripten::class_("MjData") - .constructor() - .constructor() - .property("narena", &MjData::narena, &MjData::set_narena, reference()) - .property("nbuffer", &MjData::nbuffer, &MjData::set_nbuffer, reference()) - .property("nplugin", &MjData::nplugin, &MjData::set_nplugin, reference()) - .property("pstack", &MjData::pstack, &MjData::set_pstack, reference()) - .property("pbase", &MjData::pbase, &MjData::set_pbase, reference()) - .property("parena", &MjData::parena, &MjData::set_parena, reference()) - .property("maxuse_stack", &MjData::maxuse_stack, &MjData::set_maxuse_stack, reference()) - .property("maxuse_threadstack", &MjData::maxuse_threadstack) - .property("maxuse_arena", &MjData::maxuse_arena, &MjData::set_maxuse_arena, reference()) - .property("maxuse_con", &MjData::maxuse_con, &MjData::set_maxuse_con, reference()) - .property("maxuse_efc", &MjData::maxuse_efc, &MjData::set_maxuse_efc, reference()) - .property("solver", &MjData::solver) - .property("solver_niter", &MjData::solver_niter) - .property("solver_nnz", &MjData::solver_nnz) - .property("solver_fwdinv", &MjData::solver_fwdinv) - .property("warning", &MjData::warning) - .property("timer", &MjData::timer) - .property("ncon", &MjData::ncon, &MjData::set_ncon, reference()) - .property("ne", &MjData::ne, &MjData::set_ne, reference()) - .property("nf", &MjData::nf, &MjData::set_nf, reference()) - .property("nl", &MjData::nl, &MjData::set_nl, reference()) - .property("nefc", &MjData::nefc, &MjData::set_nefc, reference()) - .property("nJ", &MjData::nJ, &MjData::set_nJ, reference()) - .property("nA", &MjData::nA, &MjData::set_nA, reference()) - .property("nisland", &MjData::nisland, &MjData::set_nisland, reference()) - .property("nidof", &MjData::nidof, &MjData::set_nidof, reference()) - .property("time", &MjData::time, &MjData::set_time, reference()) - .property("energy", &MjData::energy) - .property("buffer", &MjData::buffer) - .property("arena", &MjData::arena) - .property("qpos", &MjData::qpos) - .property("qvel", &MjData::qvel) - .property("act", &MjData::act) - .property("qacc_warmstart", &MjData::qacc_warmstart) - .property("plugin_state", &MjData::plugin_state) - .property("ctrl", &MjData::ctrl) - .property("qfrc_applied", &MjData::qfrc_applied) - .property("xfrc_applied", &MjData::xfrc_applied) - .property("eq_active", &MjData::eq_active) - .property("mocap_pos", &MjData::mocap_pos) - .property("mocap_quat", &MjData::mocap_quat) - .property("qacc", &MjData::qacc) - .property("act_dot", &MjData::act_dot) - .property("userdata", &MjData::userdata) - .property("sensordata", &MjData::sensordata) - .property("plugin", &MjData::plugin) - .property("plugin_data", &MjData::plugin_data) - .property("xpos", &MjData::xpos) - .property("xquat", &MjData::xquat) - .property("xmat", &MjData::xmat) - .property("xipos", &MjData::xipos) - .property("ximat", &MjData::ximat) - .property("xanchor", &MjData::xanchor) - .property("xaxis", &MjData::xaxis) - .property("geom_xpos", &MjData::geom_xpos) - .property("geom_xmat", &MjData::geom_xmat) - .property("site_xpos", &MjData::site_xpos) - .property("site_xmat", &MjData::site_xmat) - .property("cam_xpos", &MjData::cam_xpos) - .property("cam_xmat", &MjData::cam_xmat) - .property("light_xpos", &MjData::light_xpos) - .property("light_xdir", &MjData::light_xdir) - .property("subtree_com", &MjData::subtree_com) - .property("cdof", &MjData::cdof) - .property("cinert", &MjData::cinert) - .property("flexvert_xpos", &MjData::flexvert_xpos) - .property("flexelem_aabb", &MjData::flexelem_aabb) - .property("flexedge_J_rownnz", &MjData::flexedge_J_rownnz) - .property("flexedge_J_rowadr", &MjData::flexedge_J_rowadr) - .property("flexedge_J_colind", &MjData::flexedge_J_colind) - .property("flexedge_J", &MjData::flexedge_J) - .property("flexedge_length", &MjData::flexedge_length) - .property("bvh_aabb_dyn", &MjData::bvh_aabb_dyn) - .property("ten_wrapadr", &MjData::ten_wrapadr) - .property("ten_wrapnum", &MjData::ten_wrapnum) - .property("ten_J_rownnz", &MjData::ten_J_rownnz) - .property("ten_J_rowadr", &MjData::ten_J_rowadr) - .property("ten_J_colind", &MjData::ten_J_colind) - .property("ten_J", &MjData::ten_J) - .property("ten_length", &MjData::ten_length) - .property("wrap_obj", &MjData::wrap_obj) - .property("wrap_xpos", &MjData::wrap_xpos) - .property("actuator_length", &MjData::actuator_length) - .property("moment_rownnz", &MjData::moment_rownnz) - .property("moment_rowadr", &MjData::moment_rowadr) - .property("moment_colind", &MjData::moment_colind) - .property("actuator_moment", &MjData::actuator_moment) - .property("crb", &MjData::crb) - .property("qM", &MjData::qM) - .property("M", &MjData::M) - .property("qLD", &MjData::qLD) - .property("qLDiagInv", &MjData::qLDiagInv) - .property("bvh_active", &MjData::bvh_active) - .property("flexedge_velocity", &MjData::flexedge_velocity) - .property("ten_velocity", &MjData::ten_velocity) - .property("actuator_velocity", &MjData::actuator_velocity) - .property("cvel", &MjData::cvel) - .property("cdof_dot", &MjData::cdof_dot) - .property("qfrc_bias", &MjData::qfrc_bias) - .property("qfrc_spring", &MjData::qfrc_spring) - .property("qfrc_damper", &MjData::qfrc_damper) - .property("qfrc_gravcomp", &MjData::qfrc_gravcomp) - .property("qfrc_fluid", &MjData::qfrc_fluid) - .property("qfrc_passive", &MjData::qfrc_passive) - .property("subtree_linvel", &MjData::subtree_linvel) - .property("subtree_angmom", &MjData::subtree_angmom) - .property("qH", &MjData::qH) - .property("qHDiagInv", &MjData::qHDiagInv) - .property("qDeriv", &MjData::qDeriv) - .property("qLU", &MjData::qLU) - .property("actuator_force", &MjData::actuator_force) - .property("qfrc_actuator", &MjData::qfrc_actuator) - .property("qfrc_smooth", &MjData::qfrc_smooth) - .property("qacc_smooth", &MjData::qacc_smooth) - .property("qfrc_constraint", &MjData::qfrc_constraint) - .property("qfrc_inverse", &MjData::qfrc_inverse) - .property("cacc", &MjData::cacc) - .property("cfrc_int", &MjData::cfrc_int) - .property("cfrc_ext", &MjData::cfrc_ext) - .property("contact", &MjData::contact) - .property("efc_type", &MjData::efc_type) - .property("efc_id", &MjData::efc_id) - .property("efc_J_rownnz", &MjData::efc_J_rownnz) - .property("efc_J_rowadr", &MjData::efc_J_rowadr) - .property("efc_J_rowsuper", &MjData::efc_J_rowsuper) - .property("efc_J_colind", &MjData::efc_J_colind) - .property("efc_J", &MjData::efc_J) - .property("efc_pos", &MjData::efc_pos) - .property("efc_margin", &MjData::efc_margin) - .property("efc_frictionloss", &MjData::efc_frictionloss) - .property("efc_diagApprox", &MjData::efc_diagApprox) - .property("efc_KBIP", &MjData::efc_KBIP) - .property("efc_D", &MjData::efc_D) - .property("efc_R", &MjData::efc_R) - .property("tendon_efcadr", &MjData::tendon_efcadr) - .property("dof_island", &MjData::dof_island) - .property("island_nv", &MjData::island_nv) - .property("island_idofadr", &MjData::island_idofadr) - .property("island_dofadr", &MjData::island_dofadr) - .property("map_dof2idof", &MjData::map_dof2idof) - .property("map_idof2dof", &MjData::map_idof2dof) - .property("ifrc_smooth", &MjData::ifrc_smooth) - .property("iacc_smooth", &MjData::iacc_smooth) - .property("iM_rownnz", &MjData::iM_rownnz) - .property("iM_rowadr", &MjData::iM_rowadr) - .property("iM_colind", &MjData::iM_colind) - .property("iM", &MjData::iM) - .property("iLD", &MjData::iLD) - .property("iLDiagInv", &MjData::iLDiagInv) - .property("iacc", &MjData::iacc) - .property("efc_island", &MjData::efc_island) - .property("island_ne", &MjData::island_ne) - .property("island_nf", &MjData::island_nf) - .property("island_nefc", &MjData::island_nefc) - .property("island_iefcadr", &MjData::island_iefcadr) - .property("map_efc2iefc", &MjData::map_efc2iefc) - .property("map_iefc2efc", &MjData::map_iefc2efc) - .property("iefc_type", &MjData::iefc_type) - .property("iefc_id", &MjData::iefc_id) - .property("iefc_J_rownnz", &MjData::iefc_J_rownnz) - .property("iefc_J_rowadr", &MjData::iefc_J_rowadr) - .property("iefc_J_rowsuper", &MjData::iefc_J_rowsuper) - .property("iefc_J_colind", &MjData::iefc_J_colind) - .property("iefc_J", &MjData::iefc_J) - .property("iefc_frictionloss", &MjData::iefc_frictionloss) - .property("iefc_D", &MjData::iefc_D) - .property("iefc_R", &MjData::iefc_R) - .property("efc_AR_rownnz", &MjData::efc_AR_rownnz) - .property("efc_AR_rowadr", &MjData::efc_AR_rowadr) - .property("efc_AR_colind", &MjData::efc_AR_colind) - .property("efc_AR", &MjData::efc_AR) - .property("efc_vel", &MjData::efc_vel) - .property("efc_aref", &MjData::efc_aref) - .property("efc_b", &MjData::efc_b) - .property("iefc_aref", &MjData::iefc_aref) - .property("iefc_state", &MjData::iefc_state) - .property("iefc_force", &MjData::iefc_force) - .property("efc_state", &MjData::efc_state) - .property("efc_force", &MjData::efc_force) - .property("ifrc_constraint", &MjData::ifrc_constraint) - .property("threadpool", &MjData::threadpool, &MjData::set_threadpool, reference()) - .property("signature", &MjData::signature, &MjData::set_signature, reference()) - ; - emscripten::class_("MjvScene") - .constructor<>() - .constructor() - .property("maxgeom", &MjvScene::maxgeom, &MjvScene::set_maxgeom, reference()) - .property("ngeom", &MjvScene::ngeom, &MjvScene::set_ngeom, reference()) - .property("geoms", &MjvScene::geoms) - .property("geomorder", &MjvScene::geomorder) - .property("nflex", &MjvScene::nflex, &MjvScene::set_nflex, reference()) - .property("flexedgeadr", &MjvScene::flexedgeadr) - .property("flexedgenum", &MjvScene::flexedgenum) - .property("flexvertadr", &MjvScene::flexvertadr) - .property("flexvertnum", &MjvScene::flexvertnum) - .property("flexfaceadr", &MjvScene::flexfaceadr) - .property("flexfacenum", &MjvScene::flexfacenum) - .property("flexfaceused", &MjvScene::flexfaceused) - .property("flexedge", &MjvScene::flexedge) - .property("flexvert", &MjvScene::flexvert) - .property("flexface", &MjvScene::flexface) - .property("flexnormal", &MjvScene::flexnormal) - .property("flextexcoord", &MjvScene::flextexcoord) - .property("flexvertopt", &MjvScene::flexvertopt, &MjvScene::set_flexvertopt, reference()) - .property("flexedgeopt", &MjvScene::flexedgeopt, &MjvScene::set_flexedgeopt, reference()) - .property("flexfaceopt", &MjvScene::flexfaceopt, &MjvScene::set_flexfaceopt, reference()) - .property("flexskinopt", &MjvScene::flexskinopt, &MjvScene::set_flexskinopt, reference()) - .property("nskin", &MjvScene::nskin, &MjvScene::set_nskin, reference()) - .property("skinfacenum", &MjvScene::skinfacenum) - .property("skinvertadr", &MjvScene::skinvertadr) - .property("skinvertnum", &MjvScene::skinvertnum) - .property("skinvert", &MjvScene::skinvert) - .property("skinnormal", &MjvScene::skinnormal) - .property("nlight", &MjvScene::nlight, &MjvScene::set_nlight, reference()) - .property("lights", &MjvScene::lights) - .property("camera", &MjvScene::camera) - .property("enabletransform", &MjvScene::enabletransform, &MjvScene::set_enabletransform, reference()) - .property("translate", &MjvScene::translate) - .property("rotate", &MjvScene::rotate) - .property("scale", &MjvScene::scale, &MjvScene::set_scale, reference()) - .property("stereo", &MjvScene::stereo, &MjvScene::set_stereo, reference()) - .property("flags", &MjvScene::flags) - .property("framewidth", &MjvScene::framewidth, &MjvScene::set_framewidth, reference()) - .property("framergb", &MjvScene::framergb) - .property("status", &MjvScene::status, &MjvScene::set_status, reference()) - ; - emscripten::class_("MjSpec") - .constructor() - .property("element", &MjSpec::element) - .property("modelname", &MjSpec::modelname, &MjSpec::set_modelname, reference()) - .property("compiler", &MjSpec::compiler) - .property("strippath", &MjSpec::strippath, &MjSpec::set_strippath, reference()) - .property("option", &MjSpec::option) - .property("visual", &MjSpec::visual) - .property("stat", &MjSpec::stat) - .property("memory", &MjSpec::memory, &MjSpec::set_memory, reference()) - .property("nemax", &MjSpec::nemax, &MjSpec::set_nemax, reference()) - .property("nuserdata", &MjSpec::nuserdata, &MjSpec::set_nuserdata, reference()) - .property("nuser_body", &MjSpec::nuser_body, &MjSpec::set_nuser_body, reference()) - .property("nuser_jnt", &MjSpec::nuser_jnt, &MjSpec::set_nuser_jnt, reference()) - .property("nuser_geom", &MjSpec::nuser_geom, &MjSpec::set_nuser_geom, reference()) - .property("nuser_site", &MjSpec::nuser_site, &MjSpec::set_nuser_site, reference()) - .property("nuser_cam", &MjSpec::nuser_cam, &MjSpec::set_nuser_cam, reference()) - .property("nuser_tendon", &MjSpec::nuser_tendon, &MjSpec::set_nuser_tendon, reference()) - .property("nuser_actuator", &MjSpec::nuser_actuator, &MjSpec::set_nuser_actuator, reference()) - .property("nuser_sensor", &MjSpec::nuser_sensor, &MjSpec::set_nuser_sensor, reference()) - .property("nkey", &MjSpec::nkey, &MjSpec::set_nkey, reference()) - .property("njmax", &MjSpec::njmax, &MjSpec::set_njmax, reference()) - .property("nconmax", &MjSpec::nconmax, &MjSpec::set_nconmax, reference()) - .property("nstack", &MjSpec::nstack, &MjSpec::set_nstack, reference()) - .property("comment", &MjSpec::comment, &MjSpec::set_comment, reference()) - .property("modelfiledir", &MjSpec::modelfiledir, &MjSpec::set_modelfiledir, reference()) - .property("hasImplicitPluginElem", &MjSpec::hasImplicitPluginElem, &MjSpec::set_hasImplicitPluginElem, reference()) - ; emscripten::class_("MjContact") - .constructor<>() - .function("copy", &MjContact::copy, take_ownership()) - .property("dist", &MjContact::dist, &MjContact::set_dist, reference()) - .property("pos", &MjContact::pos) - .property("frame", &MjContact::frame) - .property("includemargin", &MjContact::includemargin, &MjContact::set_includemargin, reference()) - .property("friction", &MjContact::friction) - .property("solref", &MjContact::solref) - .property("solreffriction", &MjContact::solreffriction) - .property("solimp", &MjContact::solimp) - .property("mu", &MjContact::mu, &MjContact::set_mu, reference()) - .property("H", &MjContact::H) - .property("dim", &MjContact::dim, &MjContact::set_dim, reference()) - .property("geom1", &MjContact::geom1, &MjContact::set_geom1, reference()) - .property("geom2", &MjContact::geom2, &MjContact::set_geom2, reference()) - .property("geom", &MjContact::geom) - .property("flex", &MjContact::flex) - .property("elem", &MjContact::elem) - .property("vert", &MjContact::vert) - .property("exclude", &MjContact::exclude, &MjContact::set_exclude, reference()) - .property("efc_address", &MjContact::efc_address, &MjContact::set_efc_address, reference()) - ; + .constructor<>() + .function("copy", &MjContact::copy, take_ownership()) + .property("dist", &MjContact::dist, &MjContact::set_dist, reference()) + .property("pos", &MjContact::pos) + .property("frame", &MjContact::frame) + .property("includemargin", &MjContact::includemargin, &MjContact::set_includemargin, reference()) + .property("friction", &MjContact::friction) + .property("solref", &MjContact::solref) + .property("solreffriction", &MjContact::solreffriction) + .property("solimp", &MjContact::solimp) + .property("mu", &MjContact::mu, &MjContact::set_mu, reference()) + .property("H", &MjContact::H) + .property("dim", &MjContact::dim, &MjContact::set_dim, reference()) + .property("geom1", &MjContact::geom1, &MjContact::set_geom1, reference()) + .property("geom2", &MjContact::geom2, &MjContact::set_geom2, reference()) + .property("geom", &MjContact::geom) + .property("flex", &MjContact::flex) + .property("elem", &MjContact::elem) + .property("vert", &MjContact::vert) + .property("exclude", &MjContact::exclude, &MjContact::set_exclude, reference()) + .property("efc_address", &MjContact::efc_address, &MjContact::set_efc_address, reference()); emscripten::class_("MjLROpt") - .constructor<>() - .function("copy", &MjLROpt::copy, take_ownership()) - .property("mode", &MjLROpt::mode, &MjLROpt::set_mode, reference()) - .property("useexisting", &MjLROpt::useexisting, &MjLROpt::set_useexisting, reference()) - .property("uselimit", &MjLROpt::uselimit, &MjLROpt::set_uselimit, reference()) - .property("accel", &MjLROpt::accel, &MjLROpt::set_accel, reference()) - .property("maxforce", &MjLROpt::maxforce, &MjLROpt::set_maxforce, reference()) - .property("timeconst", &MjLROpt::timeconst, &MjLROpt::set_timeconst, reference()) - .property("timestep", &MjLROpt::timestep, &MjLROpt::set_timestep, reference()) - .property("inttotal", &MjLROpt::inttotal, &MjLROpt::set_inttotal, reference()) - .property("interval", &MjLROpt::interval, &MjLROpt::set_interval, reference()) - .property("tolrange", &MjLROpt::tolrange, &MjLROpt::set_tolrange, reference()) - ; + .constructor<>() + .function("copy", &MjLROpt::copy, take_ownership()) + .property("mode", &MjLROpt::mode, &MjLROpt::set_mode, reference()) + .property("useexisting", &MjLROpt::useexisting, &MjLROpt::set_useexisting, reference()) + .property("uselimit", &MjLROpt::uselimit, &MjLROpt::set_uselimit, reference()) + .property("accel", &MjLROpt::accel, &MjLROpt::set_accel, reference()) + .property("maxforce", &MjLROpt::maxforce, &MjLROpt::set_maxforce, reference()) + .property("timeconst", &MjLROpt::timeconst, &MjLROpt::set_timeconst, reference()) + .property("timestep", &MjLROpt::timestep, &MjLROpt::set_timestep, reference()) + .property("inttotal", &MjLROpt::inttotal, &MjLROpt::set_inttotal, reference()) + .property("interval", &MjLROpt::interval, &MjLROpt::set_interval, reference()) + .property("tolrange", &MjLROpt::tolrange, &MjLROpt::set_tolrange, reference()); emscripten::class_("MjOption") - .constructor<>() - .function("copy", &MjOption::copy, take_ownership()) - .property("timestep", &MjOption::timestep, &MjOption::set_timestep, reference()) - .property("impratio", &MjOption::impratio, &MjOption::set_impratio, reference()) - .property("tolerance", &MjOption::tolerance, &MjOption::set_tolerance, reference()) - .property("ls_tolerance", &MjOption::ls_tolerance, &MjOption::set_ls_tolerance, reference()) - .property("noslip_tolerance", &MjOption::noslip_tolerance, &MjOption::set_noslip_tolerance, reference()) - .property("ccd_tolerance", &MjOption::ccd_tolerance, &MjOption::set_ccd_tolerance, reference()) - .property("gravity", &MjOption::gravity) - .property("wind", &MjOption::wind) - .property("magnetic", &MjOption::magnetic) - .property("density", &MjOption::density, &MjOption::set_density, reference()) - .property("viscosity", &MjOption::viscosity, &MjOption::set_viscosity, reference()) - .property("o_margin", &MjOption::o_margin, &MjOption::set_o_margin, reference()) - .property("o_solref", &MjOption::o_solref) - .property("o_solimp", &MjOption::o_solimp) - .property("o_friction", &MjOption::o_friction) - .property("integrator", &MjOption::integrator, &MjOption::set_integrator, reference()) - .property("cone", &MjOption::cone, &MjOption::set_cone, reference()) - .property("jacobian", &MjOption::jacobian, &MjOption::set_jacobian, reference()) - .property("solver", &MjOption::solver, &MjOption::set_solver, reference()) - .property("iterations", &MjOption::iterations, &MjOption::set_iterations, reference()) - .property("ls_iterations", &MjOption::ls_iterations, &MjOption::set_ls_iterations, reference()) - .property("noslip_iterations", &MjOption::noslip_iterations, &MjOption::set_noslip_iterations, reference()) - .property("ccd_iterations", &MjOption::ccd_iterations, &MjOption::set_ccd_iterations, reference()) - .property("disableflags", &MjOption::disableflags, &MjOption::set_disableflags, reference()) - .property("enableflags", &MjOption::enableflags, &MjOption::set_enableflags, reference()) - .property("disableactuator", &MjOption::disableactuator, &MjOption::set_disableactuator, reference()) - .property("sdf_initpoints", &MjOption::sdf_initpoints, &MjOption::set_sdf_initpoints, reference()) - .property("sdf_iterations", &MjOption::sdf_iterations, &MjOption::set_sdf_iterations, reference()) - ; + .constructor<>() + .function("copy", &MjOption::copy, take_ownership()) + .property("timestep", &MjOption::timestep, &MjOption::set_timestep, reference()) + .property("impratio", &MjOption::impratio, &MjOption::set_impratio, reference()) + .property("tolerance", &MjOption::tolerance, &MjOption::set_tolerance, reference()) + .property("ls_tolerance", &MjOption::ls_tolerance, &MjOption::set_ls_tolerance, reference()) + .property("noslip_tolerance", &MjOption::noslip_tolerance, &MjOption::set_noslip_tolerance, reference()) + .property("ccd_tolerance", &MjOption::ccd_tolerance, &MjOption::set_ccd_tolerance, reference()) + .property("gravity", &MjOption::gravity) + .property("wind", &MjOption::wind) + .property("magnetic", &MjOption::magnetic) + .property("density", &MjOption::density, &MjOption::set_density, reference()) + .property("viscosity", &MjOption::viscosity, &MjOption::set_viscosity, reference()) + .property("o_margin", &MjOption::o_margin, &MjOption::set_o_margin, reference()) + .property("o_solref", &MjOption::o_solref) + .property("o_solimp", &MjOption::o_solimp) + .property("o_friction", &MjOption::o_friction) + .property("integrator", &MjOption::integrator, &MjOption::set_integrator, reference()) + .property("cone", &MjOption::cone, &MjOption::set_cone, reference()) + .property("jacobian", &MjOption::jacobian, &MjOption::set_jacobian, reference()) + .property("solver", &MjOption::solver, &MjOption::set_solver, reference()) + .property("iterations", &MjOption::iterations, &MjOption::set_iterations, reference()) + .property("ls_iterations", &MjOption::ls_iterations, &MjOption::set_ls_iterations, reference()) + .property("noslip_iterations", &MjOption::noslip_iterations, &MjOption::set_noslip_iterations, reference()) + .property("ccd_iterations", &MjOption::ccd_iterations, &MjOption::set_ccd_iterations, reference()) + .property("disableflags", &MjOption::disableflags, &MjOption::set_disableflags, reference()) + .property("enableflags", &MjOption::enableflags, &MjOption::set_enableflags, reference()) + .property("disableactuator", &MjOption::disableactuator, &MjOption::set_disableactuator, reference()) + .property("sdf_initpoints", &MjOption::sdf_initpoints, &MjOption::set_sdf_initpoints, reference()) + .property("sdf_iterations", &MjOption::sdf_iterations, &MjOption::set_sdf_iterations, reference()); emscripten::class_("MjSolverStat") - .constructor<>() - .function("copy", &MjSolverStat::copy, take_ownership()) - .property("improvement", &MjSolverStat::improvement, &MjSolverStat::set_improvement, reference()) - .property("gradient", &MjSolverStat::gradient, &MjSolverStat::set_gradient, reference()) - .property("lineslope", &MjSolverStat::lineslope, &MjSolverStat::set_lineslope, reference()) - .property("nactive", &MjSolverStat::nactive, &MjSolverStat::set_nactive, reference()) - .property("nchange", &MjSolverStat::nchange, &MjSolverStat::set_nchange, reference()) - .property("neval", &MjSolverStat::neval, &MjSolverStat::set_neval, reference()) - .property("nupdate", &MjSolverStat::nupdate, &MjSolverStat::set_nupdate, reference()) - ; + .constructor<>() + .function("copy", &MjSolverStat::copy, take_ownership()) + .property("improvement", &MjSolverStat::improvement, &MjSolverStat::set_improvement, reference()) + .property("gradient", &MjSolverStat::gradient, &MjSolverStat::set_gradient, reference()) + .property("lineslope", &MjSolverStat::lineslope, &MjSolverStat::set_lineslope, reference()) + .property("nactive", &MjSolverStat::nactive, &MjSolverStat::set_nactive, reference()) + .property("nchange", &MjSolverStat::nchange, &MjSolverStat::set_nchange, reference()) + .property("neval", &MjSolverStat::neval, &MjSolverStat::set_neval, reference()) + .property("nupdate", &MjSolverStat::nupdate, &MjSolverStat::set_nupdate, reference()); emscripten::class_("MjStatistic") - .constructor<>() - .function("copy", &MjStatistic::copy, take_ownership()) - .property("meaninertia", &MjStatistic::meaninertia, &MjStatistic::set_meaninertia, reference()) - .property("meanmass", &MjStatistic::meanmass, &MjStatistic::set_meanmass, reference()) - .property("meansize", &MjStatistic::meansize, &MjStatistic::set_meansize, reference()) - .property("extent", &MjStatistic::extent, &MjStatistic::set_extent, reference()) - .property("center", &MjStatistic::center) - ; + .constructor<>() + .function("copy", &MjStatistic::copy, take_ownership()) + .property("meaninertia", &MjStatistic::meaninertia, &MjStatistic::set_meaninertia, reference()) + .property("meanmass", &MjStatistic::meanmass, &MjStatistic::set_meanmass, reference()) + .property("meansize", &MjStatistic::meansize, &MjStatistic::set_meansize, reference()) + .property("extent", &MjStatistic::extent, &MjStatistic::set_extent, reference()) + .property("center", &MjStatistic::center); emscripten::class_("MjTimerStat") - .constructor<>() - .function("copy", &MjTimerStat::copy, take_ownership()) - .property("duration", &MjTimerStat::duration, &MjTimerStat::set_duration, reference()) - .property("number", &MjTimerStat::number, &MjTimerStat::set_number, reference()) - ; + .constructor<>() + .function("copy", &MjTimerStat::copy, take_ownership()) + .property("duration", &MjTimerStat::duration, &MjTimerStat::set_duration, reference()) + .property("number", &MjTimerStat::number, &MjTimerStat::set_number, reference()); emscripten::class_("MjVisual") - .constructor<>() - .function("copy", &MjVisual::copy, take_ownership()) - .property("global", &MjVisual::global, reference()) - .property("quality", &MjVisual::quality, reference()) - .property("headlight", &MjVisual::headlight, reference()) - .property("map", &MjVisual::map, reference()) - .property("scale", &MjVisual::scale, reference()) - .property("rgba", &MjVisual::rgba, reference()) - ; + .constructor<>() + .function("copy", &MjVisual::copy, take_ownership()) + .property("global", &MjVisual::global, reference()) + .property("quality", &MjVisual::quality, reference()) + .property("headlight", &MjVisual::headlight, reference()) + .property("map", &MjVisual::map, reference()) + .property("scale", &MjVisual::scale, reference()) + .property("rgba", &MjVisual::rgba, reference()); emscripten::class_("MjVisualGlobal") - .constructor<>() - .function("copy", &MjVisualGlobal::copy, take_ownership()) - .property("cameraid", &MjVisualGlobal::cameraid, &MjVisualGlobal::set_cameraid, reference()) - .property("orthographic", &MjVisualGlobal::orthographic, &MjVisualGlobal::set_orthographic, reference()) - .property("fovy", &MjVisualGlobal::fovy, &MjVisualGlobal::set_fovy, reference()) - .property("ipd", &MjVisualGlobal::ipd, &MjVisualGlobal::set_ipd, reference()) - .property("azimuth", &MjVisualGlobal::azimuth, &MjVisualGlobal::set_azimuth, reference()) - .property("elevation", &MjVisualGlobal::elevation, &MjVisualGlobal::set_elevation, reference()) - .property("linewidth", &MjVisualGlobal::linewidth, &MjVisualGlobal::set_linewidth, reference()) - .property("glow", &MjVisualGlobal::glow, &MjVisualGlobal::set_glow, reference()) - .property("realtime", &MjVisualGlobal::realtime, &MjVisualGlobal::set_realtime, reference()) - .property("offwidth", &MjVisualGlobal::offwidth, &MjVisualGlobal::set_offwidth, reference()) - .property("offheight", &MjVisualGlobal::offheight, &MjVisualGlobal::set_offheight, reference()) - .property("ellipsoidinertia", &MjVisualGlobal::ellipsoidinertia, &MjVisualGlobal::set_ellipsoidinertia, reference()) - .property("bvactive", &MjVisualGlobal::bvactive, &MjVisualGlobal::set_bvactive, reference()) - ; + .constructor<>() + .function("copy", &MjVisualGlobal::copy, take_ownership()) + .property("cameraid", &MjVisualGlobal::cameraid, &MjVisualGlobal::set_cameraid, reference()) + .property("orthographic", &MjVisualGlobal::orthographic, &MjVisualGlobal::set_orthographic, reference()) + .property("fovy", &MjVisualGlobal::fovy, &MjVisualGlobal::set_fovy, reference()) + .property("ipd", &MjVisualGlobal::ipd, &MjVisualGlobal::set_ipd, reference()) + .property("azimuth", &MjVisualGlobal::azimuth, &MjVisualGlobal::set_azimuth, reference()) + .property("elevation", &MjVisualGlobal::elevation, &MjVisualGlobal::set_elevation, reference()) + .property("linewidth", &MjVisualGlobal::linewidth, &MjVisualGlobal::set_linewidth, reference()) + .property("glow", &MjVisualGlobal::glow, &MjVisualGlobal::set_glow, reference()) + .property("realtime", &MjVisualGlobal::realtime, &MjVisualGlobal::set_realtime, reference()) + .property("offwidth", &MjVisualGlobal::offwidth, &MjVisualGlobal::set_offwidth, reference()) + .property("offheight", &MjVisualGlobal::offheight, &MjVisualGlobal::set_offheight, reference()) + .property("ellipsoidinertia", &MjVisualGlobal::ellipsoidinertia, &MjVisualGlobal::set_ellipsoidinertia, reference()) + .property("bvactive", &MjVisualGlobal::bvactive, &MjVisualGlobal::set_bvactive, reference()); emscripten::class_("MjVisualHeadlight") - .constructor<>() - .function("copy", &MjVisualHeadlight::copy, take_ownership()) - .property("ambient", &MjVisualHeadlight::ambient) - .property("diffuse", &MjVisualHeadlight::diffuse) - .property("specular", &MjVisualHeadlight::specular) - .property("active", &MjVisualHeadlight::active, &MjVisualHeadlight::set_active, reference()) - ; + .constructor<>() + .function("copy", &MjVisualHeadlight::copy, take_ownership()) + .property("ambient", &MjVisualHeadlight::ambient) + .property("diffuse", &MjVisualHeadlight::diffuse) + .property("specular", &MjVisualHeadlight::specular) + .property("active", &MjVisualHeadlight::active, &MjVisualHeadlight::set_active, reference()); emscripten::class_("MjVisualMap") - .constructor<>() - .function("copy", &MjVisualMap::copy, take_ownership()) - .property("stiffness", &MjVisualMap::stiffness, &MjVisualMap::set_stiffness, reference()) - .property("stiffnessrot", &MjVisualMap::stiffnessrot, &MjVisualMap::set_stiffnessrot, reference()) - .property("force", &MjVisualMap::force, &MjVisualMap::set_force, reference()) - .property("torque", &MjVisualMap::torque, &MjVisualMap::set_torque, reference()) - .property("alpha", &MjVisualMap::alpha, &MjVisualMap::set_alpha, reference()) - .property("fogstart", &MjVisualMap::fogstart, &MjVisualMap::set_fogstart, reference()) - .property("fogend", &MjVisualMap::fogend, &MjVisualMap::set_fogend, reference()) - .property("znear", &MjVisualMap::znear, &MjVisualMap::set_znear, reference()) - .property("zfar", &MjVisualMap::zfar, &MjVisualMap::set_zfar, reference()) - .property("haze", &MjVisualMap::haze, &MjVisualMap::set_haze, reference()) - .property("shadowclip", &MjVisualMap::shadowclip, &MjVisualMap::set_shadowclip, reference()) - .property("shadowscale", &MjVisualMap::shadowscale, &MjVisualMap::set_shadowscale, reference()) - .property("actuatortendon", &MjVisualMap::actuatortendon, &MjVisualMap::set_actuatortendon, reference()) - ; + .constructor<>() + .function("copy", &MjVisualMap::copy, take_ownership()) + .property("stiffness", &MjVisualMap::stiffness, &MjVisualMap::set_stiffness, reference()) + .property("stiffnessrot", &MjVisualMap::stiffnessrot, &MjVisualMap::set_stiffnessrot, reference()) + .property("force", &MjVisualMap::force, &MjVisualMap::set_force, reference()) + .property("torque", &MjVisualMap::torque, &MjVisualMap::set_torque, reference()) + .property("alpha", &MjVisualMap::alpha, &MjVisualMap::set_alpha, reference()) + .property("fogstart", &MjVisualMap::fogstart, &MjVisualMap::set_fogstart, reference()) + .property("fogend", &MjVisualMap::fogend, &MjVisualMap::set_fogend, reference()) + .property("znear", &MjVisualMap::znear, &MjVisualMap::set_znear, reference()) + .property("zfar", &MjVisualMap::zfar, &MjVisualMap::set_zfar, reference()) + .property("haze", &MjVisualMap::haze, &MjVisualMap::set_haze, reference()) + .property("shadowclip", &MjVisualMap::shadowclip, &MjVisualMap::set_shadowclip, reference()) + .property("shadowscale", &MjVisualMap::shadowscale, &MjVisualMap::set_shadowscale, reference()) + .property("actuatortendon", &MjVisualMap::actuatortendon, &MjVisualMap::set_actuatortendon, reference()); emscripten::class_("MjVisualQuality") - .constructor<>() - .function("copy", &MjVisualQuality::copy, take_ownership()) - .property("shadowsize", &MjVisualQuality::shadowsize, &MjVisualQuality::set_shadowsize, reference()) - .property("offsamples", &MjVisualQuality::offsamples, &MjVisualQuality::set_offsamples, reference()) - .property("numslices", &MjVisualQuality::numslices, &MjVisualQuality::set_numslices, reference()) - .property("numstacks", &MjVisualQuality::numstacks, &MjVisualQuality::set_numstacks, reference()) - .property("numquads", &MjVisualQuality::numquads, &MjVisualQuality::set_numquads, reference()) - ; + .constructor<>() + .function("copy", &MjVisualQuality::copy, take_ownership()) + .property("shadowsize", &MjVisualQuality::shadowsize, &MjVisualQuality::set_shadowsize, reference()) + .property("offsamples", &MjVisualQuality::offsamples, &MjVisualQuality::set_offsamples, reference()) + .property("numslices", &MjVisualQuality::numslices, &MjVisualQuality::set_numslices, reference()) + .property("numstacks", &MjVisualQuality::numstacks, &MjVisualQuality::set_numstacks, reference()) + .property("numquads", &MjVisualQuality::numquads, &MjVisualQuality::set_numquads, reference()); emscripten::class_("MjVisualRgba") - .constructor<>() - .function("copy", &MjVisualRgba::copy, take_ownership()) - .property("fog", &MjVisualRgba::fog) - .property("haze", &MjVisualRgba::haze) - .property("force", &MjVisualRgba::force) - .property("inertia", &MjVisualRgba::inertia) - .property("joint", &MjVisualRgba::joint) - .property("actuator", &MjVisualRgba::actuator) - .property("actuatornegative", &MjVisualRgba::actuatornegative) - .property("actuatorpositive", &MjVisualRgba::actuatorpositive) - .property("com", &MjVisualRgba::com) - .property("camera", &MjVisualRgba::camera) - .property("light", &MjVisualRgba::light) - .property("selectpoint", &MjVisualRgba::selectpoint) - .property("connect", &MjVisualRgba::connect) - .property("contactpoint", &MjVisualRgba::contactpoint) - .property("contactforce", &MjVisualRgba::contactforce) - .property("contactfriction", &MjVisualRgba::contactfriction) - .property("contacttorque", &MjVisualRgba::contacttorque) - .property("contactgap", &MjVisualRgba::contactgap) - .property("rangefinder", &MjVisualRgba::rangefinder) - .property("constraint", &MjVisualRgba::constraint) - .property("slidercrank", &MjVisualRgba::slidercrank) - .property("crankbroken", &MjVisualRgba::crankbroken) - .property("frustum", &MjVisualRgba::frustum) - .property("bv", &MjVisualRgba::bv) - .property("bvactive", &MjVisualRgba::bvactive) - ; + .constructor<>() + .function("copy", &MjVisualRgba::copy, take_ownership()) + .property("fog", &MjVisualRgba::fog) + .property("haze", &MjVisualRgba::haze) + .property("force", &MjVisualRgba::force) + .property("inertia", &MjVisualRgba::inertia) + .property("joint", &MjVisualRgba::joint) + .property("actuator", &MjVisualRgba::actuator) + .property("actuatornegative", &MjVisualRgba::actuatornegative) + .property("actuatorpositive", &MjVisualRgba::actuatorpositive) + .property("com", &MjVisualRgba::com) + .property("camera", &MjVisualRgba::camera) + .property("light", &MjVisualRgba::light) + .property("selectpoint", &MjVisualRgba::selectpoint) + .property("connect", &MjVisualRgba::connect) + .property("contactpoint", &MjVisualRgba::contactpoint) + .property("contactforce", &MjVisualRgba::contactforce) + .property("contactfriction", &MjVisualRgba::contactfriction) + .property("contacttorque", &MjVisualRgba::contacttorque) + .property("contactgap", &MjVisualRgba::contactgap) + .property("rangefinder", &MjVisualRgba::rangefinder) + .property("constraint", &MjVisualRgba::constraint) + .property("slidercrank", &MjVisualRgba::slidercrank) + .property("crankbroken", &MjVisualRgba::crankbroken) + .property("frustum", &MjVisualRgba::frustum) + .property("bv", &MjVisualRgba::bv) + .property("bvactive", &MjVisualRgba::bvactive); emscripten::class_("MjVisualScale") - .constructor<>() - .function("copy", &MjVisualScale::copy, take_ownership()) - .property("forcewidth", &MjVisualScale::forcewidth, &MjVisualScale::set_forcewidth, reference()) - .property("contactwidth", &MjVisualScale::contactwidth, &MjVisualScale::set_contactwidth, reference()) - .property("contactheight", &MjVisualScale::contactheight, &MjVisualScale::set_contactheight, reference()) - .property("connect", &MjVisualScale::connect, &MjVisualScale::set_connect, reference()) - .property("com", &MjVisualScale::com, &MjVisualScale::set_com, reference()) - .property("camera", &MjVisualScale::camera, &MjVisualScale::set_camera, reference()) - .property("light", &MjVisualScale::light, &MjVisualScale::set_light, reference()) - .property("selectpoint", &MjVisualScale::selectpoint, &MjVisualScale::set_selectpoint, reference()) - .property("jointlength", &MjVisualScale::jointlength, &MjVisualScale::set_jointlength, reference()) - .property("jointwidth", &MjVisualScale::jointwidth, &MjVisualScale::set_jointwidth, reference()) - .property("actuatorlength", &MjVisualScale::actuatorlength, &MjVisualScale::set_actuatorlength, reference()) - .property("actuatorwidth", &MjVisualScale::actuatorwidth, &MjVisualScale::set_actuatorwidth, reference()) - .property("framelength", &MjVisualScale::framelength, &MjVisualScale::set_framelength, reference()) - .property("framewidth", &MjVisualScale::framewidth, &MjVisualScale::set_framewidth, reference()) - .property("constraint", &MjVisualScale::constraint, &MjVisualScale::set_constraint, reference()) - .property("slidercrank", &MjVisualScale::slidercrank, &MjVisualScale::set_slidercrank, reference()) - .property("frustum", &MjVisualScale::frustum, &MjVisualScale::set_frustum, reference()) - ; + .constructor<>() + .function("copy", &MjVisualScale::copy, take_ownership()) + .property("forcewidth", &MjVisualScale::forcewidth, &MjVisualScale::set_forcewidth, reference()) + .property("contactwidth", &MjVisualScale::contactwidth, &MjVisualScale::set_contactwidth, reference()) + .property("contactheight", &MjVisualScale::contactheight, &MjVisualScale::set_contactheight, reference()) + .property("connect", &MjVisualScale::connect, &MjVisualScale::set_connect, reference()) + .property("com", &MjVisualScale::com, &MjVisualScale::set_com, reference()) + .property("camera", &MjVisualScale::camera, &MjVisualScale::set_camera, reference()) + .property("light", &MjVisualScale::light, &MjVisualScale::set_light, reference()) + .property("selectpoint", &MjVisualScale::selectpoint, &MjVisualScale::set_selectpoint, reference()) + .property("jointlength", &MjVisualScale::jointlength, &MjVisualScale::set_jointlength, reference()) + .property("jointwidth", &MjVisualScale::jointwidth, &MjVisualScale::set_jointwidth, reference()) + .property("actuatorlength", &MjVisualScale::actuatorlength, &MjVisualScale::set_actuatorlength, reference()) + .property("actuatorwidth", &MjVisualScale::actuatorwidth, &MjVisualScale::set_actuatorwidth, reference()) + .property("framelength", &MjVisualScale::framelength, &MjVisualScale::set_framelength, reference()) + .property("framewidth", &MjVisualScale::framewidth, &MjVisualScale::set_framewidth, reference()) + .property("constraint", &MjVisualScale::constraint, &MjVisualScale::set_constraint, reference()) + .property("slidercrank", &MjVisualScale::slidercrank, &MjVisualScale::set_slidercrank, reference()) + .property("frustum", &MjVisualScale::frustum, &MjVisualScale::set_frustum, reference()); emscripten::class_("MjWarningStat") - .constructor<>() - .function("copy", &MjWarningStat::copy, take_ownership()) - .property("lastinfo", &MjWarningStat::lastinfo, &MjWarningStat::set_lastinfo, reference()) - .property("number", &MjWarningStat::number, &MjWarningStat::set_number, reference()) - ; + .constructor<>() + .function("copy", &MjWarningStat::copy, take_ownership()) + .property("lastinfo", &MjWarningStat::lastinfo, &MjWarningStat::set_lastinfo, reference()) + .property("number", &MjWarningStat::number, &MjWarningStat::set_number, reference()); emscripten::class_("MjsElement") - .property("elemtype", &MjsElement::elemtype, &MjsElement::set_elemtype, reference()) - .property("signature", &MjsElement::signature, &MjsElement::set_signature, reference()) - ; + .property("elemtype", &MjsElement::elemtype, &MjsElement::set_elemtype, reference()) + .property("signature", &MjsElement::signature, &MjsElement::set_signature, reference()); emscripten::class_("MjsOrientation") - .property("type", &MjsOrientation::type, &MjsOrientation::set_type, reference()) - .property("axisangle", &MjsOrientation::axisangle) - .property("xyaxes", &MjsOrientation::xyaxes) - .property("zaxis", &MjsOrientation::zaxis) - .property("euler", &MjsOrientation::euler) - ; + .property("type", &MjsOrientation::type, &MjsOrientation::set_type, reference()) + .property("axisangle", &MjsOrientation::axisangle) + .property("xyaxes", &MjsOrientation::xyaxes) + .property("zaxis", &MjsOrientation::zaxis) + .property("euler", &MjsOrientation::euler); emscripten::class_("MjvCamera") - .constructor<>() - .function("copy", &MjvCamera::copy, take_ownership()) - .property("type", &MjvCamera::type, &MjvCamera::set_type, reference()) - .property("fixedcamid", &MjvCamera::fixedcamid, &MjvCamera::set_fixedcamid, reference()) - .property("trackbodyid", &MjvCamera::trackbodyid, &MjvCamera::set_trackbodyid, reference()) - .property("lookat", &MjvCamera::lookat) - .property("distance", &MjvCamera::distance, &MjvCamera::set_distance, reference()) - .property("azimuth", &MjvCamera::azimuth, &MjvCamera::set_azimuth, reference()) - .property("elevation", &MjvCamera::elevation, &MjvCamera::set_elevation, reference()) - .property("orthographic", &MjvCamera::orthographic, &MjvCamera::set_orthographic, reference()) - ; + .constructor<>() + .function("copy", &MjvCamera::copy, take_ownership()) + .property("type", &MjvCamera::type, &MjvCamera::set_type, reference()) + .property("fixedcamid", &MjvCamera::fixedcamid, &MjvCamera::set_fixedcamid, reference()) + .property("trackbodyid", &MjvCamera::trackbodyid, &MjvCamera::set_trackbodyid, reference()) + .property("lookat", &MjvCamera::lookat) + .property("distance", &MjvCamera::distance, &MjvCamera::set_distance, reference()) + .property("azimuth", &MjvCamera::azimuth, &MjvCamera::set_azimuth, reference()) + .property("elevation", &MjvCamera::elevation, &MjvCamera::set_elevation, reference()) + .property("orthographic", &MjvCamera::orthographic, &MjvCamera::set_orthographic, reference()); emscripten::class_("MjvFigure") - .constructor<>() - .function("copy", &MjvFigure::copy, take_ownership()) - .property("flg_legend", &MjvFigure::flg_legend, &MjvFigure::set_flg_legend, reference()) - .property("flg_ticklabel", &MjvFigure::flg_ticklabel) - .property("flg_extend", &MjvFigure::flg_extend, &MjvFigure::set_flg_extend, reference()) - .property("flg_barplot", &MjvFigure::flg_barplot, &MjvFigure::set_flg_barplot, reference()) - .property("flg_selection", &MjvFigure::flg_selection, &MjvFigure::set_flg_selection, reference()) - .property("flg_symmetric", &MjvFigure::flg_symmetric, &MjvFigure::set_flg_symmetric, reference()) - .property("linewidth", &MjvFigure::linewidth, &MjvFigure::set_linewidth, reference()) - .property("gridwidth", &MjvFigure::gridwidth, &MjvFigure::set_gridwidth, reference()) - .property("gridsize", &MjvFigure::gridsize) - .property("gridrgb", &MjvFigure::gridrgb) - .property("figurergba", &MjvFigure::figurergba) - .property("panergba", &MjvFigure::panergba) - .property("legendrgba", &MjvFigure::legendrgba) - .property("textrgb", &MjvFigure::textrgb) - .property("linergb", &MjvFigure::linergb) - .property("range", &MjvFigure::range) - .property("xformat", &MjvFigure::xformat) - .property("yformat", &MjvFigure::yformat) - .property("minwidth", &MjvFigure::minwidth) - .property("title", &MjvFigure::title) - .property("xlabel", &MjvFigure::xlabel) - .property("linename", &MjvFigure::linename) - .property("legendoffset", &MjvFigure::legendoffset, &MjvFigure::set_legendoffset, reference()) - .property("subplot", &MjvFigure::subplot, &MjvFigure::set_subplot, reference()) - .property("highlight", &MjvFigure::highlight) - .property("highlightid", &MjvFigure::highlightid, &MjvFigure::set_highlightid, reference()) - .property("selection", &MjvFigure::selection, &MjvFigure::set_selection, reference()) - .property("linepnt", &MjvFigure::linepnt) - .property("linedata", &MjvFigure::linedata) - .property("xaxispixel", &MjvFigure::xaxispixel) - .property("yaxispixel", &MjvFigure::yaxispixel) - .property("xaxisdata", &MjvFigure::xaxisdata) - .property("yaxisdata", &MjvFigure::yaxisdata) - ; + .constructor<>() + .function("copy", &MjvFigure::copy, take_ownership()) + .property("flg_legend", &MjvFigure::flg_legend, &MjvFigure::set_flg_legend, reference()) + .property("flg_ticklabel", &MjvFigure::flg_ticklabel) + .property("flg_extend", &MjvFigure::flg_extend, &MjvFigure::set_flg_extend, reference()) + .property("flg_barplot", &MjvFigure::flg_barplot, &MjvFigure::set_flg_barplot, reference()) + .property("flg_selection", &MjvFigure::flg_selection, &MjvFigure::set_flg_selection, reference()) + .property("flg_symmetric", &MjvFigure::flg_symmetric, &MjvFigure::set_flg_symmetric, reference()) + .property("linewidth", &MjvFigure::linewidth, &MjvFigure::set_linewidth, reference()) + .property("gridwidth", &MjvFigure::gridwidth, &MjvFigure::set_gridwidth, reference()) + .property("gridsize", &MjvFigure::gridsize) + .property("gridrgb", &MjvFigure::gridrgb) + .property("figurergba", &MjvFigure::figurergba) + .property("panergba", &MjvFigure::panergba) + .property("legendrgba", &MjvFigure::legendrgba) + .property("textrgb", &MjvFigure::textrgb) + .property("linergb", &MjvFigure::linergb) + .property("range", &MjvFigure::range) + .property("xformat", &MjvFigure::xformat) + .property("yformat", &MjvFigure::yformat) + .property("minwidth", &MjvFigure::minwidth) + .property("title", &MjvFigure::title) + .property("xlabel", &MjvFigure::xlabel) + .property("linename", &MjvFigure::linename) + .property("legendoffset", &MjvFigure::legendoffset, &MjvFigure::set_legendoffset, reference()) + .property("subplot", &MjvFigure::subplot, &MjvFigure::set_subplot, reference()) + .property("highlight", &MjvFigure::highlight) + .property("highlightid", &MjvFigure::highlightid, &MjvFigure::set_highlightid, reference()) + .property("selection", &MjvFigure::selection, &MjvFigure::set_selection, reference()) + .property("linepnt", &MjvFigure::linepnt) + .property("linedata", &MjvFigure::linedata) + .property("xaxispixel", &MjvFigure::xaxispixel) + .property("yaxispixel", &MjvFigure::yaxispixel) + .property("xaxisdata", &MjvFigure::xaxisdata) + .property("yaxisdata", &MjvFigure::yaxisdata); emscripten::class_("MjvGLCamera") - .constructor<>() - .function("copy", &MjvGLCamera::copy, take_ownership()) - .property("pos", &MjvGLCamera::pos) - .property("forward", &MjvGLCamera::forward) - .property("up", &MjvGLCamera::up) - .property("frustum_center", &MjvGLCamera::frustum_center, &MjvGLCamera::set_frustum_center, reference()) - .property("frustum_width", &MjvGLCamera::frustum_width, &MjvGLCamera::set_frustum_width, reference()) - .property("frustum_bottom", &MjvGLCamera::frustum_bottom, &MjvGLCamera::set_frustum_bottom, reference()) - .property("frustum_top", &MjvGLCamera::frustum_top, &MjvGLCamera::set_frustum_top, reference()) - .property("frustum_near", &MjvGLCamera::frustum_near, &MjvGLCamera::set_frustum_near, reference()) - .property("frustum_far", &MjvGLCamera::frustum_far, &MjvGLCamera::set_frustum_far, reference()) - .property("orthographic", &MjvGLCamera::orthographic, &MjvGLCamera::set_orthographic, reference()) - ; + .constructor<>() + .function("copy", &MjvGLCamera::copy, take_ownership()) + .property("pos", &MjvGLCamera::pos) + .property("forward", &MjvGLCamera::forward) + .property("up", &MjvGLCamera::up) + .property("frustum_center", &MjvGLCamera::frustum_center, &MjvGLCamera::set_frustum_center, reference()) + .property("frustum_width", &MjvGLCamera::frustum_width, &MjvGLCamera::set_frustum_width, reference()) + .property("frustum_bottom", &MjvGLCamera::frustum_bottom, &MjvGLCamera::set_frustum_bottom, reference()) + .property("frustum_top", &MjvGLCamera::frustum_top, &MjvGLCamera::set_frustum_top, reference()) + .property("frustum_near", &MjvGLCamera::frustum_near, &MjvGLCamera::set_frustum_near, reference()) + .property("frustum_far", &MjvGLCamera::frustum_far, &MjvGLCamera::set_frustum_far, reference()) + .property("orthographic", &MjvGLCamera::orthographic, &MjvGLCamera::set_orthographic, reference()); emscripten::class_("MjvGeom") - .constructor<>() - .function("copy", &MjvGeom::copy, take_ownership()) - .property("type", &MjvGeom::type, &MjvGeom::set_type, reference()) - .property("dataid", &MjvGeom::dataid, &MjvGeom::set_dataid, reference()) - .property("objtype", &MjvGeom::objtype, &MjvGeom::set_objtype, reference()) - .property("objid", &MjvGeom::objid, &MjvGeom::set_objid, reference()) - .property("category", &MjvGeom::category, &MjvGeom::set_category, reference()) - .property("matid", &MjvGeom::matid, &MjvGeom::set_matid, reference()) - .property("texcoord", &MjvGeom::texcoord, &MjvGeom::set_texcoord, reference()) - .property("segid", &MjvGeom::segid, &MjvGeom::set_segid, reference()) - .property("size", &MjvGeom::size) - .property("pos", &MjvGeom::pos) - .property("mat", &MjvGeom::mat) - .property("rgba", &MjvGeom::rgba) - .property("emission", &MjvGeom::emission, &MjvGeom::set_emission, reference()) - .property("specular", &MjvGeom::specular, &MjvGeom::set_specular, reference()) - .property("shininess", &MjvGeom::shininess, &MjvGeom::set_shininess, reference()) - .property("reflectance", &MjvGeom::reflectance, &MjvGeom::set_reflectance, reference()) - .property("label", &MjvGeom::label) - .property("camdist", &MjvGeom::camdist, &MjvGeom::set_camdist, reference()) - .property("modelrbound", &MjvGeom::modelrbound, &MjvGeom::set_modelrbound, reference()) - .property("transparent", &MjvGeom::transparent, &MjvGeom::set_transparent, reference()) - ; + .constructor<>() + .function("copy", &MjvGeom::copy, take_ownership()) + .property("type", &MjvGeom::type, &MjvGeom::set_type, reference()) + .property("dataid", &MjvGeom::dataid, &MjvGeom::set_dataid, reference()) + .property("objtype", &MjvGeom::objtype, &MjvGeom::set_objtype, reference()) + .property("objid", &MjvGeom::objid, &MjvGeom::set_objid, reference()) + .property("category", &MjvGeom::category, &MjvGeom::set_category, reference()) + .property("matid", &MjvGeom::matid, &MjvGeom::set_matid, reference()) + .property("texcoord", &MjvGeom::texcoord, &MjvGeom::set_texcoord, reference()) + .property("segid", &MjvGeom::segid, &MjvGeom::set_segid, reference()) + .property("size", &MjvGeom::size) + .property("pos", &MjvGeom::pos) + .property("mat", &MjvGeom::mat) + .property("rgba", &MjvGeom::rgba) + .property("emission", &MjvGeom::emission, &MjvGeom::set_emission, reference()) + .property("specular", &MjvGeom::specular, &MjvGeom::set_specular, reference()) + .property("shininess", &MjvGeom::shininess, &MjvGeom::set_shininess, reference()) + .property("reflectance", &MjvGeom::reflectance, &MjvGeom::set_reflectance, reference()) + .property("label", &MjvGeom::label) + .property("camdist", &MjvGeom::camdist, &MjvGeom::set_camdist, reference()) + .property("modelrbound", &MjvGeom::modelrbound, &MjvGeom::set_modelrbound, reference()) + .property("transparent", &MjvGeom::transparent, &MjvGeom::set_transparent, reference()); emscripten::class_("MjvLight") - .constructor<>() - .function("copy", &MjvLight::copy, take_ownership()) - .property("id", &MjvLight::id, &MjvLight::set_id, reference()) - .property("pos", &MjvLight::pos) - .property("dir", &MjvLight::dir) - .property("type", &MjvLight::type, &MjvLight::set_type, reference()) - .property("texid", &MjvLight::texid, &MjvLight::set_texid, reference()) - .property("attenuation", &MjvLight::attenuation) - .property("cutoff", &MjvLight::cutoff, &MjvLight::set_cutoff, reference()) - .property("exponent", &MjvLight::exponent, &MjvLight::set_exponent, reference()) - .property("ambient", &MjvLight::ambient) - .property("diffuse", &MjvLight::diffuse) - .property("specular", &MjvLight::specular) - .property("headlight", &MjvLight::headlight, &MjvLight::set_headlight, reference()) - .property("castshadow", &MjvLight::castshadow, &MjvLight::set_castshadow, reference()) - .property("bulbradius", &MjvLight::bulbradius, &MjvLight::set_bulbradius, reference()) - .property("intensity", &MjvLight::intensity, &MjvLight::set_intensity, reference()) - .property("range", &MjvLight::range, &MjvLight::set_range, reference()) - ; + .constructor<>() + .function("copy", &MjvLight::copy, take_ownership()) + .property("id", &MjvLight::id, &MjvLight::set_id, reference()) + .property("pos", &MjvLight::pos) + .property("dir", &MjvLight::dir) + .property("type", &MjvLight::type, &MjvLight::set_type, reference()) + .property("texid", &MjvLight::texid, &MjvLight::set_texid, reference()) + .property("attenuation", &MjvLight::attenuation) + .property("cutoff", &MjvLight::cutoff, &MjvLight::set_cutoff, reference()) + .property("exponent", &MjvLight::exponent, &MjvLight::set_exponent, reference()) + .property("ambient", &MjvLight::ambient) + .property("diffuse", &MjvLight::diffuse) + .property("specular", &MjvLight::specular) + .property("headlight", &MjvLight::headlight, &MjvLight::set_headlight, reference()) + .property("castshadow", &MjvLight::castshadow, &MjvLight::set_castshadow, reference()) + .property("bulbradius", &MjvLight::bulbradius, &MjvLight::set_bulbradius, reference()) + .property("intensity", &MjvLight::intensity, &MjvLight::set_intensity, reference()) + .property("range", &MjvLight::range, &MjvLight::set_range, reference()); emscripten::class_("MjvOption") - .constructor<>() - .function("copy", &MjvOption::copy, take_ownership()) - .property("label", &MjvOption::label, &MjvOption::set_label, reference()) - .property("frame", &MjvOption::frame, &MjvOption::set_frame, reference()) - .property("geomgroup", &MjvOption::geomgroup) - .property("sitegroup", &MjvOption::sitegroup) - .property("jointgroup", &MjvOption::jointgroup) - .property("tendongroup", &MjvOption::tendongroup) - .property("actuatorgroup", &MjvOption::actuatorgroup) - .property("flexgroup", &MjvOption::flexgroup) - .property("skingroup", &MjvOption::skingroup) - .property("flags", &MjvOption::flags) - .property("bvh_depth", &MjvOption::bvh_depth, &MjvOption::set_bvh_depth, reference()) - .property("flex_layer", &MjvOption::flex_layer, &MjvOption::set_flex_layer, reference()) - ; + .constructor<>() + .function("copy", &MjvOption::copy, take_ownership()) + .property("label", &MjvOption::label, &MjvOption::set_label, reference()) + .property("frame", &MjvOption::frame, &MjvOption::set_frame, reference()) + .property("geomgroup", &MjvOption::geomgroup) + .property("sitegroup", &MjvOption::sitegroup) + .property("jointgroup", &MjvOption::jointgroup) + .property("tendongroup", &MjvOption::tendongroup) + .property("actuatorgroup", &MjvOption::actuatorgroup) + .property("flexgroup", &MjvOption::flexgroup) + .property("skingroup", &MjvOption::skingroup) + .property("flags", &MjvOption::flags) + .property("bvh_depth", &MjvOption::bvh_depth, &MjvOption::set_bvh_depth, reference()) + .property("flex_layer", &MjvOption::flex_layer, &MjvOption::set_flex_layer, reference()); emscripten::class_("MjvPerturb") - .constructor<>() - .function("copy", &MjvPerturb::copy, take_ownership()) - .property("select", &MjvPerturb::select, &MjvPerturb::set_select, reference()) - .property("flexselect", &MjvPerturb::flexselect, &MjvPerturb::set_flexselect, reference()) - .property("skinselect", &MjvPerturb::skinselect, &MjvPerturb::set_skinselect, reference()) - .property("active", &MjvPerturb::active, &MjvPerturb::set_active, reference()) - .property("active2", &MjvPerturb::active2, &MjvPerturb::set_active2, reference()) - .property("refpos", &MjvPerturb::refpos) - .property("refquat", &MjvPerturb::refquat) - .property("refselpos", &MjvPerturb::refselpos) - .property("localpos", &MjvPerturb::localpos) - .property("localmass", &MjvPerturb::localmass, &MjvPerturb::set_localmass, reference()) - .property("scale", &MjvPerturb::scale, &MjvPerturb::set_scale, reference()) - ; + .constructor<>() + .function("copy", &MjvPerturb::copy, take_ownership()) + .property("select", &MjvPerturb::select, &MjvPerturb::set_select, reference()) + .property("flexselect", &MjvPerturb::flexselect, &MjvPerturb::set_flexselect, reference()) + .property("skinselect", &MjvPerturb::skinselect, &MjvPerturb::set_skinselect, reference()) + .property("active", &MjvPerturb::active, &MjvPerturb::set_active, reference()) + .property("active2", &MjvPerturb::active2, &MjvPerturb::set_active2, reference()) + .property("refpos", &MjvPerturb::refpos) + .property("refquat", &MjvPerturb::refquat) + .property("refselpos", &MjvPerturb::refselpos) + .property("localpos", &MjvPerturb::localpos) + .property("localmass", &MjvPerturb::localmass, &MjvPerturb::set_localmass, reference()) + .property("scale", &MjvPerturb::scale, &MjvPerturb::set_scale, reference()); + emscripten::class_("MjData") + .constructor() + .constructor() + .property("narena", &MjData::narena, &MjData::set_narena, reference()) + .property("nbuffer", &MjData::nbuffer, &MjData::set_nbuffer, reference()) + .property("nplugin", &MjData::nplugin, &MjData::set_nplugin, reference()) + .property("pstack", &MjData::pstack, &MjData::set_pstack, reference()) + .property("pbase", &MjData::pbase, &MjData::set_pbase, reference()) + .property("parena", &MjData::parena, &MjData::set_parena, reference()) + .property("maxuse_stack", &MjData::maxuse_stack, &MjData::set_maxuse_stack, reference()) + .property("maxuse_threadstack", &MjData::maxuse_threadstack) + .property("maxuse_arena", &MjData::maxuse_arena, &MjData::set_maxuse_arena, reference()) + .property("maxuse_con", &MjData::maxuse_con, &MjData::set_maxuse_con, reference()) + .property("maxuse_efc", &MjData::maxuse_efc, &MjData::set_maxuse_efc, reference()) + .property("solver", &MjData::solver) + .property("solver_niter", &MjData::solver_niter) + .property("solver_nnz", &MjData::solver_nnz) + .property("solver_fwdinv", &MjData::solver_fwdinv) + .property("warning", &MjData::warning) + .property("timer", &MjData::timer) + .property("ncon", &MjData::ncon, &MjData::set_ncon, reference()) + .property("ne", &MjData::ne, &MjData::set_ne, reference()) + .property("nf", &MjData::nf, &MjData::set_nf, reference()) + .property("nl", &MjData::nl, &MjData::set_nl, reference()) + .property("nefc", &MjData::nefc, &MjData::set_nefc, reference()) + .property("nJ", &MjData::nJ, &MjData::set_nJ, reference()) + .property("nA", &MjData::nA, &MjData::set_nA, reference()) + .property("nisland", &MjData::nisland, &MjData::set_nisland, reference()) + .property("nidof", &MjData::nidof, &MjData::set_nidof, reference()) + .property("time", &MjData::time, &MjData::set_time, reference()) + .property("energy", &MjData::energy) + .property("buffer", &MjData::buffer) + .property("arena", &MjData::arena) + .property("qpos", &MjData::qpos) + .property("qvel", &MjData::qvel) + .property("act", &MjData::act) + .property("qacc_warmstart", &MjData::qacc_warmstart) + .property("plugin_state", &MjData::plugin_state) + .property("ctrl", &MjData::ctrl) + .property("qfrc_applied", &MjData::qfrc_applied) + .property("xfrc_applied", &MjData::xfrc_applied) + .property("eq_active", &MjData::eq_active) + .property("mocap_pos", &MjData::mocap_pos) + .property("mocap_quat", &MjData::mocap_quat) + .property("qacc", &MjData::qacc) + .property("act_dot", &MjData::act_dot) + .property("userdata", &MjData::userdata) + .property("sensordata", &MjData::sensordata) + .property("plugin", &MjData::plugin) + .property("plugin_data", &MjData::plugin_data) + .property("xpos", &MjData::xpos) + .property("xquat", &MjData::xquat) + .property("xmat", &MjData::xmat) + .property("xipos", &MjData::xipos) + .property("ximat", &MjData::ximat) + .property("xanchor", &MjData::xanchor) + .property("xaxis", &MjData::xaxis) + .property("geom_xpos", &MjData::geom_xpos) + .property("geom_xmat", &MjData::geom_xmat) + .property("site_xpos", &MjData::site_xpos) + .property("site_xmat", &MjData::site_xmat) + .property("cam_xpos", &MjData::cam_xpos) + .property("cam_xmat", &MjData::cam_xmat) + .property("light_xpos", &MjData::light_xpos) + .property("light_xdir", &MjData::light_xdir) + .property("subtree_com", &MjData::subtree_com) + .property("cdof", &MjData::cdof) + .property("cinert", &MjData::cinert) + .property("flexvert_xpos", &MjData::flexvert_xpos) + .property("flexelem_aabb", &MjData::flexelem_aabb) + .property("flexedge_J_rownnz", &MjData::flexedge_J_rownnz) + .property("flexedge_J_rowadr", &MjData::flexedge_J_rowadr) + .property("flexedge_J_colind", &MjData::flexedge_J_colind) + .property("flexedge_J", &MjData::flexedge_J) + .property("flexedge_length", &MjData::flexedge_length) + .property("bvh_aabb_dyn", &MjData::bvh_aabb_dyn) + .property("ten_wrapadr", &MjData::ten_wrapadr) + .property("ten_wrapnum", &MjData::ten_wrapnum) + .property("ten_J_rownnz", &MjData::ten_J_rownnz) + .property("ten_J_rowadr", &MjData::ten_J_rowadr) + .property("ten_J_colind", &MjData::ten_J_colind) + .property("ten_J", &MjData::ten_J) + .property("ten_length", &MjData::ten_length) + .property("wrap_obj", &MjData::wrap_obj) + .property("wrap_xpos", &MjData::wrap_xpos) + .property("actuator_length", &MjData::actuator_length) + .property("moment_rownnz", &MjData::moment_rownnz) + .property("moment_rowadr", &MjData::moment_rowadr) + .property("moment_colind", &MjData::moment_colind) + .property("actuator_moment", &MjData::actuator_moment) + .property("crb", &MjData::crb) + .property("qM", &MjData::qM) + .property("M", &MjData::M) + .property("qLD", &MjData::qLD) + .property("qLDiagInv", &MjData::qLDiagInv) + .property("bvh_active", &MjData::bvh_active) + .property("flexedge_velocity", &MjData::flexedge_velocity) + .property("ten_velocity", &MjData::ten_velocity) + .property("actuator_velocity", &MjData::actuator_velocity) + .property("cvel", &MjData::cvel) + .property("cdof_dot", &MjData::cdof_dot) + .property("qfrc_bias", &MjData::qfrc_bias) + .property("qfrc_spring", &MjData::qfrc_spring) + .property("qfrc_damper", &MjData::qfrc_damper) + .property("qfrc_gravcomp", &MjData::qfrc_gravcomp) + .property("qfrc_fluid", &MjData::qfrc_fluid) + .property("qfrc_passive", &MjData::qfrc_passive) + .property("subtree_linvel", &MjData::subtree_linvel) + .property("subtree_angmom", &MjData::subtree_angmom) + .property("qH", &MjData::qH) + .property("qHDiagInv", &MjData::qHDiagInv) + .property("qDeriv", &MjData::qDeriv) + .property("qLU", &MjData::qLU) + .property("actuator_force", &MjData::actuator_force) + .property("qfrc_actuator", &MjData::qfrc_actuator) + .property("qfrc_smooth", &MjData::qfrc_smooth) + .property("qacc_smooth", &MjData::qacc_smooth) + .property("qfrc_constraint", &MjData::qfrc_constraint) + .property("qfrc_inverse", &MjData::qfrc_inverse) + .property("cacc", &MjData::cacc) + .property("cfrc_int", &MjData::cfrc_int) + .property("cfrc_ext", &MjData::cfrc_ext) + .property("contact", &MjData::contact) + .property("efc_type", &MjData::efc_type) + .property("efc_id", &MjData::efc_id) + .property("efc_J_rownnz", &MjData::efc_J_rownnz) + .property("efc_J_rowadr", &MjData::efc_J_rowadr) + .property("efc_J_rowsuper", &MjData::efc_J_rowsuper) + .property("efc_J_colind", &MjData::efc_J_colind) + .property("efc_J", &MjData::efc_J) + .property("efc_pos", &MjData::efc_pos) + .property("efc_margin", &MjData::efc_margin) + .property("efc_frictionloss", &MjData::efc_frictionloss) + .property("efc_diagApprox", &MjData::efc_diagApprox) + .property("efc_KBIP", &MjData::efc_KBIP) + .property("efc_D", &MjData::efc_D) + .property("efc_R", &MjData::efc_R) + .property("tendon_efcadr", &MjData::tendon_efcadr) + .property("dof_island", &MjData::dof_island) + .property("island_nv", &MjData::island_nv) + .property("island_idofadr", &MjData::island_idofadr) + .property("island_dofadr", &MjData::island_dofadr) + .property("map_dof2idof", &MjData::map_dof2idof) + .property("map_idof2dof", &MjData::map_idof2dof) + .property("ifrc_smooth", &MjData::ifrc_smooth) + .property("iacc_smooth", &MjData::iacc_smooth) + .property("iM_rownnz", &MjData::iM_rownnz) + .property("iM_rowadr", &MjData::iM_rowadr) + .property("iM_colind", &MjData::iM_colind) + .property("iM", &MjData::iM) + .property("iLD", &MjData::iLD) + .property("iLDiagInv", &MjData::iLDiagInv) + .property("iacc", &MjData::iacc) + .property("efc_island", &MjData::efc_island) + .property("island_ne", &MjData::island_ne) + .property("island_nf", &MjData::island_nf) + .property("island_nefc", &MjData::island_nefc) + .property("island_iefcadr", &MjData::island_iefcadr) + .property("map_efc2iefc", &MjData::map_efc2iefc) + .property("map_iefc2efc", &MjData::map_iefc2efc) + .property("iefc_type", &MjData::iefc_type) + .property("iefc_id", &MjData::iefc_id) + .property("iefc_J_rownnz", &MjData::iefc_J_rownnz) + .property("iefc_J_rowadr", &MjData::iefc_J_rowadr) + .property("iefc_J_rowsuper", &MjData::iefc_J_rowsuper) + .property("iefc_J_colind", &MjData::iefc_J_colind) + .property("iefc_J", &MjData::iefc_J) + .property("iefc_frictionloss", &MjData::iefc_frictionloss) + .property("iefc_D", &MjData::iefc_D) + .property("iefc_R", &MjData::iefc_R) + .property("efc_AR_rownnz", &MjData::efc_AR_rownnz) + .property("efc_AR_rowadr", &MjData::efc_AR_rowadr) + .property("efc_AR_colind", &MjData::efc_AR_colind) + .property("efc_AR", &MjData::efc_AR) + .property("efc_vel", &MjData::efc_vel) + .property("efc_aref", &MjData::efc_aref) + .property("efc_b", &MjData::efc_b) + .property("iefc_aref", &MjData::iefc_aref) + .property("iefc_state", &MjData::iefc_state) + .property("iefc_force", &MjData::iefc_force) + .property("efc_state", &MjData::efc_state) + .property("efc_force", &MjData::efc_force) + .property("ifrc_constraint", &MjData::ifrc_constraint) + .property("threadpool", &MjData::threadpool, &MjData::set_threadpool, reference()) + .property("signature", &MjData::signature, &MjData::set_signature, reference()); emscripten::class_("MjsCompiler") - .property("autolimits", &MjsCompiler::autolimits, &MjsCompiler::set_autolimits, reference()) - .property("boundmass", &MjsCompiler::boundmass, &MjsCompiler::set_boundmass, reference()) - .property("boundinertia", &MjsCompiler::boundinertia, &MjsCompiler::set_boundinertia, reference()) - .property("settotalmass", &MjsCompiler::settotalmass, &MjsCompiler::set_settotalmass, reference()) - .property("balanceinertia", &MjsCompiler::balanceinertia, &MjsCompiler::set_balanceinertia, reference()) - .property("fitaabb", &MjsCompiler::fitaabb, &MjsCompiler::set_fitaabb, reference()) - .property("degree", &MjsCompiler::degree, &MjsCompiler::set_degree, reference()) - .property("eulerseq", &MjsCompiler::eulerseq) - .property("discardvisual", &MjsCompiler::discardvisual, &MjsCompiler::set_discardvisual, reference()) - .property("usethread", &MjsCompiler::usethread, &MjsCompiler::set_usethread, reference()) - .property("fusestatic", &MjsCompiler::fusestatic, &MjsCompiler::set_fusestatic, reference()) - .property("inertiafromgeom", &MjsCompiler::inertiafromgeom, &MjsCompiler::set_inertiafromgeom, reference()) - .property("inertiagrouprange", &MjsCompiler::inertiagrouprange) - .property("saveinertial", &MjsCompiler::saveinertial, &MjsCompiler::set_saveinertial, reference()) - .property("alignfree", &MjsCompiler::alignfree, &MjsCompiler::set_alignfree, reference()) - .property("LRopt", &MjsCompiler::LRopt, reference()) - .property("meshdir", &MjsCompiler::meshdir, &MjsCompiler::set_meshdir, reference()) - .property("texturedir", &MjsCompiler::texturedir, &MjsCompiler::set_texturedir, reference()) - ; + .property("autolimits", &MjsCompiler::autolimits, &MjsCompiler::set_autolimits, reference()) + .property("boundmass", &MjsCompiler::boundmass, &MjsCompiler::set_boundmass, reference()) + .property("boundinertia", &MjsCompiler::boundinertia, &MjsCompiler::set_boundinertia, reference()) + .property("settotalmass", &MjsCompiler::settotalmass, &MjsCompiler::set_settotalmass, reference()) + .property("balanceinertia", &MjsCompiler::balanceinertia, &MjsCompiler::set_balanceinertia, reference()) + .property("fitaabb", &MjsCompiler::fitaabb, &MjsCompiler::set_fitaabb, reference()) + .property("degree", &MjsCompiler::degree, &MjsCompiler::set_degree, reference()) + .property("eulerseq", &MjsCompiler::eulerseq) + .property("discardvisual", &MjsCompiler::discardvisual, &MjsCompiler::set_discardvisual, reference()) + .property("usethread", &MjsCompiler::usethread, &MjsCompiler::set_usethread, reference()) + .property("fusestatic", &MjsCompiler::fusestatic, &MjsCompiler::set_fusestatic, reference()) + .property("inertiafromgeom", &MjsCompiler::inertiafromgeom, &MjsCompiler::set_inertiafromgeom, reference()) + .property("inertiagrouprange", &MjsCompiler::inertiagrouprange) + .property("saveinertial", &MjsCompiler::saveinertial, &MjsCompiler::set_saveinertial, reference()) + .property("alignfree", &MjsCompiler::alignfree, &MjsCompiler::set_alignfree, reference()) + .property("LRopt", &MjsCompiler::LRopt, reference()) + .property("meshdir", &MjsCompiler::meshdir, &MjsCompiler::set_meshdir, reference()) + .property("texturedir", &MjsCompiler::texturedir, &MjsCompiler::set_texturedir, reference()); + emscripten::class_("MjModel") + .class_function("loadFromXML", &loadFromXML, take_ownership()) + .constructor() + .property("nq", &MjModel::nq, &MjModel::set_nq, reference()) + .property("nv", &MjModel::nv, &MjModel::set_nv, reference()) + .property("nu", &MjModel::nu, &MjModel::set_nu, reference()) + .property("na", &MjModel::na, &MjModel::set_na, reference()) + .property("nbody", &MjModel::nbody, &MjModel::set_nbody, reference()) + .property("nbvh", &MjModel::nbvh, &MjModel::set_nbvh, reference()) + .property("nbvhstatic", &MjModel::nbvhstatic, &MjModel::set_nbvhstatic, reference()) + .property("nbvhdynamic", &MjModel::nbvhdynamic, &MjModel::set_nbvhdynamic, reference()) + .property("noct", &MjModel::noct, &MjModel::set_noct, reference()) + .property("njnt", &MjModel::njnt, &MjModel::set_njnt, reference()) + .property("ntree", &MjModel::ntree, &MjModel::set_ntree, reference()) + .property("nM", &MjModel::nM, &MjModel::set_nM, reference()) + .property("nB", &MjModel::nB, &MjModel::set_nB, reference()) + .property("nC", &MjModel::nC, &MjModel::set_nC, reference()) + .property("nD", &MjModel::nD, &MjModel::set_nD, reference()) + .property("ngeom", &MjModel::ngeom, &MjModel::set_ngeom, reference()) + .property("nsite", &MjModel::nsite, &MjModel::set_nsite, reference()) + .property("ncam", &MjModel::ncam, &MjModel::set_ncam, reference()) + .property("nlight", &MjModel::nlight, &MjModel::set_nlight, reference()) + .property("nflex", &MjModel::nflex, &MjModel::set_nflex, reference()) + .property("nflexnode", &MjModel::nflexnode, &MjModel::set_nflexnode, reference()) + .property("nflexvert", &MjModel::nflexvert, &MjModel::set_nflexvert, reference()) + .property("nflexedge", &MjModel::nflexedge, &MjModel::set_nflexedge, reference()) + .property("nflexelem", &MjModel::nflexelem, &MjModel::set_nflexelem, reference()) + .property("nflexelemdata", &MjModel::nflexelemdata, &MjModel::set_nflexelemdata, reference()) + .property("nflexelemedge", &MjModel::nflexelemedge, &MjModel::set_nflexelemedge, reference()) + .property("nflexshelldata", &MjModel::nflexshelldata, &MjModel::set_nflexshelldata, reference()) + .property("nflexevpair", &MjModel::nflexevpair, &MjModel::set_nflexevpair, reference()) + .property("nflextexcoord", &MjModel::nflextexcoord, &MjModel::set_nflextexcoord, reference()) + .property("nmesh", &MjModel::nmesh, &MjModel::set_nmesh, reference()) + .property("nmeshvert", &MjModel::nmeshvert, &MjModel::set_nmeshvert, reference()) + .property("nmeshnormal", &MjModel::nmeshnormal, &MjModel::set_nmeshnormal, reference()) + .property("nmeshtexcoord", &MjModel::nmeshtexcoord, &MjModel::set_nmeshtexcoord, reference()) + .property("nmeshface", &MjModel::nmeshface, &MjModel::set_nmeshface, reference()) + .property("nmeshgraph", &MjModel::nmeshgraph, &MjModel::set_nmeshgraph, reference()) + .property("nmeshpoly", &MjModel::nmeshpoly, &MjModel::set_nmeshpoly, reference()) + .property("nmeshpolyvert", &MjModel::nmeshpolyvert, &MjModel::set_nmeshpolyvert, reference()) + .property("nmeshpolymap", &MjModel::nmeshpolymap, &MjModel::set_nmeshpolymap, reference()) + .property("nskin", &MjModel::nskin, &MjModel::set_nskin, reference()) + .property("nskinvert", &MjModel::nskinvert, &MjModel::set_nskinvert, reference()) + .property("nskintexvert", &MjModel::nskintexvert, &MjModel::set_nskintexvert, reference()) + .property("nskinface", &MjModel::nskinface, &MjModel::set_nskinface, reference()) + .property("nskinbone", &MjModel::nskinbone, &MjModel::set_nskinbone, reference()) + .property("nskinbonevert", &MjModel::nskinbonevert, &MjModel::set_nskinbonevert, reference()) + .property("nhfield", &MjModel::nhfield, &MjModel::set_nhfield, reference()) + .property("nhfielddata", &MjModel::nhfielddata, &MjModel::set_nhfielddata, reference()) + .property("ntex", &MjModel::ntex, &MjModel::set_ntex, reference()) + .property("ntexdata", &MjModel::ntexdata, &MjModel::set_ntexdata, reference()) + .property("nmat", &MjModel::nmat, &MjModel::set_nmat, reference()) + .property("npair", &MjModel::npair, &MjModel::set_npair, reference()) + .property("nexclude", &MjModel::nexclude, &MjModel::set_nexclude, reference()) + .property("neq", &MjModel::neq, &MjModel::set_neq, reference()) + .property("ntendon", &MjModel::ntendon, &MjModel::set_ntendon, reference()) + .property("nwrap", &MjModel::nwrap, &MjModel::set_nwrap, reference()) + .property("nsensor", &MjModel::nsensor, &MjModel::set_nsensor, reference()) + .property("nnumeric", &MjModel::nnumeric, &MjModel::set_nnumeric, reference()) + .property("nnumericdata", &MjModel::nnumericdata, &MjModel::set_nnumericdata, reference()) + .property("ntext", &MjModel::ntext, &MjModel::set_ntext, reference()) + .property("ntextdata", &MjModel::ntextdata, &MjModel::set_ntextdata, reference()) + .property("ntuple", &MjModel::ntuple, &MjModel::set_ntuple, reference()) + .property("ntupledata", &MjModel::ntupledata, &MjModel::set_ntupledata, reference()) + .property("nkey", &MjModel::nkey, &MjModel::set_nkey, reference()) + .property("nmocap", &MjModel::nmocap, &MjModel::set_nmocap, reference()) + .property("nplugin", &MjModel::nplugin, &MjModel::set_nplugin, reference()) + .property("npluginattr", &MjModel::npluginattr, &MjModel::set_npluginattr, reference()) + .property("nuser_body", &MjModel::nuser_body, &MjModel::set_nuser_body, reference()) + .property("nuser_jnt", &MjModel::nuser_jnt, &MjModel::set_nuser_jnt, reference()) + .property("nuser_geom", &MjModel::nuser_geom, &MjModel::set_nuser_geom, reference()) + .property("nuser_site", &MjModel::nuser_site, &MjModel::set_nuser_site, reference()) + .property("nuser_cam", &MjModel::nuser_cam, &MjModel::set_nuser_cam, reference()) + .property("nuser_tendon", &MjModel::nuser_tendon, &MjModel::set_nuser_tendon, reference()) + .property("nuser_actuator", &MjModel::nuser_actuator, &MjModel::set_nuser_actuator, reference()) + .property("nuser_sensor", &MjModel::nuser_sensor, &MjModel::set_nuser_sensor, reference()) + .property("nnames", &MjModel::nnames, &MjModel::set_nnames, reference()) + .property("npaths", &MjModel::npaths, &MjModel::set_npaths, reference()) + .property("nnames_map", &MjModel::nnames_map, &MjModel::set_nnames_map, reference()) + .property("nJmom", &MjModel::nJmom, &MjModel::set_nJmom, reference()) + .property("ngravcomp", &MjModel::ngravcomp, &MjModel::set_ngravcomp, reference()) + .property("nemax", &MjModel::nemax, &MjModel::set_nemax, reference()) + .property("njmax", &MjModel::njmax, &MjModel::set_njmax, reference()) + .property("nconmax", &MjModel::nconmax, &MjModel::set_nconmax, reference()) + .property("nuserdata", &MjModel::nuserdata, &MjModel::set_nuserdata, reference()) + .property("nsensordata", &MjModel::nsensordata, &MjModel::set_nsensordata, reference()) + .property("npluginstate", &MjModel::npluginstate, &MjModel::set_npluginstate, reference()) + .property("narena", &MjModel::narena, &MjModel::set_narena, reference()) + .property("nbuffer", &MjModel::nbuffer, &MjModel::set_nbuffer, reference()) + .property("opt", &MjModel::opt, reference()) + .property("vis", &MjModel::vis, reference()) + .property("stat", &MjModel::stat, reference()) + .property("buffer", &MjModel::buffer) + .property("qpos0", &MjModel::qpos0) + .property("qpos_spring", &MjModel::qpos_spring) + .property("body_parentid", &MjModel::body_parentid) + .property("body_rootid", &MjModel::body_rootid) + .property("body_weldid", &MjModel::body_weldid) + .property("body_mocapid", &MjModel::body_mocapid) + .property("body_jntnum", &MjModel::body_jntnum) + .property("body_jntadr", &MjModel::body_jntadr) + .property("body_dofnum", &MjModel::body_dofnum) + .property("body_dofadr", &MjModel::body_dofadr) + .property("body_treeid", &MjModel::body_treeid) + .property("body_geomnum", &MjModel::body_geomnum) + .property("body_geomadr", &MjModel::body_geomadr) + .property("body_simple", &MjModel::body_simple) + .property("body_sameframe", &MjModel::body_sameframe) + .property("body_pos", &MjModel::body_pos) + .property("body_quat", &MjModel::body_quat) + .property("body_ipos", &MjModel::body_ipos) + .property("body_iquat", &MjModel::body_iquat) + .property("body_mass", &MjModel::body_mass) + .property("body_subtreemass", &MjModel::body_subtreemass) + .property("body_inertia", &MjModel::body_inertia) + .property("body_invweight0", &MjModel::body_invweight0) + .property("body_gravcomp", &MjModel::body_gravcomp) + .property("body_margin", &MjModel::body_margin) + .property("body_user", &MjModel::body_user) + .property("body_plugin", &MjModel::body_plugin) + .property("body_contype", &MjModel::body_contype) + .property("body_conaffinity", &MjModel::body_conaffinity) + .property("body_bvhadr", &MjModel::body_bvhadr) + .property("body_bvhnum", &MjModel::body_bvhnum) + .property("bvh_depth", &MjModel::bvh_depth) + .property("bvh_child", &MjModel::bvh_child) + .property("bvh_nodeid", &MjModel::bvh_nodeid) + .property("bvh_aabb", &MjModel::bvh_aabb) + .property("oct_depth", &MjModel::oct_depth) + .property("oct_child", &MjModel::oct_child) + .property("oct_aabb", &MjModel::oct_aabb) + .property("oct_coeff", &MjModel::oct_coeff) + .property("jnt_type", &MjModel::jnt_type) + .property("jnt_qposadr", &MjModel::jnt_qposadr) + .property("jnt_dofadr", &MjModel::jnt_dofadr) + .property("jnt_bodyid", &MjModel::jnt_bodyid) + .property("jnt_group", &MjModel::jnt_group) + .property("jnt_limited", &MjModel::jnt_limited) + .property("jnt_actfrclimited", &MjModel::jnt_actfrclimited) + .property("jnt_actgravcomp", &MjModel::jnt_actgravcomp) + .property("jnt_solref", &MjModel::jnt_solref) + .property("jnt_solimp", &MjModel::jnt_solimp) + .property("jnt_pos", &MjModel::jnt_pos) + .property("jnt_axis", &MjModel::jnt_axis) + .property("jnt_stiffness", &MjModel::jnt_stiffness) + .property("jnt_range", &MjModel::jnt_range) + .property("jnt_actfrcrange", &MjModel::jnt_actfrcrange) + .property("jnt_margin", &MjModel::jnt_margin) + .property("jnt_user", &MjModel::jnt_user) + .property("dof_bodyid", &MjModel::dof_bodyid) + .property("dof_jntid", &MjModel::dof_jntid) + .property("dof_parentid", &MjModel::dof_parentid) + .property("dof_treeid", &MjModel::dof_treeid) + .property("dof_Madr", &MjModel::dof_Madr) + .property("dof_simplenum", &MjModel::dof_simplenum) + .property("dof_solref", &MjModel::dof_solref) + .property("dof_solimp", &MjModel::dof_solimp) + .property("dof_frictionloss", &MjModel::dof_frictionloss) + .property("dof_armature", &MjModel::dof_armature) + .property("dof_damping", &MjModel::dof_damping) + .property("dof_invweight0", &MjModel::dof_invweight0) + .property("dof_M0", &MjModel::dof_M0) + .property("geom_type", &MjModel::geom_type) + .property("geom_contype", &MjModel::geom_contype) + .property("geom_conaffinity", &MjModel::geom_conaffinity) + .property("geom_condim", &MjModel::geom_condim) + .property("geom_bodyid", &MjModel::geom_bodyid) + .property("geom_dataid", &MjModel::geom_dataid) + .property("geom_matid", &MjModel::geom_matid) + .property("geom_group", &MjModel::geom_group) + .property("geom_priority", &MjModel::geom_priority) + .property("geom_plugin", &MjModel::geom_plugin) + .property("geom_sameframe", &MjModel::geom_sameframe) + .property("geom_solmix", &MjModel::geom_solmix) + .property("geom_solref", &MjModel::geom_solref) + .property("geom_solimp", &MjModel::geom_solimp) + .property("geom_size", &MjModel::geom_size) + .property("geom_aabb", &MjModel::geom_aabb) + .property("geom_rbound", &MjModel::geom_rbound) + .property("geom_pos", &MjModel::geom_pos) + .property("geom_quat", &MjModel::geom_quat) + .property("geom_friction", &MjModel::geom_friction) + .property("geom_margin", &MjModel::geom_margin) + .property("geom_gap", &MjModel::geom_gap) + .property("geom_fluid", &MjModel::geom_fluid) + .property("geom_user", &MjModel::geom_user) + .property("geom_rgba", &MjModel::geom_rgba) + .property("site_type", &MjModel::site_type) + .property("site_bodyid", &MjModel::site_bodyid) + .property("site_matid", &MjModel::site_matid) + .property("site_group", &MjModel::site_group) + .property("site_sameframe", &MjModel::site_sameframe) + .property("site_size", &MjModel::site_size) + .property("site_pos", &MjModel::site_pos) + .property("site_quat", &MjModel::site_quat) + .property("site_user", &MjModel::site_user) + .property("site_rgba", &MjModel::site_rgba) + .property("cam_mode", &MjModel::cam_mode) + .property("cam_bodyid", &MjModel::cam_bodyid) + .property("cam_targetbodyid", &MjModel::cam_targetbodyid) + .property("cam_pos", &MjModel::cam_pos) + .property("cam_quat", &MjModel::cam_quat) + .property("cam_poscom0", &MjModel::cam_poscom0) + .property("cam_pos0", &MjModel::cam_pos0) + .property("cam_mat0", &MjModel::cam_mat0) + .property("cam_orthographic", &MjModel::cam_orthographic) + .property("cam_fovy", &MjModel::cam_fovy) + .property("cam_ipd", &MjModel::cam_ipd) + .property("cam_resolution", &MjModel::cam_resolution) + .property("cam_sensorsize", &MjModel::cam_sensorsize) + .property("cam_intrinsic", &MjModel::cam_intrinsic) + .property("cam_user", &MjModel::cam_user) + .property("light_mode", &MjModel::light_mode) + .property("light_bodyid", &MjModel::light_bodyid) + .property("light_targetbodyid", &MjModel::light_targetbodyid) + .property("light_type", &MjModel::light_type) + .property("light_texid", &MjModel::light_texid) + .property("light_castshadow", &MjModel::light_castshadow) + .property("light_bulbradius", &MjModel::light_bulbradius) + .property("light_intensity", &MjModel::light_intensity) + .property("light_range", &MjModel::light_range) + .property("light_active", &MjModel::light_active) + .property("light_pos", &MjModel::light_pos) + .property("light_dir", &MjModel::light_dir) + .property("light_poscom0", &MjModel::light_poscom0) + .property("light_pos0", &MjModel::light_pos0) + .property("light_dir0", &MjModel::light_dir0) + .property("light_attenuation", &MjModel::light_attenuation) + .property("light_cutoff", &MjModel::light_cutoff) + .property("light_exponent", &MjModel::light_exponent) + .property("light_ambient", &MjModel::light_ambient) + .property("light_diffuse", &MjModel::light_diffuse) + .property("light_specular", &MjModel::light_specular) + .property("flex_contype", &MjModel::flex_contype) + .property("flex_conaffinity", &MjModel::flex_conaffinity) + .property("flex_condim", &MjModel::flex_condim) + .property("flex_priority", &MjModel::flex_priority) + .property("flex_solmix", &MjModel::flex_solmix) + .property("flex_solref", &MjModel::flex_solref) + .property("flex_solimp", &MjModel::flex_solimp) + .property("flex_friction", &MjModel::flex_friction) + .property("flex_margin", &MjModel::flex_margin) + .property("flex_gap", &MjModel::flex_gap) + .property("flex_internal", &MjModel::flex_internal) + .property("flex_selfcollide", &MjModel::flex_selfcollide) + .property("flex_activelayers", &MjModel::flex_activelayers) + .property("flex_passive", &MjModel::flex_passive) + .property("flex_dim", &MjModel::flex_dim) + .property("flex_matid", &MjModel::flex_matid) + .property("flex_group", &MjModel::flex_group) + .property("flex_interp", &MjModel::flex_interp) + .property("flex_nodeadr", &MjModel::flex_nodeadr) + .property("flex_nodenum", &MjModel::flex_nodenum) + .property("flex_vertadr", &MjModel::flex_vertadr) + .property("flex_vertnum", &MjModel::flex_vertnum) + .property("flex_edgeadr", &MjModel::flex_edgeadr) + .property("flex_edgenum", &MjModel::flex_edgenum) + .property("flex_elemadr", &MjModel::flex_elemadr) + .property("flex_elemnum", &MjModel::flex_elemnum) + .property("flex_elemdataadr", &MjModel::flex_elemdataadr) + .property("flex_elemedgeadr", &MjModel::flex_elemedgeadr) + .property("flex_shellnum", &MjModel::flex_shellnum) + .property("flex_shelldataadr", &MjModel::flex_shelldataadr) + .property("flex_evpairadr", &MjModel::flex_evpairadr) + .property("flex_evpairnum", &MjModel::flex_evpairnum) + .property("flex_texcoordadr", &MjModel::flex_texcoordadr) + .property("flex_nodebodyid", &MjModel::flex_nodebodyid) + .property("flex_vertbodyid", &MjModel::flex_vertbodyid) + .property("flex_edge", &MjModel::flex_edge) + .property("flex_edgeflap", &MjModel::flex_edgeflap) + .property("flex_elem", &MjModel::flex_elem) + .property("flex_elemtexcoord", &MjModel::flex_elemtexcoord) + .property("flex_elemedge", &MjModel::flex_elemedge) + .property("flex_elemlayer", &MjModel::flex_elemlayer) + .property("flex_shell", &MjModel::flex_shell) + .property("flex_evpair", &MjModel::flex_evpair) + .property("flex_vert", &MjModel::flex_vert) + .property("flex_vert0", &MjModel::flex_vert0) + .property("flex_node", &MjModel::flex_node) + .property("flex_node0", &MjModel::flex_node0) + .property("flexedge_length0", &MjModel::flexedge_length0) + .property("flexedge_invweight0", &MjModel::flexedge_invweight0) + .property("flex_radius", &MjModel::flex_radius) + .property("flex_stiffness", &MjModel::flex_stiffness) + .property("flex_bending", &MjModel::flex_bending) + .property("flex_damping", &MjModel::flex_damping) + .property("flex_edgestiffness", &MjModel::flex_edgestiffness) + .property("flex_edgedamping", &MjModel::flex_edgedamping) + .property("flex_edgeequality", &MjModel::flex_edgeequality) + .property("flex_rigid", &MjModel::flex_rigid) + .property("flexedge_rigid", &MjModel::flexedge_rigid) + .property("flex_centered", &MjModel::flex_centered) + .property("flex_flatskin", &MjModel::flex_flatskin) + .property("flex_bvhadr", &MjModel::flex_bvhadr) + .property("flex_bvhnum", &MjModel::flex_bvhnum) + .property("flex_rgba", &MjModel::flex_rgba) + .property("flex_texcoord", &MjModel::flex_texcoord) + .property("mesh_vertadr", &MjModel::mesh_vertadr) + .property("mesh_vertnum", &MjModel::mesh_vertnum) + .property("mesh_faceadr", &MjModel::mesh_faceadr) + .property("mesh_facenum", &MjModel::mesh_facenum) + .property("mesh_bvhadr", &MjModel::mesh_bvhadr) + .property("mesh_bvhnum", &MjModel::mesh_bvhnum) + .property("mesh_octadr", &MjModel::mesh_octadr) + .property("mesh_octnum", &MjModel::mesh_octnum) + .property("mesh_normaladr", &MjModel::mesh_normaladr) + .property("mesh_normalnum", &MjModel::mesh_normalnum) + .property("mesh_texcoordadr", &MjModel::mesh_texcoordadr) + .property("mesh_texcoordnum", &MjModel::mesh_texcoordnum) + .property("mesh_graphadr", &MjModel::mesh_graphadr) + .property("mesh_vert", &MjModel::mesh_vert) + .property("mesh_normal", &MjModel::mesh_normal) + .property("mesh_texcoord", &MjModel::mesh_texcoord) + .property("mesh_face", &MjModel::mesh_face) + .property("mesh_facenormal", &MjModel::mesh_facenormal) + .property("mesh_facetexcoord", &MjModel::mesh_facetexcoord) + .property("mesh_graph", &MjModel::mesh_graph) + .property("mesh_scale", &MjModel::mesh_scale) + .property("mesh_pos", &MjModel::mesh_pos) + .property("mesh_quat", &MjModel::mesh_quat) + .property("mesh_pathadr", &MjModel::mesh_pathadr) + .property("mesh_polynum", &MjModel::mesh_polynum) + .property("mesh_polyadr", &MjModel::mesh_polyadr) + .property("mesh_polynormal", &MjModel::mesh_polynormal) + .property("mesh_polyvertadr", &MjModel::mesh_polyvertadr) + .property("mesh_polyvertnum", &MjModel::mesh_polyvertnum) + .property("mesh_polyvert", &MjModel::mesh_polyvert) + .property("mesh_polymapadr", &MjModel::mesh_polymapadr) + .property("mesh_polymapnum", &MjModel::mesh_polymapnum) + .property("mesh_polymap", &MjModel::mesh_polymap) + .property("skin_matid", &MjModel::skin_matid) + .property("skin_group", &MjModel::skin_group) + .property("skin_rgba", &MjModel::skin_rgba) + .property("skin_inflate", &MjModel::skin_inflate) + .property("skin_vertadr", &MjModel::skin_vertadr) + .property("skin_vertnum", &MjModel::skin_vertnum) + .property("skin_texcoordadr", &MjModel::skin_texcoordadr) + .property("skin_faceadr", &MjModel::skin_faceadr) + .property("skin_facenum", &MjModel::skin_facenum) + .property("skin_boneadr", &MjModel::skin_boneadr) + .property("skin_bonenum", &MjModel::skin_bonenum) + .property("skin_vert", &MjModel::skin_vert) + .property("skin_texcoord", &MjModel::skin_texcoord) + .property("skin_face", &MjModel::skin_face) + .property("skin_bonevertadr", &MjModel::skin_bonevertadr) + .property("skin_bonevertnum", &MjModel::skin_bonevertnum) + .property("skin_bonebindpos", &MjModel::skin_bonebindpos) + .property("skin_bonebindquat", &MjModel::skin_bonebindquat) + .property("skin_bonebodyid", &MjModel::skin_bonebodyid) + .property("skin_bonevertid", &MjModel::skin_bonevertid) + .property("skin_bonevertweight", &MjModel::skin_bonevertweight) + .property("skin_pathadr", &MjModel::skin_pathadr) + .property("hfield_size", &MjModel::hfield_size) + .property("hfield_nrow", &MjModel::hfield_nrow) + .property("hfield_ncol", &MjModel::hfield_ncol) + .property("hfield_adr", &MjModel::hfield_adr) + .property("hfield_data", &MjModel::hfield_data) + .property("hfield_pathadr", &MjModel::hfield_pathadr) + .property("tex_type", &MjModel::tex_type) + .property("tex_colorspace", &MjModel::tex_colorspace) + .property("tex_height", &MjModel::tex_height) + .property("tex_width", &MjModel::tex_width) + .property("tex_nchannel", &MjModel::tex_nchannel) + .property("tex_adr", &MjModel::tex_adr) + .property("tex_data", &MjModel::tex_data) + .property("tex_pathadr", &MjModel::tex_pathadr) + .property("mat_texid", &MjModel::mat_texid) + .property("mat_texuniform", &MjModel::mat_texuniform) + .property("mat_texrepeat", &MjModel::mat_texrepeat) + .property("mat_emission", &MjModel::mat_emission) + .property("mat_specular", &MjModel::mat_specular) + .property("mat_shininess", &MjModel::mat_shininess) + .property("mat_reflectance", &MjModel::mat_reflectance) + .property("mat_metallic", &MjModel::mat_metallic) + .property("mat_roughness", &MjModel::mat_roughness) + .property("mat_rgba", &MjModel::mat_rgba) + .property("pair_dim", &MjModel::pair_dim) + .property("pair_geom1", &MjModel::pair_geom1) + .property("pair_geom2", &MjModel::pair_geom2) + .property("pair_signature", &MjModel::pair_signature) + .property("pair_solref", &MjModel::pair_solref) + .property("pair_solreffriction", &MjModel::pair_solreffriction) + .property("pair_solimp", &MjModel::pair_solimp) + .property("pair_margin", &MjModel::pair_margin) + .property("pair_gap", &MjModel::pair_gap) + .property("pair_friction", &MjModel::pair_friction) + .property("exclude_signature", &MjModel::exclude_signature) + .property("eq_type", &MjModel::eq_type) + .property("eq_obj1id", &MjModel::eq_obj1id) + .property("eq_obj2id", &MjModel::eq_obj2id) + .property("eq_objtype", &MjModel::eq_objtype) + .property("eq_active0", &MjModel::eq_active0) + .property("eq_solref", &MjModel::eq_solref) + .property("eq_solimp", &MjModel::eq_solimp) + .property("eq_data", &MjModel::eq_data) + .property("tendon_adr", &MjModel::tendon_adr) + .property("tendon_num", &MjModel::tendon_num) + .property("tendon_matid", &MjModel::tendon_matid) + .property("tendon_group", &MjModel::tendon_group) + .property("tendon_limited", &MjModel::tendon_limited) + .property("tendon_actfrclimited", &MjModel::tendon_actfrclimited) + .property("tendon_width", &MjModel::tendon_width) + .property("tendon_solref_lim", &MjModel::tendon_solref_lim) + .property("tendon_solimp_lim", &MjModel::tendon_solimp_lim) + .property("tendon_solref_fri", &MjModel::tendon_solref_fri) + .property("tendon_solimp_fri", &MjModel::tendon_solimp_fri) + .property("tendon_range", &MjModel::tendon_range) + .property("tendon_actfrcrange", &MjModel::tendon_actfrcrange) + .property("tendon_margin", &MjModel::tendon_margin) + .property("tendon_stiffness", &MjModel::tendon_stiffness) + .property("tendon_damping", &MjModel::tendon_damping) + .property("tendon_armature", &MjModel::tendon_armature) + .property("tendon_frictionloss", &MjModel::tendon_frictionloss) + .property("tendon_lengthspring", &MjModel::tendon_lengthspring) + .property("tendon_length0", &MjModel::tendon_length0) + .property("tendon_invweight0", &MjModel::tendon_invweight0) + .property("tendon_user", &MjModel::tendon_user) + .property("tendon_rgba", &MjModel::tendon_rgba) + .property("wrap_type", &MjModel::wrap_type) + .property("wrap_objid", &MjModel::wrap_objid) + .property("wrap_prm", &MjModel::wrap_prm) + .property("actuator_trntype", &MjModel::actuator_trntype) + .property("actuator_dyntype", &MjModel::actuator_dyntype) + .property("actuator_gaintype", &MjModel::actuator_gaintype) + .property("actuator_biastype", &MjModel::actuator_biastype) + .property("actuator_trnid", &MjModel::actuator_trnid) + .property("actuator_actadr", &MjModel::actuator_actadr) + .property("actuator_actnum", &MjModel::actuator_actnum) + .property("actuator_group", &MjModel::actuator_group) + .property("actuator_ctrllimited", &MjModel::actuator_ctrllimited) + .property("actuator_forcelimited", &MjModel::actuator_forcelimited) + .property("actuator_actlimited", &MjModel::actuator_actlimited) + .property("actuator_dynprm", &MjModel::actuator_dynprm) + .property("actuator_gainprm", &MjModel::actuator_gainprm) + .property("actuator_biasprm", &MjModel::actuator_biasprm) + .property("actuator_actearly", &MjModel::actuator_actearly) + .property("actuator_ctrlrange", &MjModel::actuator_ctrlrange) + .property("actuator_forcerange", &MjModel::actuator_forcerange) + .property("actuator_actrange", &MjModel::actuator_actrange) + .property("actuator_gear", &MjModel::actuator_gear) + .property("actuator_cranklength", &MjModel::actuator_cranklength) + .property("actuator_acc0", &MjModel::actuator_acc0) + .property("actuator_length0", &MjModel::actuator_length0) + .property("actuator_lengthrange", &MjModel::actuator_lengthrange) + .property("actuator_user", &MjModel::actuator_user) + .property("actuator_plugin", &MjModel::actuator_plugin) + .property("sensor_type", &MjModel::sensor_type) + .property("sensor_datatype", &MjModel::sensor_datatype) + .property("sensor_needstage", &MjModel::sensor_needstage) + .property("sensor_objtype", &MjModel::sensor_objtype) + .property("sensor_objid", &MjModel::sensor_objid) + .property("sensor_reftype", &MjModel::sensor_reftype) + .property("sensor_refid", &MjModel::sensor_refid) + .property("sensor_intprm", &MjModel::sensor_intprm) + .property("sensor_dim", &MjModel::sensor_dim) + .property("sensor_adr", &MjModel::sensor_adr) + .property("sensor_cutoff", &MjModel::sensor_cutoff) + .property("sensor_noise", &MjModel::sensor_noise) + .property("sensor_user", &MjModel::sensor_user) + .property("sensor_plugin", &MjModel::sensor_plugin) + .property("plugin", &MjModel::plugin) + .property("plugin_stateadr", &MjModel::plugin_stateadr) + .property("plugin_statenum", &MjModel::plugin_statenum) + .property("plugin_attr", &MjModel::plugin_attr) + .property("plugin_attradr", &MjModel::plugin_attradr) + .property("numeric_adr", &MjModel::numeric_adr) + .property("numeric_size", &MjModel::numeric_size) + .property("numeric_data", &MjModel::numeric_data) + .property("text_adr", &MjModel::text_adr) + .property("text_size", &MjModel::text_size) + .property("text_data", &MjModel::text_data) + .property("tuple_adr", &MjModel::tuple_adr) + .property("tuple_size", &MjModel::tuple_size) + .property("tuple_objtype", &MjModel::tuple_objtype) + .property("tuple_objid", &MjModel::tuple_objid) + .property("tuple_objprm", &MjModel::tuple_objprm) + .property("key_time", &MjModel::key_time) + .property("key_qpos", &MjModel::key_qpos) + .property("key_qvel", &MjModel::key_qvel) + .property("key_act", &MjModel::key_act) + .property("key_mpos", &MjModel::key_mpos) + .property("key_mquat", &MjModel::key_mquat) + .property("key_ctrl", &MjModel::key_ctrl) + .property("name_bodyadr", &MjModel::name_bodyadr) + .property("name_jntadr", &MjModel::name_jntadr) + .property("name_geomadr", &MjModel::name_geomadr) + .property("name_siteadr", &MjModel::name_siteadr) + .property("name_camadr", &MjModel::name_camadr) + .property("name_lightadr", &MjModel::name_lightadr) + .property("name_flexadr", &MjModel::name_flexadr) + .property("name_meshadr", &MjModel::name_meshadr) + .property("name_skinadr", &MjModel::name_skinadr) + .property("name_hfieldadr", &MjModel::name_hfieldadr) + .property("name_texadr", &MjModel::name_texadr) + .property("name_matadr", &MjModel::name_matadr) + .property("name_pairadr", &MjModel::name_pairadr) + .property("name_excludeadr", &MjModel::name_excludeadr) + .property("name_eqadr", &MjModel::name_eqadr) + .property("name_tendonadr", &MjModel::name_tendonadr) + .property("name_actuatoradr", &MjModel::name_actuatoradr) + .property("name_sensoradr", &MjModel::name_sensoradr) + .property("name_numericadr", &MjModel::name_numericadr) + .property("name_textadr", &MjModel::name_textadr) + .property("name_tupleadr", &MjModel::name_tupleadr) + .property("name_keyadr", &MjModel::name_keyadr) + .property("name_pluginadr", &MjModel::name_pluginadr) + .property("names", &MjModel::names) + .property("names_map", &MjModel::names_map) + .property("paths", &MjModel::paths) + .property("B_rownnz", &MjModel::B_rownnz) + .property("B_rowadr", &MjModel::B_rowadr) + .property("B_colind", &MjModel::B_colind) + .property("M_rownnz", &MjModel::M_rownnz) + .property("M_rowadr", &MjModel::M_rowadr) + .property("M_colind", &MjModel::M_colind) + .property("mapM2M", &MjModel::mapM2M) + .property("D_rownnz", &MjModel::D_rownnz) + .property("D_rowadr", &MjModel::D_rowadr) + .property("D_diag", &MjModel::D_diag) + .property("D_colind", &MjModel::D_colind) + .property("mapM2D", &MjModel::mapM2D) + .property("mapD2M", &MjModel::mapD2M) + .property("signature", &MjModel::signature, &MjModel::set_signature, reference()); emscripten::class_("MjsEquality") - .property("element", &MjsEquality::element, reference()) - .property("type", &MjsEquality::type, &MjsEquality::set_type, reference()) - .property("data", &MjsEquality::data) - .property("active", &MjsEquality::active, &MjsEquality::set_active, reference()) - .property("name1", &MjsEquality::name1, &MjsEquality::set_name1, reference()) - .property("name2", &MjsEquality::name2, &MjsEquality::set_name2, reference()) - .property("objtype", &MjsEquality::objtype, &MjsEquality::set_objtype, reference()) - .property("solref", &MjsEquality::solref) - .property("solimp", &MjsEquality::solimp) - .property("info", &MjsEquality::info, &MjsEquality::set_info, reference()) - ; + .property("element", &MjsEquality::element, reference()) + .property("type", &MjsEquality::type, &MjsEquality::set_type, reference()) + .property("data", &MjsEquality::data) + .property("active", &MjsEquality::active, &MjsEquality::set_active, reference()) + .property("name1", &MjsEquality::name1, &MjsEquality::set_name1, reference()) + .property("name2", &MjsEquality::name2, &MjsEquality::set_name2, reference()) + .property("objtype", &MjsEquality::objtype, &MjsEquality::set_objtype, reference()) + .property("solref", &MjsEquality::solref) + .property("solimp", &MjsEquality::solimp) + .property("info", &MjsEquality::info, &MjsEquality::set_info, reference()); emscripten::class_("MjsExclude") - .property("element", &MjsExclude::element, reference()) - .property("bodyname1", &MjsExclude::bodyname1, &MjsExclude::set_bodyname1, reference()) - .property("bodyname2", &MjsExclude::bodyname2, &MjsExclude::set_bodyname2, reference()) - .property("info", &MjsExclude::info, &MjsExclude::set_info, reference()) - ; + .property("element", &MjsExclude::element, reference()) + .property("bodyname1", &MjsExclude::bodyname1, &MjsExclude::set_bodyname1, reference()) + .property("bodyname2", &MjsExclude::bodyname2, &MjsExclude::set_bodyname2, reference()) + .property("info", &MjsExclude::info, &MjsExclude::set_info, reference()); emscripten::class_("MjsFlex") - .property("element", &MjsFlex::element, reference()) - .property("contype", &MjsFlex::contype, &MjsFlex::set_contype, reference()) - .property("conaffinity", &MjsFlex::conaffinity, &MjsFlex::set_conaffinity, reference()) - .property("condim", &MjsFlex::condim, &MjsFlex::set_condim, reference()) - .property("priority", &MjsFlex::priority, &MjsFlex::set_priority, reference()) - .property("friction", &MjsFlex::friction) - .property("solmix", &MjsFlex::solmix, &MjsFlex::set_solmix, reference()) - .property("solref", &MjsFlex::solref) - .property("solimp", &MjsFlex::solimp) - .property("margin", &MjsFlex::margin, &MjsFlex::set_margin, reference()) - .property("gap", &MjsFlex::gap, &MjsFlex::set_gap, reference()) - .property("dim", &MjsFlex::dim, &MjsFlex::set_dim, reference()) - .property("radius", &MjsFlex::radius, &MjsFlex::set_radius, reference()) - .property("internal", &MjsFlex::internal, &MjsFlex::set_internal, reference()) - .property("flatskin", &MjsFlex::flatskin, &MjsFlex::set_flatskin, reference()) - .property("selfcollide", &MjsFlex::selfcollide, &MjsFlex::set_selfcollide, reference()) - .property("vertcollide", &MjsFlex::vertcollide, &MjsFlex::set_vertcollide, reference()) - .property("passive", &MjsFlex::passive, &MjsFlex::set_passive, reference()) - .property("activelayers", &MjsFlex::activelayers, &MjsFlex::set_activelayers, reference()) - .property("group", &MjsFlex::group, &MjsFlex::set_group, reference()) - .property("edgestiffness", &MjsFlex::edgestiffness, &MjsFlex::set_edgestiffness, reference()) - .property("edgedamping", &MjsFlex::edgedamping, &MjsFlex::set_edgedamping, reference()) - .property("rgba", &MjsFlex::rgba) - .property("material", &MjsFlex::material, &MjsFlex::set_material, reference()) - .property("young", &MjsFlex::young, &MjsFlex::set_young, reference()) - .property("poisson", &MjsFlex::poisson, &MjsFlex::set_poisson, reference()) - .property("damping", &MjsFlex::damping, &MjsFlex::set_damping, reference()) - .property("thickness", &MjsFlex::thickness, &MjsFlex::set_thickness, reference()) - .property("elastic2d", &MjsFlex::elastic2d, &MjsFlex::set_elastic2d, reference()) - .property("nodebody", &MjsFlex::nodebody, reference()) - .property("vertbody", &MjsFlex::vertbody, reference()) - .property("node", &MjsFlex::node, reference()) - .property("vert", &MjsFlex::vert, reference()) - .property("elem", &MjsFlex::elem, reference()) - .property("texcoord", &MjsFlex::texcoord, reference()) - .property("elemtexcoord", &MjsFlex::elemtexcoord, reference()) - .property("info", &MjsFlex::info, &MjsFlex::set_info, reference()) - ; + .property("element", &MjsFlex::element, reference()) + .property("contype", &MjsFlex::contype, &MjsFlex::set_contype, reference()) + .property("conaffinity", &MjsFlex::conaffinity, &MjsFlex::set_conaffinity, reference()) + .property("condim", &MjsFlex::condim, &MjsFlex::set_condim, reference()) + .property("priority", &MjsFlex::priority, &MjsFlex::set_priority, reference()) + .property("friction", &MjsFlex::friction) + .property("solmix", &MjsFlex::solmix, &MjsFlex::set_solmix, reference()) + .property("solref", &MjsFlex::solref) + .property("solimp", &MjsFlex::solimp) + .property("margin", &MjsFlex::margin, &MjsFlex::set_margin, reference()) + .property("gap", &MjsFlex::gap, &MjsFlex::set_gap, reference()) + .property("dim", &MjsFlex::dim, &MjsFlex::set_dim, reference()) + .property("radius", &MjsFlex::radius, &MjsFlex::set_radius, reference()) + .property("internal", &MjsFlex::internal, &MjsFlex::set_internal, reference()) + .property("flatskin", &MjsFlex::flatskin, &MjsFlex::set_flatskin, reference()) + .property("selfcollide", &MjsFlex::selfcollide, &MjsFlex::set_selfcollide, reference()) + .property("vertcollide", &MjsFlex::vertcollide, &MjsFlex::set_vertcollide, reference()) + .property("passive", &MjsFlex::passive, &MjsFlex::set_passive, reference()) + .property("activelayers", &MjsFlex::activelayers, &MjsFlex::set_activelayers, reference()) + .property("group", &MjsFlex::group, &MjsFlex::set_group, reference()) + .property("edgestiffness", &MjsFlex::edgestiffness, &MjsFlex::set_edgestiffness, reference()) + .property("edgedamping", &MjsFlex::edgedamping, &MjsFlex::set_edgedamping, reference()) + .property("rgba", &MjsFlex::rgba) + .property("material", &MjsFlex::material, &MjsFlex::set_material, reference()) + .property("young", &MjsFlex::young, &MjsFlex::set_young, reference()) + .property("poisson", &MjsFlex::poisson, &MjsFlex::set_poisson, reference()) + .property("damping", &MjsFlex::damping, &MjsFlex::set_damping, reference()) + .property("thickness", &MjsFlex::thickness, &MjsFlex::set_thickness, reference()) + .property("elastic2d", &MjsFlex::elastic2d, &MjsFlex::set_elastic2d, reference()) + .property("nodebody", &MjsFlex::nodebody, reference()) + .property("vertbody", &MjsFlex::vertbody, reference()) + .property("node", &MjsFlex::node, reference()) + .property("vert", &MjsFlex::vert, reference()) + .property("elem", &MjsFlex::elem, reference()) + .property("texcoord", &MjsFlex::texcoord, reference()) + .property("elemtexcoord", &MjsFlex::elemtexcoord, reference()) + .property("info", &MjsFlex::info, &MjsFlex::set_info, reference()); emscripten::class_("MjsHField") - .property("element", &MjsHField::element, reference()) - .property("content_type", &MjsHField::content_type, &MjsHField::set_content_type, reference()) - .property("file", &MjsHField::file, &MjsHField::set_file, reference()) - .property("size", &MjsHField::size) - .property("nrow", &MjsHField::nrow, &MjsHField::set_nrow, reference()) - .property("ncol", &MjsHField::ncol, &MjsHField::set_ncol, reference()) - .property("userdata", &MjsHField::userdata, reference()) - .property("info", &MjsHField::info, &MjsHField::set_info, reference()) - ; + .property("element", &MjsHField::element, reference()) + .property("content_type", &MjsHField::content_type, &MjsHField::set_content_type, reference()) + .property("file", &MjsHField::file, &MjsHField::set_file, reference()) + .property("size", &MjsHField::size) + .property("nrow", &MjsHField::nrow, &MjsHField::set_nrow, reference()) + .property("ncol", &MjsHField::ncol, &MjsHField::set_ncol, reference()) + .property("userdata", &MjsHField::userdata, reference()) + .property("info", &MjsHField::info, &MjsHField::set_info, reference()); emscripten::class_("MjsJoint") - .property("element", &MjsJoint::element, reference()) - .property("type", &MjsJoint::type, &MjsJoint::set_type, reference()) - .property("pos", &MjsJoint::pos) - .property("axis", &MjsJoint::axis) - .property("ref", &MjsJoint::ref, &MjsJoint::set_ref, reference()) - .property("align", &MjsJoint::align, &MjsJoint::set_align, reference()) - .property("stiffness", &MjsJoint::stiffness, &MjsJoint::set_stiffness, reference()) - .property("springref", &MjsJoint::springref, &MjsJoint::set_springref, reference()) - .property("springdamper", &MjsJoint::springdamper) - .property("limited", &MjsJoint::limited, &MjsJoint::set_limited, reference()) - .property("range", &MjsJoint::range) - .property("margin", &MjsJoint::margin, &MjsJoint::set_margin, reference()) - .property("solref_limit", &MjsJoint::solref_limit) - .property("solimp_limit", &MjsJoint::solimp_limit) - .property("actfrclimited", &MjsJoint::actfrclimited, &MjsJoint::set_actfrclimited, reference()) - .property("actfrcrange", &MjsJoint::actfrcrange) - .property("armature", &MjsJoint::armature, &MjsJoint::set_armature, reference()) - .property("damping", &MjsJoint::damping, &MjsJoint::set_damping, reference()) - .property("frictionloss", &MjsJoint::frictionloss, &MjsJoint::set_frictionloss, reference()) - .property("solref_friction", &MjsJoint::solref_friction) - .property("solimp_friction", &MjsJoint::solimp_friction) - .property("group", &MjsJoint::group, &MjsJoint::set_group, reference()) - .property("actgravcomp", &MjsJoint::actgravcomp, &MjsJoint::set_actgravcomp, reference()) - .property("userdata", &MjsJoint::userdata, reference()) - .property("info", &MjsJoint::info, &MjsJoint::set_info, reference()) - ; + .property("element", &MjsJoint::element, reference()) + .property("type", &MjsJoint::type, &MjsJoint::set_type, reference()) + .property("pos", &MjsJoint::pos) + .property("axis", &MjsJoint::axis) + .property("ref", &MjsJoint::ref, &MjsJoint::set_ref, reference()) + .property("align", &MjsJoint::align, &MjsJoint::set_align, reference()) + .property("stiffness", &MjsJoint::stiffness, &MjsJoint::set_stiffness, reference()) + .property("springref", &MjsJoint::springref, &MjsJoint::set_springref, reference()) + .property("springdamper", &MjsJoint::springdamper) + .property("limited", &MjsJoint::limited, &MjsJoint::set_limited, reference()) + .property("range", &MjsJoint::range) + .property("margin", &MjsJoint::margin, &MjsJoint::set_margin, reference()) + .property("solref_limit", &MjsJoint::solref_limit) + .property("solimp_limit", &MjsJoint::solimp_limit) + .property("actfrclimited", &MjsJoint::actfrclimited, &MjsJoint::set_actfrclimited, reference()) + .property("actfrcrange", &MjsJoint::actfrcrange) + .property("armature", &MjsJoint::armature, &MjsJoint::set_armature, reference()) + .property("damping", &MjsJoint::damping, &MjsJoint::set_damping, reference()) + .property("frictionloss", &MjsJoint::frictionloss, &MjsJoint::set_frictionloss, reference()) + .property("solref_friction", &MjsJoint::solref_friction) + .property("solimp_friction", &MjsJoint::solimp_friction) + .property("group", &MjsJoint::group, &MjsJoint::set_group, reference()) + .property("actgravcomp", &MjsJoint::actgravcomp, &MjsJoint::set_actgravcomp, reference()) + .property("userdata", &MjsJoint::userdata, reference()) + .property("info", &MjsJoint::info, &MjsJoint::set_info, reference()); emscripten::class_("MjsKey") - .property("element", &MjsKey::element, reference()) - .property("time", &MjsKey::time, &MjsKey::set_time, reference()) - .property("qpos", &MjsKey::qpos, reference()) - .property("qvel", &MjsKey::qvel, reference()) - .property("act", &MjsKey::act, reference()) - .property("mpos", &MjsKey::mpos, reference()) - .property("mquat", &MjsKey::mquat, reference()) - .property("ctrl", &MjsKey::ctrl, reference()) - .property("info", &MjsKey::info, &MjsKey::set_info, reference()) - ; + .property("element", &MjsKey::element, reference()) + .property("time", &MjsKey::time, &MjsKey::set_time, reference()) + .property("qpos", &MjsKey::qpos, reference()) + .property("qvel", &MjsKey::qvel, reference()) + .property("act", &MjsKey::act, reference()) + .property("mpos", &MjsKey::mpos, reference()) + .property("mquat", &MjsKey::mquat, reference()) + .property("ctrl", &MjsKey::ctrl, reference()) + .property("info", &MjsKey::info, &MjsKey::set_info, reference()); emscripten::class_("MjsLight") - .property("element", &MjsLight::element, reference()) - .property("pos", &MjsLight::pos) - .property("dir", &MjsLight::dir) - .property("mode", &MjsLight::mode, &MjsLight::set_mode, reference()) - .property("targetbody", &MjsLight::targetbody, &MjsLight::set_targetbody, reference()) - .property("active", &MjsLight::active, &MjsLight::set_active, reference()) - .property("type", &MjsLight::type, &MjsLight::set_type, reference()) - .property("texture", &MjsLight::texture, &MjsLight::set_texture, reference()) - .property("castshadow", &MjsLight::castshadow, &MjsLight::set_castshadow, reference()) - .property("bulbradius", &MjsLight::bulbradius, &MjsLight::set_bulbradius, reference()) - .property("intensity", &MjsLight::intensity, &MjsLight::set_intensity, reference()) - .property("range", &MjsLight::range, &MjsLight::set_range, reference()) - .property("attenuation", &MjsLight::attenuation) - .property("cutoff", &MjsLight::cutoff, &MjsLight::set_cutoff, reference()) - .property("exponent", &MjsLight::exponent, &MjsLight::set_exponent, reference()) - .property("ambient", &MjsLight::ambient) - .property("diffuse", &MjsLight::diffuse) - .property("specular", &MjsLight::specular) - .property("info", &MjsLight::info, &MjsLight::set_info, reference()) - ; + .property("element", &MjsLight::element, reference()) + .property("pos", &MjsLight::pos) + .property("dir", &MjsLight::dir) + .property("mode", &MjsLight::mode, &MjsLight::set_mode, reference()) + .property("targetbody", &MjsLight::targetbody, &MjsLight::set_targetbody, reference()) + .property("active", &MjsLight::active, &MjsLight::set_active, reference()) + .property("type", &MjsLight::type, &MjsLight::set_type, reference()) + .property("texture", &MjsLight::texture, &MjsLight::set_texture, reference()) + .property("castshadow", &MjsLight::castshadow, &MjsLight::set_castshadow, reference()) + .property("bulbradius", &MjsLight::bulbradius, &MjsLight::set_bulbradius, reference()) + .property("intensity", &MjsLight::intensity, &MjsLight::set_intensity, reference()) + .property("range", &MjsLight::range, &MjsLight::set_range, reference()) + .property("attenuation", &MjsLight::attenuation) + .property("cutoff", &MjsLight::cutoff, &MjsLight::set_cutoff, reference()) + .property("exponent", &MjsLight::exponent, &MjsLight::set_exponent, reference()) + .property("ambient", &MjsLight::ambient) + .property("diffuse", &MjsLight::diffuse) + .property("specular", &MjsLight::specular) + .property("info", &MjsLight::info, &MjsLight::set_info, reference()); emscripten::class_("MjsMaterial") - .property("element", &MjsMaterial::element, reference()) - .property("textures", &MjsMaterial::textures, reference()) - .property("texuniform", &MjsMaterial::texuniform, &MjsMaterial::set_texuniform, reference()) - .property("texrepeat", &MjsMaterial::texrepeat) - .property("emission", &MjsMaterial::emission, &MjsMaterial::set_emission, reference()) - .property("specular", &MjsMaterial::specular, &MjsMaterial::set_specular, reference()) - .property("shininess", &MjsMaterial::shininess, &MjsMaterial::set_shininess, reference()) - .property("reflectance", &MjsMaterial::reflectance, &MjsMaterial::set_reflectance, reference()) - .property("metallic", &MjsMaterial::metallic, &MjsMaterial::set_metallic, reference()) - .property("roughness", &MjsMaterial::roughness, &MjsMaterial::set_roughness, reference()) - .property("rgba", &MjsMaterial::rgba) - .property("info", &MjsMaterial::info, &MjsMaterial::set_info, reference()) - ; + .property("element", &MjsMaterial::element, reference()) + .property("textures", &MjsMaterial::textures, reference()) + .property("texuniform", &MjsMaterial::texuniform, &MjsMaterial::set_texuniform, reference()) + .property("texrepeat", &MjsMaterial::texrepeat) + .property("emission", &MjsMaterial::emission, &MjsMaterial::set_emission, reference()) + .property("specular", &MjsMaterial::specular, &MjsMaterial::set_specular, reference()) + .property("shininess", &MjsMaterial::shininess, &MjsMaterial::set_shininess, reference()) + .property("reflectance", &MjsMaterial::reflectance, &MjsMaterial::set_reflectance, reference()) + .property("metallic", &MjsMaterial::metallic, &MjsMaterial::set_metallic, reference()) + .property("roughness", &MjsMaterial::roughness, &MjsMaterial::set_roughness, reference()) + .property("rgba", &MjsMaterial::rgba) + .property("info", &MjsMaterial::info, &MjsMaterial::set_info, reference()); emscripten::class_("MjsNumeric") - .property("element", &MjsNumeric::element, reference()) - .property("data", &MjsNumeric::data, reference()) - .property("size", &MjsNumeric::size, &MjsNumeric::set_size, reference()) - .property("info", &MjsNumeric::info, &MjsNumeric::set_info, reference()) - ; + .property("element", &MjsNumeric::element, reference()) + .property("data", &MjsNumeric::data, reference()) + .property("size", &MjsNumeric::size, &MjsNumeric::set_size, reference()) + .property("info", &MjsNumeric::info, &MjsNumeric::set_info, reference()); emscripten::class_("MjsPair") - .property("element", &MjsPair::element, reference()) - .property("geomname1", &MjsPair::geomname1, &MjsPair::set_geomname1, reference()) - .property("geomname2", &MjsPair::geomname2, &MjsPair::set_geomname2, reference()) - .property("condim", &MjsPair::condim, &MjsPair::set_condim, reference()) - .property("solref", &MjsPair::solref) - .property("solreffriction", &MjsPair::solreffriction) - .property("solimp", &MjsPair::solimp) - .property("margin", &MjsPair::margin, &MjsPair::set_margin, reference()) - .property("gap", &MjsPair::gap, &MjsPair::set_gap, reference()) - .property("friction", &MjsPair::friction) - .property("info", &MjsPair::info, &MjsPair::set_info, reference()) - ; + .property("element", &MjsPair::element, reference()) + .property("geomname1", &MjsPair::geomname1, &MjsPair::set_geomname1, reference()) + .property("geomname2", &MjsPair::geomname2, &MjsPair::set_geomname2, reference()) + .property("condim", &MjsPair::condim, &MjsPair::set_condim, reference()) + .property("solref", &MjsPair::solref) + .property("solreffriction", &MjsPair::solreffriction) + .property("solimp", &MjsPair::solimp) + .property("margin", &MjsPair::margin, &MjsPair::set_margin, reference()) + .property("gap", &MjsPair::gap, &MjsPair::set_gap, reference()) + .property("friction", &MjsPair::friction) + .property("info", &MjsPair::info, &MjsPair::set_info, reference()); emscripten::class_("MjsPlugin") - .property("element", &MjsPlugin::element, reference()) - .property("name", &MjsPlugin::name, &MjsPlugin::set_name, reference()) - .property("plugin_name", &MjsPlugin::plugin_name, &MjsPlugin::set_plugin_name, reference()) - .property("active", &MjsPlugin::active, &MjsPlugin::set_active, reference()) - .property("info", &MjsPlugin::info, &MjsPlugin::set_info, reference()) - ; + .property("element", &MjsPlugin::element, reference()) + .property("name", &MjsPlugin::name, &MjsPlugin::set_name, reference()) + .property("plugin_name", &MjsPlugin::plugin_name, &MjsPlugin::set_plugin_name, reference()) + .property("active", &MjsPlugin::active, &MjsPlugin::set_active, reference()) + .property("info", &MjsPlugin::info, &MjsPlugin::set_info, reference()); emscripten::class_("MjsSkin") - .property("element", &MjsSkin::element, reference()) - .property("file", &MjsSkin::file, &MjsSkin::set_file, reference()) - .property("material", &MjsSkin::material, &MjsSkin::set_material, reference()) - .property("rgba", &MjsSkin::rgba) - .property("inflate", &MjsSkin::inflate, &MjsSkin::set_inflate, reference()) - .property("group", &MjsSkin::group, &MjsSkin::set_group, reference()) - .property("vert", &MjsSkin::vert, reference()) - .property("texcoord", &MjsSkin::texcoord, reference()) - .property("face", &MjsSkin::face, reference()) - .property("bodyname", &MjsSkin::bodyname, reference()) - .property("bindpos", &MjsSkin::bindpos, reference()) - .property("bindquat", &MjsSkin::bindquat, reference()) - .property("vertid", &MjsSkin::vertid, reference()) - .property("vertweight", &MjsSkin::vertweight, reference()) - .property("info", &MjsSkin::info, &MjsSkin::set_info, reference()) - ; + .property("element", &MjsSkin::element, reference()) + .property("file", &MjsSkin::file, &MjsSkin::set_file, reference()) + .property("material", &MjsSkin::material, &MjsSkin::set_material, reference()) + .property("rgba", &MjsSkin::rgba) + .property("inflate", &MjsSkin::inflate, &MjsSkin::set_inflate, reference()) + .property("group", &MjsSkin::group, &MjsSkin::set_group, reference()) + .property("vert", &MjsSkin::vert, reference()) + .property("texcoord", &MjsSkin::texcoord, reference()) + .property("face", &MjsSkin::face, reference()) + .property("bodyname", &MjsSkin::bodyname, reference()) + .property("bindpos", &MjsSkin::bindpos, reference()) + .property("bindquat", &MjsSkin::bindquat, reference()) + .property("vertid", &MjsSkin::vertid, reference()) + .property("vertweight", &MjsSkin::vertweight, reference()) + .property("info", &MjsSkin::info, &MjsSkin::set_info, reference()); emscripten::class_("MjsTendon") - .property("element", &MjsTendon::element, reference()) - .property("stiffness", &MjsTendon::stiffness, &MjsTendon::set_stiffness, reference()) - .property("springlength", &MjsTendon::springlength) - .property("damping", &MjsTendon::damping, &MjsTendon::set_damping, reference()) - .property("frictionloss", &MjsTendon::frictionloss, &MjsTendon::set_frictionloss, reference()) - .property("solref_friction", &MjsTendon::solref_friction) - .property("solimp_friction", &MjsTendon::solimp_friction) - .property("armature", &MjsTendon::armature, &MjsTendon::set_armature, reference()) - .property("limited", &MjsTendon::limited, &MjsTendon::set_limited, reference()) - .property("actfrclimited", &MjsTendon::actfrclimited, &MjsTendon::set_actfrclimited, reference()) - .property("range", &MjsTendon::range) - .property("actfrcrange", &MjsTendon::actfrcrange) - .property("margin", &MjsTendon::margin, &MjsTendon::set_margin, reference()) - .property("solref_limit", &MjsTendon::solref_limit) - .property("solimp_limit", &MjsTendon::solimp_limit) - .property("material", &MjsTendon::material, &MjsTendon::set_material, reference()) - .property("width", &MjsTendon::width, &MjsTendon::set_width, reference()) - .property("rgba", &MjsTendon::rgba) - .property("group", &MjsTendon::group, &MjsTendon::set_group, reference()) - .property("userdata", &MjsTendon::userdata, reference()) - .property("info", &MjsTendon::info, &MjsTendon::set_info, reference()) - ; + .property("element", &MjsTendon::element, reference()) + .property("stiffness", &MjsTendon::stiffness, &MjsTendon::set_stiffness, reference()) + .property("springlength", &MjsTendon::springlength) + .property("damping", &MjsTendon::damping, &MjsTendon::set_damping, reference()) + .property("frictionloss", &MjsTendon::frictionloss, &MjsTendon::set_frictionloss, reference()) + .property("solref_friction", &MjsTendon::solref_friction) + .property("solimp_friction", &MjsTendon::solimp_friction) + .property("armature", &MjsTendon::armature, &MjsTendon::set_armature, reference()) + .property("limited", &MjsTendon::limited, &MjsTendon::set_limited, reference()) + .property("actfrclimited", &MjsTendon::actfrclimited, &MjsTendon::set_actfrclimited, reference()) + .property("range", &MjsTendon::range) + .property("actfrcrange", &MjsTendon::actfrcrange) + .property("margin", &MjsTendon::margin, &MjsTendon::set_margin, reference()) + .property("solref_limit", &MjsTendon::solref_limit) + .property("solimp_limit", &MjsTendon::solimp_limit) + .property("material", &MjsTendon::material, &MjsTendon::set_material, reference()) + .property("width", &MjsTendon::width, &MjsTendon::set_width, reference()) + .property("rgba", &MjsTendon::rgba) + .property("group", &MjsTendon::group, &MjsTendon::set_group, reference()) + .property("userdata", &MjsTendon::userdata, reference()) + .property("info", &MjsTendon::info, &MjsTendon::set_info, reference()); emscripten::class_("MjsText") - .property("element", &MjsText::element, reference()) - .property("data", &MjsText::data, &MjsText::set_data, reference()) - .property("info", &MjsText::info, &MjsText::set_info, reference()) - ; + .property("element", &MjsText::element, reference()) + .property("data", &MjsText::data, &MjsText::set_data, reference()) + .property("info", &MjsText::info, &MjsText::set_info, reference()); emscripten::class_("MjsTexture") - .property("element", &MjsTexture::element, reference()) - .property("type", &MjsTexture::type, &MjsTexture::set_type, reference()) - .property("colorspace", &MjsTexture::colorspace, &MjsTexture::set_colorspace, reference()) - .property("builtin", &MjsTexture::builtin, &MjsTexture::set_builtin, reference()) - .property("mark", &MjsTexture::mark, &MjsTexture::set_mark, reference()) - .property("rgb1", &MjsTexture::rgb1) - .property("rgb2", &MjsTexture::rgb2) - .property("markrgb", &MjsTexture::markrgb) - .property("random", &MjsTexture::random, &MjsTexture::set_random, reference()) - .property("height", &MjsTexture::height, &MjsTexture::set_height, reference()) - .property("width", &MjsTexture::width, &MjsTexture::set_width, reference()) - .property("nchannel", &MjsTexture::nchannel, &MjsTexture::set_nchannel, reference()) - .property("content_type", &MjsTexture::content_type, &MjsTexture::set_content_type, reference()) - .property("file", &MjsTexture::file, &MjsTexture::set_file, reference()) - .property("gridsize", &MjsTexture::gridsize) - .property("gridlayout", &MjsTexture::gridlayout) - .property("cubefiles", &MjsTexture::cubefiles, reference()) - .property("data", &MjsTexture::data, reference()) - .property("hflip", &MjsTexture::hflip, &MjsTexture::set_hflip, reference()) - .property("vflip", &MjsTexture::vflip, &MjsTexture::set_vflip, reference()) - .property("info", &MjsTexture::info, &MjsTexture::set_info, reference()) - ; + .property("element", &MjsTexture::element, reference()) + .property("type", &MjsTexture::type, &MjsTexture::set_type, reference()) + .property("colorspace", &MjsTexture::colorspace, &MjsTexture::set_colorspace, reference()) + .property("builtin", &MjsTexture::builtin, &MjsTexture::set_builtin, reference()) + .property("mark", &MjsTexture::mark, &MjsTexture::set_mark, reference()) + .property("rgb1", &MjsTexture::rgb1) + .property("rgb2", &MjsTexture::rgb2) + .property("markrgb", &MjsTexture::markrgb) + .property("random", &MjsTexture::random, &MjsTexture::set_random, reference()) + .property("height", &MjsTexture::height, &MjsTexture::set_height, reference()) + .property("width", &MjsTexture::width, &MjsTexture::set_width, reference()) + .property("nchannel", &MjsTexture::nchannel, &MjsTexture::set_nchannel, reference()) + .property("content_type", &MjsTexture::content_type, &MjsTexture::set_content_type, reference()) + .property("file", &MjsTexture::file, &MjsTexture::set_file, reference()) + .property("gridsize", &MjsTexture::gridsize) + .property("gridlayout", &MjsTexture::gridlayout) + .property("cubefiles", &MjsTexture::cubefiles, reference()) + .property("data", &MjsTexture::data, reference()) + .property("hflip", &MjsTexture::hflip, &MjsTexture::set_hflip, reference()) + .property("vflip", &MjsTexture::vflip, &MjsTexture::set_vflip, reference()) + .property("info", &MjsTexture::info, &MjsTexture::set_info, reference()); emscripten::class_("MjsTuple") - .property("element", &MjsTuple::element, reference()) - .property("objtype", &MjsTuple::objtype, reference()) - .property("objname", &MjsTuple::objname, reference()) - .property("objprm", &MjsTuple::objprm, reference()) - .property("info", &MjsTuple::info, &MjsTuple::set_info, reference()) - ; + .property("element", &MjsTuple::element, reference()) + .property("objtype", &MjsTuple::objtype, reference()) + .property("objname", &MjsTuple::objname, reference()) + .property("objprm", &MjsTuple::objprm, reference()) + .property("info", &MjsTuple::info, &MjsTuple::set_info, reference()); emscripten::class_("MjsWrap") - .property("element", &MjsWrap::element, reference()) - .property("type", &MjsWrap::type, &MjsWrap::set_type, reference()) - .property("info", &MjsWrap::info, &MjsWrap::set_info, reference()) - ; + .property("element", &MjsWrap::element, reference()) + .property("type", &MjsWrap::type, &MjsWrap::set_type, reference()) + .property("info", &MjsWrap::info, &MjsWrap::set_info, reference()); emscripten::class_("MjsCamera") - .property("element", &MjsCamera::element, reference()) - .property("pos", &MjsCamera::pos) - .property("quat", &MjsCamera::quat) - .property("alt", &MjsCamera::alt, reference()) - .property("mode", &MjsCamera::mode, &MjsCamera::set_mode, reference()) - .property("targetbody", &MjsCamera::targetbody, &MjsCamera::set_targetbody, reference()) - .property("orthographic", &MjsCamera::orthographic, &MjsCamera::set_orthographic, reference()) - .property("fovy", &MjsCamera::fovy, &MjsCamera::set_fovy, reference()) - .property("ipd", &MjsCamera::ipd, &MjsCamera::set_ipd, reference()) - .property("intrinsic", &MjsCamera::intrinsic) - .property("sensor_size", &MjsCamera::sensor_size) - .property("resolution", &MjsCamera::resolution) - .property("focal_length", &MjsCamera::focal_length) - .property("focal_pixel", &MjsCamera::focal_pixel) - .property("principal_length", &MjsCamera::principal_length) - .property("principal_pixel", &MjsCamera::principal_pixel) - .property("userdata", &MjsCamera::userdata, reference()) - .property("info", &MjsCamera::info, &MjsCamera::set_info, reference()) - ; + .property("element", &MjsCamera::element, reference()) + .property("pos", &MjsCamera::pos) + .property("quat", &MjsCamera::quat) + .property("alt", &MjsCamera::alt, reference()) + .property("mode", &MjsCamera::mode, &MjsCamera::set_mode, reference()) + .property("targetbody", &MjsCamera::targetbody, &MjsCamera::set_targetbody, reference()) + .property("orthographic", &MjsCamera::orthographic, &MjsCamera::set_orthographic, reference()) + .property("fovy", &MjsCamera::fovy, &MjsCamera::set_fovy, reference()) + .property("ipd", &MjsCamera::ipd, &MjsCamera::set_ipd, reference()) + .property("intrinsic", &MjsCamera::intrinsic) + .property("sensor_size", &MjsCamera::sensor_size) + .property("resolution", &MjsCamera::resolution) + .property("focal_length", &MjsCamera::focal_length) + .property("focal_pixel", &MjsCamera::focal_pixel) + .property("principal_length", &MjsCamera::principal_length) + .property("principal_pixel", &MjsCamera::principal_pixel) + .property("userdata", &MjsCamera::userdata, reference()) + .property("info", &MjsCamera::info, &MjsCamera::set_info, reference()); emscripten::class_("MjsFrame") - .property("element", &MjsFrame::element, reference()) - .property("childclass", &MjsFrame::childclass, &MjsFrame::set_childclass, reference()) - .property("pos", &MjsFrame::pos) - .property("quat", &MjsFrame::quat) - .property("alt", &MjsFrame::alt, reference()) - .property("info", &MjsFrame::info, &MjsFrame::set_info, reference()) - ; + .property("element", &MjsFrame::element, reference()) + .property("childclass", &MjsFrame::childclass, &MjsFrame::set_childclass, reference()) + .property("pos", &MjsFrame::pos) + .property("quat", &MjsFrame::quat) + .property("alt", &MjsFrame::alt, reference()) + .property("info", &MjsFrame::info, &MjsFrame::set_info, reference()); emscripten::class_("MjsSite") - .property("element", &MjsSite::element, reference()) - .property("pos", &MjsSite::pos) - .property("quat", &MjsSite::quat) - .property("alt", &MjsSite::alt, reference()) - .property("fromto", &MjsSite::fromto) - .property("size", &MjsSite::size) - .property("type", &MjsSite::type, &MjsSite::set_type, reference()) - .property("material", &MjsSite::material, &MjsSite::set_material, reference()) - .property("group", &MjsSite::group, &MjsSite::set_group, reference()) - .property("rgba", &MjsSite::rgba) - .property("userdata", &MjsSite::userdata, reference()) - .property("info", &MjsSite::info, &MjsSite::set_info, reference()) - ; + .property("element", &MjsSite::element, reference()) + .property("pos", &MjsSite::pos) + .property("quat", &MjsSite::quat) + .property("alt", &MjsSite::alt, reference()) + .property("fromto", &MjsSite::fromto) + .property("size", &MjsSite::size) + .property("type", &MjsSite::type, &MjsSite::set_type, reference()) + .property("material", &MjsSite::material, &MjsSite::set_material, reference()) + .property("group", &MjsSite::group, &MjsSite::set_group, reference()) + .property("rgba", &MjsSite::rgba) + .property("userdata", &MjsSite::userdata, reference()) + .property("info", &MjsSite::info, &MjsSite::set_info, reference()); + emscripten::class_("MjvScene") + .constructor() + .constructor<>() + .property("maxgeom", &MjvScene::maxgeom, &MjvScene::set_maxgeom, reference()) + .property("ngeom", &MjvScene::ngeom, &MjvScene::set_ngeom, reference()) + .property("geoms", &MjvScene::geoms) + .property("geomorder", &MjvScene::geomorder) + .property("nflex", &MjvScene::nflex, &MjvScene::set_nflex, reference()) + .property("flexedgeadr", &MjvScene::flexedgeadr) + .property("flexedgenum", &MjvScene::flexedgenum) + .property("flexvertadr", &MjvScene::flexvertadr) + .property("flexvertnum", &MjvScene::flexvertnum) + .property("flexfaceadr", &MjvScene::flexfaceadr) + .property("flexfacenum", &MjvScene::flexfacenum) + .property("flexfaceused", &MjvScene::flexfaceused) + .property("flexedge", &MjvScene::flexedge) + .property("flexvert", &MjvScene::flexvert) + .property("flexface", &MjvScene::flexface) + .property("flexnormal", &MjvScene::flexnormal) + .property("flextexcoord", &MjvScene::flextexcoord) + .property("flexvertopt", &MjvScene::flexvertopt, &MjvScene::set_flexvertopt, reference()) + .property("flexedgeopt", &MjvScene::flexedgeopt, &MjvScene::set_flexedgeopt, reference()) + .property("flexfaceopt", &MjvScene::flexfaceopt, &MjvScene::set_flexfaceopt, reference()) + .property("flexskinopt", &MjvScene::flexskinopt, &MjvScene::set_flexskinopt, reference()) + .property("nskin", &MjvScene::nskin, &MjvScene::set_nskin, reference()) + .property("skinfacenum", &MjvScene::skinfacenum) + .property("skinvertadr", &MjvScene::skinvertadr) + .property("skinvertnum", &MjvScene::skinvertnum) + .property("skinvert", &MjvScene::skinvert) + .property("skinnormal", &MjvScene::skinnormal) + .property("nlight", &MjvScene::nlight, &MjvScene::set_nlight, reference()) + .property("lights", &MjvScene::lights) + .property("camera", &MjvScene::camera) + .property("enabletransform", &MjvScene::enabletransform, &MjvScene::set_enabletransform, reference()) + .property("translate", &MjvScene::translate) + .property("rotate", &MjvScene::rotate) + .property("scale", &MjvScene::scale, &MjvScene::set_scale, reference()) + .property("stereo", &MjvScene::stereo, &MjvScene::set_stereo, reference()) + .property("flags", &MjvScene::flags) + .property("framewidth", &MjvScene::framewidth, &MjvScene::set_framewidth, reference()) + .property("framergb", &MjvScene::framergb) + .property("status", &MjvScene::status, &MjvScene::set_status, reference()); + emscripten::class_("MjSpec") + .constructor() + .property("element", &MjSpec::element) + .property("modelname", &MjSpec::modelname, &MjSpec::set_modelname, reference()) + .property("compiler", &MjSpec::compiler) + .property("strippath", &MjSpec::strippath, &MjSpec::set_strippath, reference()) + .property("option", &MjSpec::option) + .property("visual", &MjSpec::visual) + .property("stat", &MjSpec::stat) + .property("memory", &MjSpec::memory, &MjSpec::set_memory, reference()) + .property("nemax", &MjSpec::nemax, &MjSpec::set_nemax, reference()) + .property("nuserdata", &MjSpec::nuserdata, &MjSpec::set_nuserdata, reference()) + .property("nuser_body", &MjSpec::nuser_body, &MjSpec::set_nuser_body, reference()) + .property("nuser_jnt", &MjSpec::nuser_jnt, &MjSpec::set_nuser_jnt, reference()) + .property("nuser_geom", &MjSpec::nuser_geom, &MjSpec::set_nuser_geom, reference()) + .property("nuser_site", &MjSpec::nuser_site, &MjSpec::set_nuser_site, reference()) + .property("nuser_cam", &MjSpec::nuser_cam, &MjSpec::set_nuser_cam, reference()) + .property("nuser_tendon", &MjSpec::nuser_tendon, &MjSpec::set_nuser_tendon, reference()) + .property("nuser_actuator", &MjSpec::nuser_actuator, &MjSpec::set_nuser_actuator, reference()) + .property("nuser_sensor", &MjSpec::nuser_sensor, &MjSpec::set_nuser_sensor, reference()) + .property("nkey", &MjSpec::nkey, &MjSpec::set_nkey, reference()) + .property("njmax", &MjSpec::njmax, &MjSpec::set_njmax, reference()) + .property("nconmax", &MjSpec::nconmax, &MjSpec::set_nconmax, reference()) + .property("nstack", &MjSpec::nstack, &MjSpec::set_nstack, reference()) + .property("comment", &MjSpec::comment, &MjSpec::set_comment, reference()) + .property("modelfiledir", &MjSpec::modelfiledir, &MjSpec::set_modelfiledir, reference()) + .property("hasImplicitPluginElem", &MjSpec::hasImplicitPluginElem, &MjSpec::set_hasImplicitPluginElem, reference()); emscripten::class_("MjsActuator") - .property("element", &MjsActuator::element, reference()) - .property("gaintype", &MjsActuator::gaintype, &MjsActuator::set_gaintype, reference()) - .property("gainprm", &MjsActuator::gainprm) - .property("biastype", &MjsActuator::biastype, &MjsActuator::set_biastype, reference()) - .property("biasprm", &MjsActuator::biasprm) - .property("dyntype", &MjsActuator::dyntype, &MjsActuator::set_dyntype, reference()) - .property("dynprm", &MjsActuator::dynprm) - .property("actdim", &MjsActuator::actdim, &MjsActuator::set_actdim, reference()) - .property("actearly", &MjsActuator::actearly, &MjsActuator::set_actearly, reference()) - .property("trntype", &MjsActuator::trntype, &MjsActuator::set_trntype, reference()) - .property("gear", &MjsActuator::gear) - .property("target", &MjsActuator::target, &MjsActuator::set_target, reference()) - .property("refsite", &MjsActuator::refsite, &MjsActuator::set_refsite, reference()) - .property("slidersite", &MjsActuator::slidersite, &MjsActuator::set_slidersite, reference()) - .property("cranklength", &MjsActuator::cranklength, &MjsActuator::set_cranklength, reference()) - .property("lengthrange", &MjsActuator::lengthrange) - .property("inheritrange", &MjsActuator::inheritrange, &MjsActuator::set_inheritrange, reference()) - .property("ctrllimited", &MjsActuator::ctrllimited, &MjsActuator::set_ctrllimited, reference()) - .property("ctrlrange", &MjsActuator::ctrlrange) - .property("forcelimited", &MjsActuator::forcelimited, &MjsActuator::set_forcelimited, reference()) - .property("forcerange", &MjsActuator::forcerange) - .property("actlimited", &MjsActuator::actlimited, &MjsActuator::set_actlimited, reference()) - .property("actrange", &MjsActuator::actrange) - .property("group", &MjsActuator::group, &MjsActuator::set_group, reference()) - .property("userdata", &MjsActuator::userdata, reference()) - .property("plugin", &MjsActuator::plugin, reference()) - .property("info", &MjsActuator::info, &MjsActuator::set_info, reference()) - ; + .property("element", &MjsActuator::element, reference()) + .property("gaintype", &MjsActuator::gaintype, &MjsActuator::set_gaintype, reference()) + .property("gainprm", &MjsActuator::gainprm) + .property("biastype", &MjsActuator::biastype, &MjsActuator::set_biastype, reference()) + .property("biasprm", &MjsActuator::biasprm) + .property("dyntype", &MjsActuator::dyntype, &MjsActuator::set_dyntype, reference()) + .property("dynprm", &MjsActuator::dynprm) + .property("actdim", &MjsActuator::actdim, &MjsActuator::set_actdim, reference()) + .property("actearly", &MjsActuator::actearly, &MjsActuator::set_actearly, reference()) + .property("trntype", &MjsActuator::trntype, &MjsActuator::set_trntype, reference()) + .property("gear", &MjsActuator::gear) + .property("target", &MjsActuator::target, &MjsActuator::set_target, reference()) + .property("refsite", &MjsActuator::refsite, &MjsActuator::set_refsite, reference()) + .property("slidersite", &MjsActuator::slidersite, &MjsActuator::set_slidersite, reference()) + .property("cranklength", &MjsActuator::cranklength, &MjsActuator::set_cranklength, reference()) + .property("lengthrange", &MjsActuator::lengthrange) + .property("inheritrange", &MjsActuator::inheritrange, &MjsActuator::set_inheritrange, reference()) + .property("ctrllimited", &MjsActuator::ctrllimited, &MjsActuator::set_ctrllimited, reference()) + .property("ctrlrange", &MjsActuator::ctrlrange) + .property("forcelimited", &MjsActuator::forcelimited, &MjsActuator::set_forcelimited, reference()) + .property("forcerange", &MjsActuator::forcerange) + .property("actlimited", &MjsActuator::actlimited, &MjsActuator::set_actlimited, reference()) + .property("actrange", &MjsActuator::actrange) + .property("group", &MjsActuator::group, &MjsActuator::set_group, reference()) + .property("userdata", &MjsActuator::userdata, reference()) + .property("plugin", &MjsActuator::plugin, reference()) + .property("info", &MjsActuator::info, &MjsActuator::set_info, reference()); emscripten::class_("MjsBody") - .property("element", &MjsBody::element, reference()) - .property("childclass", &MjsBody::childclass, &MjsBody::set_childclass, reference()) - .property("pos", &MjsBody::pos) - .property("quat", &MjsBody::quat) - .property("alt", &MjsBody::alt, reference()) - .property("mass", &MjsBody::mass, &MjsBody::set_mass, reference()) - .property("ipos", &MjsBody::ipos) - .property("iquat", &MjsBody::iquat) - .property("inertia", &MjsBody::inertia) - .property("ialt", &MjsBody::ialt, reference()) - .property("fullinertia", &MjsBody::fullinertia) - .property("mocap", &MjsBody::mocap, &MjsBody::set_mocap, reference()) - .property("gravcomp", &MjsBody::gravcomp, &MjsBody::set_gravcomp, reference()) - .property("userdata", &MjsBody::userdata, reference()) - .property("explicitinertial", &MjsBody::explicitinertial, &MjsBody::set_explicitinertial, reference()) - .property("plugin", &MjsBody::plugin, reference()) - .property("info", &MjsBody::info, &MjsBody::set_info, reference()) - ; + .property("element", &MjsBody::element, reference()) + .property("childclass", &MjsBody::childclass, &MjsBody::set_childclass, reference()) + .property("pos", &MjsBody::pos) + .property("quat", &MjsBody::quat) + .property("alt", &MjsBody::alt, reference()) + .property("mass", &MjsBody::mass, &MjsBody::set_mass, reference()) + .property("ipos", &MjsBody::ipos) + .property("iquat", &MjsBody::iquat) + .property("inertia", &MjsBody::inertia) + .property("ialt", &MjsBody::ialt, reference()) + .property("fullinertia", &MjsBody::fullinertia) + .property("mocap", &MjsBody::mocap, &MjsBody::set_mocap, reference()) + .property("gravcomp", &MjsBody::gravcomp, &MjsBody::set_gravcomp, reference()) + .property("userdata", &MjsBody::userdata, reference()) + .property("explicitinertial", &MjsBody::explicitinertial, &MjsBody::set_explicitinertial, reference()) + .property("plugin", &MjsBody::plugin, reference()) + .property("info", &MjsBody::info, &MjsBody::set_info, reference()); emscripten::class_("MjsGeom") - .property("element", &MjsGeom::element, reference()) - .property("type", &MjsGeom::type, &MjsGeom::set_type, reference()) - .property("pos", &MjsGeom::pos) - .property("quat", &MjsGeom::quat) - .property("alt", &MjsGeom::alt, reference()) - .property("fromto", &MjsGeom::fromto) - .property("size", &MjsGeom::size) - .property("contype", &MjsGeom::contype, &MjsGeom::set_contype, reference()) - .property("conaffinity", &MjsGeom::conaffinity, &MjsGeom::set_conaffinity, reference()) - .property("condim", &MjsGeom::condim, &MjsGeom::set_condim, reference()) - .property("priority", &MjsGeom::priority, &MjsGeom::set_priority, reference()) - .property("friction", &MjsGeom::friction) - .property("solmix", &MjsGeom::solmix, &MjsGeom::set_solmix, reference()) - .property("solref", &MjsGeom::solref) - .property("solimp", &MjsGeom::solimp) - .property("margin", &MjsGeom::margin, &MjsGeom::set_margin, reference()) - .property("gap", &MjsGeom::gap, &MjsGeom::set_gap, reference()) - .property("mass", &MjsGeom::mass, &MjsGeom::set_mass, reference()) - .property("density", &MjsGeom::density, &MjsGeom::set_density, reference()) - .property("typeinertia", &MjsGeom::typeinertia, &MjsGeom::set_typeinertia, reference()) - .property("fluid_ellipsoid", &MjsGeom::fluid_ellipsoid, &MjsGeom::set_fluid_ellipsoid, reference()) - .property("fluid_coefs", &MjsGeom::fluid_coefs) - .property("material", &MjsGeom::material, &MjsGeom::set_material, reference()) - .property("rgba", &MjsGeom::rgba) - .property("group", &MjsGeom::group, &MjsGeom::set_group, reference()) - .property("hfieldname", &MjsGeom::hfieldname, &MjsGeom::set_hfieldname, reference()) - .property("meshname", &MjsGeom::meshname, &MjsGeom::set_meshname, reference()) - .property("fitscale", &MjsGeom::fitscale, &MjsGeom::set_fitscale, reference()) - .property("userdata", &MjsGeom::userdata, reference()) - .property("plugin", &MjsGeom::plugin, reference()) - .property("info", &MjsGeom::info, &MjsGeom::set_info, reference()) - ; + .property("element", &MjsGeom::element, reference()) + .property("type", &MjsGeom::type, &MjsGeom::set_type, reference()) + .property("pos", &MjsGeom::pos) + .property("quat", &MjsGeom::quat) + .property("alt", &MjsGeom::alt, reference()) + .property("fromto", &MjsGeom::fromto) + .property("size", &MjsGeom::size) + .property("contype", &MjsGeom::contype, &MjsGeom::set_contype, reference()) + .property("conaffinity", &MjsGeom::conaffinity, &MjsGeom::set_conaffinity, reference()) + .property("condim", &MjsGeom::condim, &MjsGeom::set_condim, reference()) + .property("priority", &MjsGeom::priority, &MjsGeom::set_priority, reference()) + .property("friction", &MjsGeom::friction) + .property("solmix", &MjsGeom::solmix, &MjsGeom::set_solmix, reference()) + .property("solref", &MjsGeom::solref) + .property("solimp", &MjsGeom::solimp) + .property("margin", &MjsGeom::margin, &MjsGeom::set_margin, reference()) + .property("gap", &MjsGeom::gap, &MjsGeom::set_gap, reference()) + .property("mass", &MjsGeom::mass, &MjsGeom::set_mass, reference()) + .property("density", &MjsGeom::density, &MjsGeom::set_density, reference()) + .property("typeinertia", &MjsGeom::typeinertia, &MjsGeom::set_typeinertia, reference()) + .property("fluid_ellipsoid", &MjsGeom::fluid_ellipsoid, &MjsGeom::set_fluid_ellipsoid, reference()) + .property("fluid_coefs", &MjsGeom::fluid_coefs) + .property("material", &MjsGeom::material, &MjsGeom::set_material, reference()) + .property("rgba", &MjsGeom::rgba) + .property("group", &MjsGeom::group, &MjsGeom::set_group, reference()) + .property("hfieldname", &MjsGeom::hfieldname, &MjsGeom::set_hfieldname, reference()) + .property("meshname", &MjsGeom::meshname, &MjsGeom::set_meshname, reference()) + .property("fitscale", &MjsGeom::fitscale, &MjsGeom::set_fitscale, reference()) + .property("userdata", &MjsGeom::userdata, reference()) + .property("plugin", &MjsGeom::plugin, reference()) + .property("info", &MjsGeom::info, &MjsGeom::set_info, reference()); emscripten::class_("MjsMesh") - .property("element", &MjsMesh::element, reference()) - .property("content_type", &MjsMesh::content_type, &MjsMesh::set_content_type, reference()) - .property("file", &MjsMesh::file, &MjsMesh::set_file, reference()) - .property("refpos", &MjsMesh::refpos) - .property("refquat", &MjsMesh::refquat) - .property("scale", &MjsMesh::scale) - .property("inertia", &MjsMesh::inertia, &MjsMesh::set_inertia, reference()) - .property("smoothnormal", &MjsMesh::smoothnormal, &MjsMesh::set_smoothnormal, reference()) - .property("needsdf", &MjsMesh::needsdf, &MjsMesh::set_needsdf, reference()) - .property("maxhullvert", &MjsMesh::maxhullvert, &MjsMesh::set_maxhullvert, reference()) - .property("uservert", &MjsMesh::uservert, reference()) - .property("usernormal", &MjsMesh::usernormal, reference()) - .property("usertexcoord", &MjsMesh::usertexcoord, reference()) - .property("userface", &MjsMesh::userface, reference()) - .property("userfacenormal", &MjsMesh::userfacenormal, reference()) - .property("userfacetexcoord", &MjsMesh::userfacetexcoord, reference()) - .property("plugin", &MjsMesh::plugin, reference()) - .property("material", &MjsMesh::material, &MjsMesh::set_material, reference()) - .property("info", &MjsMesh::info, &MjsMesh::set_info, reference()) - ; + .property("element", &MjsMesh::element, reference()) + .property("content_type", &MjsMesh::content_type, &MjsMesh::set_content_type, reference()) + .property("file", &MjsMesh::file, &MjsMesh::set_file, reference()) + .property("refpos", &MjsMesh::refpos) + .property("refquat", &MjsMesh::refquat) + .property("scale", &MjsMesh::scale) + .property("inertia", &MjsMesh::inertia, &MjsMesh::set_inertia, reference()) + .property("smoothnormal", &MjsMesh::smoothnormal, &MjsMesh::set_smoothnormal, reference()) + .property("needsdf", &MjsMesh::needsdf, &MjsMesh::set_needsdf, reference()) + .property("maxhullvert", &MjsMesh::maxhullvert, &MjsMesh::set_maxhullvert, reference()) + .property("uservert", &MjsMesh::uservert, reference()) + .property("usernormal", &MjsMesh::usernormal, reference()) + .property("usertexcoord", &MjsMesh::usertexcoord, reference()) + .property("userface", &MjsMesh::userface, reference()) + .property("userfacenormal", &MjsMesh::userfacenormal, reference()) + .property("userfacetexcoord", &MjsMesh::userfacetexcoord, reference()) + .property("plugin", &MjsMesh::plugin, reference()) + .property("material", &MjsMesh::material, &MjsMesh::set_material, reference()) + .property("info", &MjsMesh::info, &MjsMesh::set_info, reference()); emscripten::class_("MjsSensor") - .property("element", &MjsSensor::element, reference()) - .property("type", &MjsSensor::type, &MjsSensor::set_type, reference()) - .property("objtype", &MjsSensor::objtype, &MjsSensor::set_objtype, reference()) - .property("objname", &MjsSensor::objname, &MjsSensor::set_objname, reference()) - .property("reftype", &MjsSensor::reftype, &MjsSensor::set_reftype, reference()) - .property("refname", &MjsSensor::refname, &MjsSensor::set_refname, reference()) - .property("intprm", &MjsSensor::intprm) - .property("datatype", &MjsSensor::datatype, &MjsSensor::set_datatype, reference()) - .property("needstage", &MjsSensor::needstage, &MjsSensor::set_needstage, reference()) - .property("dim", &MjsSensor::dim, &MjsSensor::set_dim, reference()) - .property("cutoff", &MjsSensor::cutoff, &MjsSensor::set_cutoff, reference()) - .property("noise", &MjsSensor::noise, &MjsSensor::set_noise, reference()) - .property("userdata", &MjsSensor::userdata, reference()) - .property("plugin", &MjsSensor::plugin, reference()) - .property("info", &MjsSensor::info, &MjsSensor::set_info, reference()) - ; + .property("element", &MjsSensor::element, reference()) + .property("type", &MjsSensor::type, &MjsSensor::set_type, reference()) + .property("objtype", &MjsSensor::objtype, &MjsSensor::set_objtype, reference()) + .property("objname", &MjsSensor::objname, &MjsSensor::set_objname, reference()) + .property("reftype", &MjsSensor::reftype, &MjsSensor::set_reftype, reference()) + .property("refname", &MjsSensor::refname, &MjsSensor::set_refname, reference()) + .property("intprm", &MjsSensor::intprm) + .property("datatype", &MjsSensor::datatype, &MjsSensor::set_datatype, reference()) + .property("needstage", &MjsSensor::needstage, &MjsSensor::set_needstage, reference()) + .property("dim", &MjsSensor::dim, &MjsSensor::set_dim, reference()) + .property("cutoff", &MjsSensor::cutoff, &MjsSensor::set_cutoff, reference()) + .property("noise", &MjsSensor::noise, &MjsSensor::set_noise, reference()) + .property("userdata", &MjsSensor::userdata, reference()) + .property("plugin", &MjsSensor::plugin, reference()) + .property("info", &MjsSensor::info, &MjsSensor::set_info, reference()); emscripten::class_("MjsDefault") - .property("element", &MjsDefault::element, reference()) - .property("joint", &MjsDefault::joint, reference()) - .property("geom", &MjsDefault::geom, reference()) - .property("site", &MjsDefault::site, reference()) - .property("camera", &MjsDefault::camera, reference()) - .property("light", &MjsDefault::light, reference()) - .property("flex", &MjsDefault::flex, reference()) - .property("mesh", &MjsDefault::mesh, reference()) - .property("material", &MjsDefault::material, reference()) - .property("pair", &MjsDefault::pair, reference()) - .property("equality", &MjsDefault::equality, reference()) - .property("tendon", &MjsDefault::tendon, reference()) - .property("actuator", &MjsDefault::actuator, reference()) - ; + .property("element", &MjsDefault::element, reference()) + .property("joint", &MjsDefault::joint, reference()) + .property("geom", &MjsDefault::geom, reference()) + .property("site", &MjsDefault::site, reference()) + .property("camera", &MjsDefault::camera, reference()) + .property("light", &MjsDefault::light, reference()) + .property("flex", &MjsDefault::flex, reference()) + .property("mesh", &MjsDefault::mesh, reference()) + .property("material", &MjsDefault::material, reference()) + .property("pair", &MjsDefault::pair, reference()) + .property("equality", &MjsDefault::equality, reference()) + .property("tendon", &MjsDefault::tendon, reference()) + .property("actuator", &MjsDefault::actuator, reference()); // TODO: should be generated in future CLs -- // emscripten::register_vector("MjSolverStatVec"); diff --git a/wasm/codegen/generators/structs.py b/wasm/codegen/generators/structs.py index a2f884e6..8833c118 100644 --- a/wasm/codegen/generators/structs.py +++ b/wasm/codegen/generators/structs.py @@ -65,14 +65,7 @@ class Generator: autogenned_struct_source.append( struct_data.wrapped_source + "\n" ) - if struct_data.bindings: - autogenned_struct_bindings.append(struct_data.bindings) - else: - # Bindings with markers - markers_and_content.append(( - f"// INSERT-GENERATED-{struct_data.wrap_name}-BINDINGS", - [l.binding for l in struct_data.wrapped_fields], - )) + autogenned_struct_bindings.append(struct_data.bindings) markers_and_content.append(( "// {{ AUTOGENNED_STRUCTS_SOURCE }}", diff --git a/wasm/codegen/helpers/code_builder.py b/wasm/codegen/helpers/code_builder.py index 073012eb..db4ebf5b 100644 --- a/wasm/codegen/helpers/code_builder.py +++ b/wasm/codegen/helpers/code_builder.py @@ -47,13 +47,15 @@ class CodeBuilder: class IndentBlock: """Helper class to manage indentation within a `with` statement.""" - def __init__(self, builder: "CodeBuilder", header_line=""): + def __init__(self, builder: "CodeBuilder", header_line="", braces=True): self._builder = builder self._header_line = header_line + self._braces = braces def __enter__(self): line = self._header_line - line += " {" if line else "{" + if self._braces: + line += " {" if line else "{" self._builder.line(line) self._builder._indent_level += 1 self._line_count_enter = len(self._builder._lines) @@ -65,20 +67,22 @@ class CodeBuilder: if self._line_count_enter == len(self._builder._lines): self._builder._lines[-1] += "}" else: - self._builder.line("}") + if self._braces: + self._builder.line("}") - def block(self, header_line="") -> IndentBlock: + def block(self, header_line="", braces=True) -> IndentBlock: """Creates a block including braces and an optional header before the opening brace. Use via a `with` statement. Args: header_line: Optional header line to add before the opening brace. + braces: Whether to include opening and closing braces. Returns: An IndentBlock instance that manages the indentation. """ - return self.IndentBlock(self, header_line) + return self.IndentBlock(self, header_line, braces) def function(self, signature="") -> IndentBlock: """Creates a function.""" diff --git a/wasm/codegen/helpers/structs.py b/wasm/codegen/helpers/structs.py index 3ae27442..ec09573d 100644 --- a/wasm/codegen/helpers/structs.py +++ b/wasm/codegen/helpers/structs.py @@ -668,33 +668,38 @@ def _build_struct_bindings( wrapped_fields: List[WrappedFieldData], ): """Builds the C++ bindings for a struct.""" - # These structs require specific constructors - # which, for now, are hardcoded in the template file. - if struct_name in [ - "mjData", - "mjModel", - "mjvScene", - "mjSpec", - ]: - return "" - w = common.uppercase_first_letter(struct_name) - spc = " " builder = code_builder.CodeBuilder() - builder.line(f"emscripten::class_<{w}>(\"{w}\")") + with builder.block( + header_line=f'emscripten::class_<{w}>("{w}")', braces=False + ): + if w == "MjData": + builder.line(".constructor()") + builder.line(".constructor()") + elif w == "MjModel": + builder.line( + '.class_function("loadFromXML", &loadFromXML, take_ownership())' + ) + builder.line(".constructor()") + elif w == "MjSpec": + builder.line(".constructor()") + elif w == "MjvScene": + builder.line(".constructor()") - is_mjs = w.startswith("Mjs") - if not is_mjs: - builder.line(f"{spc}.constructor<>()") + is_mjs = w.startswith("Mjs") + if not is_mjs and w not in ["MjData", "MjModel", "MjSpec"]: + builder.line(".constructor<>()") - shallow_copy = use_shallow_copy(wrapped_fields) - if shallow_copy and not is_mjs: - builder.line(f"{spc}.function(\"copy\", &{w}::copy, take_ownership())") + shallow_copy = use_shallow_copy(wrapped_fields) + if shallow_copy and not is_mjs: + builder.line(f'.function("copy", &{w}::copy, take_ownership())') + + for field in wrapped_fields[:-1]: + if field.binding: + builder.line(field.binding) + if wrapped_fields: + builder.line(f"{wrapped_fields[-1].binding};") - for field in wrapped_fields: - if field.binding: - builder.line(f"{spc}{field.binding}") - builder.line(f"{spc};") return builder.to_string() diff --git a/wasm/codegen/templates/bindings.cc b/wasm/codegen/templates/bindings.cc index 0dfd02f9..7d23b464 100644 --- a/wasm/codegen/templates/bindings.cc +++ b/wasm/codegen/templates/bindings.cc @@ -597,26 +597,6 @@ std::unique_ptr parseXMLString(const std::string &xml) { EMSCRIPTEN_BINDINGS(mujoco_bindings) { function("parseXMLString", &parseXMLString, take_ownership()); - - emscripten::class_("MjModel") - .class_function("loadFromXML", &loadFromXML, take_ownership()) - .constructor() - // INSERT-GENERATED-MjModel-BINDINGS - ; - emscripten::class_("MjData") - .constructor() - .constructor() - // INSERT-GENERATED-MjData-BINDINGS - ; - emscripten::class_("MjvScene") - .constructor<>() - .constructor() - // INSERT-GENERATED-MjvScene-BINDINGS - ; - emscripten::class_("MjSpec") - .constructor() - // INSERT-GENERATED-MjSpec-BINDINGS - ; // {{ AUTOGENNED_STRUCTS_BINDINGS }} // TODO: should be generated in future CLs -- //