/ /code /code.swankyquant /code.swankyquant.algorithm /code.swankyquant.color_distance /code.swankyquant.color_distance_weight /code.swankyquant.swanky_quant /code.swankyquant.swanky_quant_remap /draw/entities /entities.systems /entities.systems.bang /entities.systems.donut /entities.systems.horde /entities.systems.invader /entities.systems.item /entities.systems.level /entities.systems.menu /entities.systems.missile /entities.systems.npc /entities.systems.player /entities.systems.score /entities.systems.space /entities.systems.stars /entities.systems.tile /entities.systems.yarn/entities.tiles /entities.tiles.npc /entities.tiles.sprite /entities.tiles.start /graphics /hardware /levels/lua /lua.box2d /lua.box2d.body /lua.box2d.body.aabb /lua.box2d.body.acceleration /lua.box2d.body.awake /lua.box2d.body.convert /lua.box2d.body.destroy /lua.box2d.body.force /lua.box2d.body.get /lua.box2d.body.info /lua.box2d.body.mass /lua.box2d.body.set /lua.box2d.body.transform /lua.box2d.body.type /lua.box2d.body.velocity /lua.box2d.get /lua.box2d.info/lua.box2d.joint /lua.box2d.joint.destroy /lua.box2d.joint.get /lua.box2d.joint.info /lua.box2d.joint.set /lua.box2d.set/lua.box2d.shape /lua.box2d.shape.aabb /lua.box2d.shape.convert /lua.box2d.shape.destroy /lua.box2d.shape.get /lua.box2d.shape.info /lua.box2d.shape.set/lua.box2d.world /lua.box2d.world.bits/lua.box2d.world.body /lua.box2d.world.body.shape /lua.box2d.world.body_events /lua.box2d.world.cast /lua.box2d.world.contact_events /lua.box2d.world.defaults /lua.box2d.world.destroy /lua.box2d.world.fill /lua.box2d.world.fills /lua.box2d.world.get /lua.box2d.world.info /lua.box2d.world.joint /lua.box2d.world.overlap /lua.box2d.world.prepare_events /lua.box2d.world.sensor_events /lua.box2d.world.set /lua.box2d.world.step/lua.box3d /lua.box3d.body /lua.box3d.body.aabb /lua.box3d.body.acceleration /lua.box3d.body.awake /lua.box3d.body.convert /lua.box3d.body.destroy /lua.box3d.body.force /lua.box3d.body.get /lua.box3d.body.info /lua.box3d.body.mass /lua.box3d.body.set /lua.box3d.body.transform /lua.box3d.body.type /lua.box3d.body.velocity /lua.box3d.get /lua.box3d.info/lua.box3d.joint /lua.box3d.joint.destroy /lua.box3d.joint.get /lua.box3d.joint.info /lua.box3d.joint.set /lua.box3d.set/lua.box3d.shape /lua.box3d.shape.aabb /lua.box3d.shape.convert /lua.box3d.shape.destroy /lua.box3d.shape.get /lua.box3d.shape.info /lua.box3d.shape.set/lua.box3d.world /lua.box3d.world.bits/lua.box3d.world.body /lua.box3d.world.body.shape /lua.box3d.world.body_events /lua.box3d.world.cast /lua.box3d.world.contact_events /lua.box3d.world.defaults /lua.box3d.world.destroy /lua.box3d.world.fill /lua.box3d.world.fills /lua.box3d.world.get /lua.box3d.world.info /lua.box3d.world.joint /lua.box3d.world.overlap /lua.box3d.world.prepare_events /lua.box3d.world.sensor_events /lua.box3d.world.set /lua.box3d.world.step /lua.boxxd/lua.glslang /lua.glslang.lint_gles2 /lua.glslang.parse_chunks /lua.glslang.pp /lua.glslang.replace_include /lua.glslang.yank_shader_versions/lua.swanky /lua.swanky.edit /lua.swanky.edit.collect /lua.swanky.edit.collect.task_code/lua.wetgenes /lua.wetgenes.bullet /lua.wetgenes.bullet.body /lua.wetgenes.bullet.body.cgroup /lua.wetgenes.bullet.body.change_shape /lua.wetgenes.bullet.body.cmask /lua.wetgenes.bullet.body.force /lua.wetgenes.bullet.body.gravity /lua.wetgenes.bullet.body.impulse /lua.wetgenes.bullet.body.overlaps /lua.wetgenes.bullet.body.support/lua.wetgenes.bullet.world /lua.wetgenes.bullet.world.body /lua.wetgenes.bullet.world.body.active /lua.wetgenes.bullet.world.body.angular_factor /lua.wetgenes.bullet.world.body.angular_velocity /lua.wetgenes.bullet.world.body.ccd /lua.wetgenes.bullet.world.body.custom_material_callback /lua.wetgenes.bullet.world.body.damping /lua.wetgenes.bullet.world.body.destroy /lua.wetgenes.bullet.world.body.factor /lua.wetgenes.bullet.world.body.friction /lua.wetgenes.bullet.world.body.restitution /lua.wetgenes.bullet.world.body.sleep /lua.wetgenes.bullet.world.body.transform /lua.wetgenes.bullet.world.body.velocity /lua.wetgenes.bullet.world.contacts /lua.wetgenes.bullet.world.destroy /lua.wetgenes.bullet.world.get /lua.wetgenes.bullet.world.gravity/lua.wetgenes.bullet.world.mesh /lua.wetgenes.bullet.world.mesh.destroy /lua.wetgenes.bullet.world.ray_test /lua.wetgenes.bullet.world.set/lua.wetgenes.bullet.world.shape /lua.wetgenes.bullet.world.shape.destroy /lua.wetgenes.bullet.world.shape.margin /lua.wetgenes.bullet.world.status /lua.wetgenes.bullet.world.step/lua.wetgenes.chipmunk /lua.wetgenes.chipmunk.arbiter /lua.wetgenes.chipmunk.arbiter.ignore /lua.wetgenes.chipmunk.arbiter.impulse /lua.wetgenes.chipmunk.arbiter.points /lua.wetgenes.chipmunk.arbiter.surface_velocity/lua.wetgenes.chipmunk.body /lua.wetgenes.chipmunk.body.angle /lua.wetgenes.chipmunk.body.angular_velocity /lua.wetgenes.chipmunk.body.apply_force /lua.wetgenes.chipmunk.body.apply_impulse /lua.wetgenes.chipmunk.body.center_of_gravity /lua.wetgenes.chipmunk.body.force /lua.wetgenes.chipmunk.body.mass /lua.wetgenes.chipmunk.body.moment /lua.wetgenes.chipmunk.body.position /lua.wetgenes.chipmunk.body.position_func /lua.wetgenes.chipmunk.body.shape /lua.wetgenes.chipmunk.body.torque /lua.wetgenes.chipmunk.body.type /lua.wetgenes.chipmunk.body.velocity /lua.wetgenes.chipmunk.body.velocity_func/lua.wetgenes.chipmunk.constraint /lua.wetgenes.chipmunk.constraint.collide_bodies /lua.wetgenes.chipmunk.constraint.error_bias /lua.wetgenes.chipmunk.constraint.impulse /lua.wetgenes.chipmunk.constraint.max_bias /lua.wetgenes.chipmunk.constraint.max_force/lua.wetgenes.chipmunk.shape /lua.wetgenes.chipmunk.shape.bounding_box /lua.wetgenes.chipmunk.shape.collision_type /lua.wetgenes.chipmunk.shape.elasticity /lua.wetgenes.chipmunk.shape.filter /lua.wetgenes.chipmunk.shape.friction /lua.wetgenes.chipmunk.shape.query_point /lua.wetgenes.chipmunk.shape.query_segment /lua.wetgenes.chipmunk.shape.radius /lua.wetgenes.chipmunk.shape.sensor /lua.wetgenes.chipmunk.shape.surface_velocity/lua.wetgenes.chipmunk.space /lua.wetgenes.chipmunk.space.add /lua.wetgenes.chipmunk.space.add_handler /lua.wetgenes.chipmunk.space.body /lua.wetgenes.chipmunk.space.collision_bias /lua.wetgenes.chipmunk.space.collision_persistence /lua.wetgenes.chipmunk.space.collision_slop /lua.wetgenes.chipmunk.space.constraint /lua.wetgenes.chipmunk.space.contains /lua.wetgenes.chipmunk.space.current_time_step /lua.wetgenes.chipmunk.space.damping /lua.wetgenes.chipmunk.space.gravity /lua.wetgenes.chipmunk.space.idle_speed_threshold /lua.wetgenes.chipmunk.space.iterations /lua.wetgenes.chipmunk.space.locked /lua.wetgenes.chipmunk.space.query_bounding_box /lua.wetgenes.chipmunk.space.query_point /lua.wetgenes.chipmunk.space.query_point_nearest /lua.wetgenes.chipmunk.space.query_segment /lua.wetgenes.chipmunk.space.query_segment_first /lua.wetgenes.chipmunk.space.query_shape /lua.wetgenes.chipmunk.space.reindex /lua.wetgenes.chipmunk.space.remove /lua.wetgenes.chipmunk.space.sleep_time_threshold /lua.wetgenes.chipmunk.space.step /lua.wetgenes.chipmunk.space.type/lua.wetgenes.csv /lua.wetgenes.csv.build /lua.wetgenes.csv.doesc /lua.wetgenes.csv.doquote /lua.wetgenes.csv.map /lua.wetgenes.csv.parse /lua.wetgenes.csv.unesc /lua.wetgenes.csv.unquote /lua.wetgenes.deepcompare /lua.wetgenes.deepcopy /lua.wetgenes.export/lua.wetgenes.gamecake /lua.wetgenes.gamecake.framebuffers /lua.wetgenes.gamecake.framebuffers.create /lua.wetgenes.gamecake.framebuffers.dirty/lua.wetgenes.gamecake.framebuffers.fbo /lua.wetgenes.gamecake.framebuffers.fbo.bind_depth /lua.wetgenes.gamecake.framebuffers.fbo.bind_depth_snapshot /lua.wetgenes.gamecake.framebuffers.fbo.bind_frame /lua.wetgenes.gamecake.framebuffers.fbo.bind_texture /lua.wetgenes.gamecake.framebuffers.fbo.bind_texture_snapshot /lua.wetgenes.gamecake.framebuffers.fbo.check /lua.wetgenes.gamecake.framebuffers.fbo.clean /lua.wetgenes.gamecake.framebuffers.fbo.download /lua.wetgenes.gamecake.framebuffers.fbo.free_depth /lua.wetgenes.gamecake.framebuffers.fbo.free_frame /lua.wetgenes.gamecake.framebuffers.fbo.free_snapshot /lua.wetgenes.gamecake.framebuffers.fbo.free_texture /lua.wetgenes.gamecake.framebuffers.fbo.mipmap /lua.wetgenes.gamecake.framebuffers.fbo.mipmap_depth /lua.wetgenes.gamecake.framebuffers.fbo.mipmap_texture /lua.wetgenes.gamecake.framebuffers.fbo.pingpong /lua.wetgenes.gamecake.framebuffers.fbo.render_start /lua.wetgenes.gamecake.framebuffers.fbo.render_stop /lua.wetgenes.gamecake.framebuffers.fbo.resize /lua.wetgenes.gamecake.framebuffers.fbo.snapshot /lua.wetgenes.gamecake.framebuffers.start /lua.wetgenes.gamecake.framebuffers.stop/lua.wetgenes.gamecake.fun /lua.wetgenes.gamecake.fun.bitsynth_task /lua.wetgenes.gamecake.fun.bitsynth_task.code /lua.wetgenes.gamecake.fun.bitsynth_task.render/lua.wetgenes.gamecake.fun.chatdown /lua.wetgenes.gamecake.fun.chatdown.chat /lua.wetgenes.gamecake.fun.chatdown.chat.get_tag /lua.wetgenes.gamecake.fun.chatdown.chat.replace_tags /lua.wetgenes.gamecake.fun.chatdown.chat.set_tag /lua.wetgenes.gamecake.fun.chatdown.chat.set_tags /lua.wetgenes.gamecake.fun.chatdown.chat.set_topic/lua.wetgenes.gamecake.fun.chatdown.chats /lua.wetgenes.gamecake.fun.chatdown.chats.changes /lua.wetgenes.gamecake.fun.chatdown.chats.get_subject /lua.wetgenes.gamecake.fun.chatdown.chats.get_tag /lua.wetgenes.gamecake.fun.chatdown.chats.replace_tags /lua.wetgenes.gamecake.fun.chatdown.chats.set_subject /lua.wetgenes.gamecake.fun.chatdown.chats.set_tag /lua.wetgenes.gamecake.fun.chatdown.dotnames /lua.wetgenes.gamecake.fun.chatdown.parse /lua.wetgenes.gamecake.fun.chatdown.setup /lua.wetgenes.gamecake.fun.chatdown.setup_chat /lua.wetgenes.gamecake.fun.chatdown.text/lua.wetgenes.gamecake.fun.yarn /lua.wetgenes.gamecake.fun.yarn.cells/lua.wetgenes.gamecake.fun.yarn.items /lua.wetgenes.gamecake.fun.yarn.items.cells /lua.wetgenes.gamecake.fun.yarn.items.create /lua.wetgenes.gamecake.fun.yarn.items.create_pages /lua.wetgenes.gamecake.fun.yarn.items.destroy /lua.wetgenes.gamecake.fun.yarn.items.find /lua.wetgenes.gamecake.fun.yarn.items.get_big /lua.wetgenes.gamecake.fun.yarn.items.insert /lua.wetgenes.gamecake.fun.yarn.items.iterate_dotnames /lua.wetgenes.gamecake.fun.yarn.items.iterate_parents /lua.wetgenes.gamecake.fun.yarn.items.metatable /lua.wetgenes.gamecake.fun.yarn.items.prefabs /lua.wetgenes.gamecake.fun.yarn.items.remove /lua.wetgenes.gamecake.fun.yarn.items.rules /lua.wetgenes.gamecake.fun.yarn.pages/lua.wetgenes.gamecake.fun.yarn.prefabs /lua.wetgenes.gamecake.fun.yarn.prefabs.set/lua.wetgenes.gamecake.fun.yarn.rules /lua.wetgenes.gamecake.fun.yarn.rules.apply /lua.wetgenes.gamecake.fun.yarn.rules.can /lua.wetgenes.gamecake.fun.yarn.rules.set/lua.wetgenes.gamecake.oven /lua.wetgenes.gamecake.oven.bake/lua.wetgenes.gamecake.toaster /lua.wetgenes.gamecake.toaster.bake /lua.wetgenes.gamecake.toaster.newticks/lua.wetgenes.gamecake.widgets /lua.wetgenes.gamecake.widgets.button /lua.wetgenes.gamecake.widgets.button.setup /lua.wetgenes.gamecake.widgets.button.update/lua.wetgenes.gamecake.widgets.center /lua.wetgenes.gamecake.widgets.center.layout /lua.wetgenes.gamecake.widgets.center.setup/lua.wetgenes.gamecake.widgets.checkbox /lua.wetgenes.gamecake.widgets.checkbox.class_hooks /lua.wetgenes.gamecake.widgets.checkbox.setup /lua.wetgenes.gamecake.widgets.checkbox.update/lua.wetgenes.gamecake.widgets.data /lua.wetgenes.gamecake.widgets.data.add_class_hook /lua.wetgenes.gamecake.widgets.data.call_hook /lua.wetgenes.gamecake.widgets.data.call_hook_later /lua.wetgenes.gamecake.widgets.data.data_dec /lua.wetgenes.gamecake.widgets.data.data_get_pos /lua.wetgenes.gamecake.widgets.data.data_get_size /lua.wetgenes.gamecake.widgets.data.data_inc /lua.wetgenes.gamecake.widgets.data.data_set /lua.wetgenes.gamecake.widgets.data.data_snap /lua.wetgenes.gamecake.widgets.data.data_tonumber /lua.wetgenes.gamecake.widgets.data.data_tonumber_from_list /lua.wetgenes.gamecake.widgets.data.data_tostring /lua.wetgenes.gamecake.widgets.data.data_tostring_from_list /lua.wetgenes.gamecake.widgets.data.data_value /lua.wetgenes.gamecake.widgets.data.data_wrap_dec /lua.wetgenes.gamecake.widgets.data.data_wrap_inc /lua.wetgenes.gamecake.widgets.data.del_class_hook /lua.wetgenes.gamecake.widgets.data.new_data/lua.wetgenes.gamecake.widgets.datas /lua.wetgenes.gamecake.widgets.datas.del /lua.wetgenes.gamecake.widgets.datas.get /lua.wetgenes.gamecake.widgets.datas.get_number /lua.wetgenes.gamecake.widgets.datas.get_string /lua.wetgenes.gamecake.widgets.datas.get_value /lua.wetgenes.gamecake.widgets.datas.new /lua.wetgenes.gamecake.widgets.datas.new_datas /lua.wetgenes.gamecake.widgets.datas.set /lua.wetgenes.gamecake.widgets.datas.set_infos /lua.wetgenes.gamecake.widgets.datas.set_string /lua.wetgenes.gamecake.widgets.datas.set_value/lua.wetgenes.gamecake.widgets.defs /lua.wetgenes.gamecake.widgets.defs.add /lua.wetgenes.gamecake.widgets.defs.add_border /lua.wetgenes.gamecake.widgets.defs.copy /lua.wetgenes.gamecake.widgets.defs.create /lua.wetgenes.gamecake.widgets.defs.reset /lua.wetgenes.gamecake.widgets.defs.set/lua.wetgenes.gamecake.widgets.dialogs /lua.wetgenes.gamecake.widgets.dialogs.hide_overlay /lua.wetgenes.gamecake.widgets.dialogs.setup /lua.wetgenes.gamecake.widgets.dialogs.show /lua.wetgenes.gamecake.widgets.dialogs.show_overlay/lua.wetgenes.gamecake.widgets.drag /lua.wetgenes.gamecake.widgets.drag.drag /lua.wetgenes.gamecake.widgets.drag.setup /lua.wetgenes.gamecake.widgets.drag.update/lua.wetgenes.gamecake.widgets.paragraph /lua.wetgenes.gamecake.widgets.paragraph.setup /lua.wetgenes.gamecake.widgets.setup/lua.wetgenes.gamecake.zone /lua.wetgenes.gamecake.zone.scene /lua.wetgenes.gamecake.zone.scene.add /lua.wetgenes.gamecake.zone.scene.call /lua.wetgenes.gamecake.zone.scene.caste /lua.wetgenes.gamecake.zone.scene.create_values /lua.wetgenes.gamecake.zone.scene.find_uid /lua.wetgenes.gamecake.zone.scene.forget_uid /lua.wetgenes.gamecake.zone.scene.generate_uid /lua.wetgenes.gamecake.zone.scene.remember_uid /lua.wetgenes.gamecake.zone.scene.remove /lua.wetgenes.gamecake.zone.scene.require /lua.wetgenes.gamecake.zone.scene.require_search /lua.wetgenes.gamecake.zone.scene.reset /lua.wetgenes.gamecake.zone.scene.sortby_update /lua.wetgenes.gamecake.zone.scene.status/lua.wetgenes.gamecake.zone.scene.systems /lua.wetgenes.gamecake.zone.scene.systems.call /lua.wetgenes.gamecake.zone.scene.systems.cocall /lua.wetgenes.gamecake.zone.scene.systems.insert /lua.wetgenes.gamecake.zone.scene.systems.remove /lua.wetgenes.gamecake.zone.scene.uids/lua.wetgenes.gamecake.zone.scene.values /lua.wetgenes.gamecake.zone.scene.values.get /lua.wetgenes.gamecake.zone.scene.values.manifest /lua.wetgenes.gamecake.zone.scene.values.merge /lua.wetgenes.gamecake.zone.scene.values.new /lua.wetgenes.gamecake.zone.scene.values.pull /lua.wetgenes.gamecake.zone.scene.values.push /lua.wetgenes.gamecake.zone.scene.values.set /lua.wetgenes.gamecake.zone.scene.values.tween /lua.wetgenes.gamecake.zone.scene.values.twrap /lua.wetgenes.gamecake.zone.scene.values.unpush /lua.wetgenes.gamecake.zone.scene.values_call/lua.wetgenes.gamecake.zone.system /lua.wetgenes.gamecake.zone.system.items/lua.wetgenes.grd /lua.wetgenes.grd.adjust_contrast /lua.wetgenes.grd.adjust_hsv /lua.wetgenes.grd.adjust_rgb /lua.wetgenes.grd.attr_redux /lua.wetgenes.grd.blit /lua.wetgenes.grd.clear /lua.wetgenes.grd.clip /lua.wetgenes.grd.convert /lua.wetgenes.grd.copy_data /lua.wetgenes.grd.copy_data_layer /lua.wetgenes.grd.create /lua.wetgenes.grd.create_convert /lua.wetgenes.grd.create_normal /lua.wetgenes.grd.destroy /lua.wetgenes.grd.duplicate /lua.wetgenes.grd.fillmask /lua.wetgenes.grd.flipx /lua.wetgenes.grd.flipy /lua.wetgenes.grd.info /lua.wetgenes.grd.load /lua.wetgenes.grd.load_data /lua.wetgenes.grd.load_file /lua.wetgenes.grd.paint /lua.wetgenes.grd.palette /lua.wetgenes.grd.pixels /lua.wetgenes.grd.quant /lua.wetgenes.grd.remap /lua.wetgenes.grd.reset /lua.wetgenes.grd.resize /lua.wetgenes.grd.save /lua.wetgenes.grd.scale /lua.wetgenes.grd.shrink /lua.wetgenes.grd.slide /lua.wetgenes.grd.sort_cmap /lua.wetgenes.grd.stream /lua.wetgenes.grd.xor /lua.wetgenes.grdcanvas/lua.wetgenes.grdhistory /lua.wetgenes.grdhistory.history /lua.wetgenes.grdlayers /lua.wetgenes.grdpaint/lua.wetgenes.grdsvg /lua.wetgenes.grdsvg.string/lua.wetgenes.json /lua.wetgenes.json.decode /lua.wetgenes.json.encode/lua.wetgenes.json_diff /lua.wetgenes.json_diff.apply /lua.wetgenes.json_diff.array_common /lua.wetgenes.json_diff.array_match /lua.wetgenes.json_diff.array_trim /lua.wetgenes.json_diff.diff /lua.wetgenes.json_diff.dupe /lua.wetgenes.json_diff.equal /lua.wetgenes.json_diff.similar /lua.wetgenes.json_diff.undo/lua.wetgenes.json_pack /lua.wetgenes.json_pack.from_data /lua.wetgenes.json_pack.into_data /lua.wetgenes.lookup/lua.wetgenes.midi /lua.wetgenes.midi.clients /lua.wetgenes.midi.create /lua.wetgenes.midi.destroy /lua.wetgenes.midi.event_to_string /lua.wetgenes.midi.get /lua.wetgenes.midi.peek /lua.wetgenes.midi.port_create /lua.wetgenes.midi.port_destroy /lua.wetgenes.midi.pull /lua.wetgenes.midi.push /lua.wetgenes.midi.set /lua.wetgenes.midi.string_to_clientport /lua.wetgenes.midi.subscribe /lua.wetgenes.midi.unsubscribe/lua.wetgenes.package /lua.wetgenes.package.reload/lua.wetgenes.path /lua.wetgenes.path.create_dirs /lua.wetgenes.path.currentdir /lua.wetgenes.path.dir /lua.wetgenes.path.dir_exists /lua.wetgenes.path.ext /lua.wetgenes.path.file /lua.wetgenes.path.file_exists /lua.wetgenes.path.folder /lua.wetgenes.path.join /lua.wetgenes.path.name /lua.wetgenes.path.normalize /lua.wetgenes.path.parent /lua.wetgenes.path.parse /lua.wetgenes.path.relative /lua.wetgenes.path.relative_cd /lua.wetgenes.path.resolve /lua.wetgenes.path.root /lua.wetgenes.path.setup /lua.wetgenes.path.split /lua.wetgenes.path.unslash/lua.wetgenes.plate /lua.wetgenes.plate.replace_lookup /lua.wetgenes.plate.replace_lookup_istable /lua.wetgenes.plate.table_lookup /lua.wetgenes.rnd64k /lua.wetgenes.safecall /lua.wetgenes.safewrap /lua.wetgenes.set_env /lua.wetgenes.snippets/lua.wetgenes.spew /lua.wetgenes.spew.connect /lua.wetgenes.spew.test /lua.wetgenes.syncs/lua.wetgenes.tardis /lua.wetgenes.tardis.array /lua.wetgenes.tardis.array.__add /lua.wetgenes.tardis.array.__div /lua.wetgenes.tardis.array.__eq /lua.wetgenes.tardis.array.__mul /lua.wetgenes.tardis.array.__sub /lua.wetgenes.tardis.array.__tostring /lua.wetgenes.tardis.array.__unm /lua.wetgenes.tardis.array.abs /lua.wetgenes.tardis.array.acos /lua.wetgenes.tardis.array.add /lua.wetgenes.tardis.array.alloc /lua.wetgenes.tardis.array.aset /lua.wetgenes.tardis.array.asin /lua.wetgenes.tardis.array.atan /lua.wetgenes.tardis.array.ceil /lua.wetgenes.tardis.array.compare /lua.wetgenes.tardis.array.cos /lua.wetgenes.tardis.array.exp /lua.wetgenes.tardis.array.floor /lua.wetgenes.tardis.array.fract /lua.wetgenes.tardis.array.log /lua.wetgenes.tardis.array.max /lua.wetgenes.tardis.array.min /lua.wetgenes.tardis.array.mix /lua.wetgenes.tardis.array.new /lua.wetgenes.tardis.array.nset /lua.wetgenes.tardis.array.pow /lua.wetgenes.tardis.array.product /lua.wetgenes.tardis.array.quantize /lua.wetgenes.tardis.array.round /lua.wetgenes.tardis.array.scalar /lua.wetgenes.tardis.array.set /lua.wetgenes.tardis.array.setn /lua.wetgenes.tardis.array.sin /lua.wetgenes.tardis.array.sub /lua.wetgenes.tardis.array.tan /lua.wetgenes.tardis.array.trunc /lua.wetgenes.tardis.array.unpack /lua.wetgenes.tardis.array.zero /lua.wetgenes.tardis.class/lua.wetgenes.tardis.line /lua.wetgenes.tardis.line.new/lua.wetgenes.tardis.m2 /lua.wetgenes.tardis.m2.adjugate /lua.wetgenes.tardis.m2.alloc /lua.wetgenes.tardis.m2.cofactor /lua.wetgenes.tardis.m2.determinant /lua.wetgenes.tardis.m2.identity /lua.wetgenes.tardis.m2.inverse /lua.wetgenes.tardis.m2.minor_xy /lua.wetgenes.tardis.m2.new /lua.wetgenes.tardis.m2.nset /lua.wetgenes.tardis.m2.scale /lua.wetgenes.tardis.m2.transpose/lua.wetgenes.tardis.m3 /lua.wetgenes.tardis.m3.adjugate /lua.wetgenes.tardis.m3.alloc /lua.wetgenes.tardis.m3.cofactor /lua.wetgenes.tardis.m3.determinant /lua.wetgenes.tardis.m3.identity /lua.wetgenes.tardis.m3.inverse /lua.wetgenes.tardis.m3.m4 /lua.wetgenes.tardis.m3.minor_xy /lua.wetgenes.tardis.m3.new /lua.wetgenes.tardis.m3.nset /lua.wetgenes.tardis.m3.scale /lua.wetgenes.tardis.m3.transpose /lua.wetgenes.tardis.m3.v3/lua.wetgenes.tardis.m4 /lua.wetgenes.tardis.m4.add /lua.wetgenes.tardis.m4.adjugate /lua.wetgenes.tardis.m4.alloc /lua.wetgenes.tardis.m4.arotate /lua.wetgenes.tardis.m4.cofactor /lua.wetgenes.tardis.m4.determinant /lua.wetgenes.tardis.m4.get_rotation_q4 /lua.wetgenes.tardis.m4.get_scale_v3 /lua.wetgenes.tardis.m4.get_translation_v3 /lua.wetgenes.tardis.m4.identity /lua.wetgenes.tardis.m4.inverse /lua.wetgenes.tardis.m4.m3 /lua.wetgenes.tardis.m4.minor_xy /lua.wetgenes.tardis.m4.mix /lua.wetgenes.tardis.m4.new /lua.wetgenes.tardis.m4.nset /lua.wetgenes.tardis.m4.prearotate /lua.wetgenes.tardis.m4.preqrotate /lua.wetgenes.tardis.m4.prerotate /lua.wetgenes.tardis.m4.prerrotate /lua.wetgenes.tardis.m4.prescale /lua.wetgenes.tardis.m4.pretranslate /lua.wetgenes.tardis.m4.pretranslate_v3 /lua.wetgenes.tardis.m4.qrotate /lua.wetgenes.tardis.m4.rotate /lua.wetgenes.tardis.m4.rrotate /lua.wetgenes.tardis.m4.scale /lua.wetgenes.tardis.m4.scale_v3 /lua.wetgenes.tardis.m4.setrot /lua.wetgenes.tardis.m4.setrrot /lua.wetgenes.tardis.m4.sub /lua.wetgenes.tardis.m4.translate /lua.wetgenes.tardis.m4.translate_v3 /lua.wetgenes.tardis.m4.transpose /lua.wetgenes.tardis.m4.v3 /lua.wetgenes.tardis.m4_stack/lua.wetgenes.tardis.plane /lua.wetgenes.tardis.plane.new/lua.wetgenes.tardis.q4 /lua.wetgenes.tardis.q4.alloc /lua.wetgenes.tardis.q4.get_yaw_pitch_roll /lua.wetgenes.tardis.q4.get_yaw_pitch_roll_in_radians /lua.wetgenes.tardis.q4.identity /lua.wetgenes.tardis.q4.mix /lua.wetgenes.tardis.q4.new /lua.wetgenes.tardis.q4.prerotate /lua.wetgenes.tardis.q4.prerrotate /lua.wetgenes.tardis.q4.reverse /lua.wetgenes.tardis.q4.rotate /lua.wetgenes.tardis.q4.rrotate /lua.wetgenes.tardis.q4.set /lua.wetgenes.tardis.q4.set_yaw_pitch_roll /lua.wetgenes.tardis.q4.set_yaw_pitch_roll_in_radians /lua.wetgenes.tardis.q4.setrot /lua.wetgenes.tardis.q4.setrrot /lua.wetgenes.tardis.smoothstep /lua.wetgenes.tardis.step /lua.wetgenes.tardis.type/lua.wetgenes.tardis.v1 /lua.wetgenes.tardis.v1.add /lua.wetgenes.tardis.v1.cross /lua.wetgenes.tardis.v1.distance /lua.wetgenes.tardis.v1.dot /lua.wetgenes.tardis.v1.identity /lua.wetgenes.tardis.v1.len /lua.wetgenes.tardis.v1.lenlen /lua.wetgenes.tardis.v1.mul /lua.wetgenes.tardis.v1.new /lua.wetgenes.tardis.v1.normalize /lua.wetgenes.tardis.v1.nset /lua.wetgenes.tardis.v1.oo /lua.wetgenes.tardis.v1.scale /lua.wetgenes.tardis.v1.sub/lua.wetgenes.tardis.v2 /lua.wetgenes.tardis.v2.add /lua.wetgenes.tardis.v2.alloc /lua.wetgenes.tardis.v2.cross /lua.wetgenes.tardis.v2.distance /lua.wetgenes.tardis.v2.dot /lua.wetgenes.tardis.v2.identity /lua.wetgenes.tardis.v2.len /lua.wetgenes.tardis.v2.lenlen /lua.wetgenes.tardis.v2.mul /lua.wetgenes.tardis.v2.new /lua.wetgenes.tardis.v2.normalize /lua.wetgenes.tardis.v2.nset /lua.wetgenes.tardis.v2.oo /lua.wetgenes.tardis.v2.scale /lua.wetgenes.tardis.v2.sub/lua.wetgenes.tardis.v3 /lua.wetgenes.tardis.v3.add /lua.wetgenes.tardis.v3.alloc /lua.wetgenes.tardis.v3.angle /lua.wetgenes.tardis.v3.cross /lua.wetgenes.tardis.v3.distance /lua.wetgenes.tardis.v3.dot /lua.wetgenes.tardis.v3.identity /lua.wetgenes.tardis.v3.len /lua.wetgenes.tardis.v3.lenlen /lua.wetgenes.tardis.v3.mul /lua.wetgenes.tardis.v3.new /lua.wetgenes.tardis.v3.normalize /lua.wetgenes.tardis.v3.nset /lua.wetgenes.tardis.v3.oo /lua.wetgenes.tardis.v3.scale /lua.wetgenes.tardis.v3.sub/lua.wetgenes.tardis.v4 /lua.wetgenes.tardis.v4.add /lua.wetgenes.tardis.v4.alloc /lua.wetgenes.tardis.v4.distance /lua.wetgenes.tardis.v4.dot /lua.wetgenes.tardis.v4.identity /lua.wetgenes.tardis.v4.len /lua.wetgenes.tardis.v4.lenlen /lua.wetgenes.tardis.v4.mul /lua.wetgenes.tardis.v4.new /lua.wetgenes.tardis.v4.normalize /lua.wetgenes.tardis.v4.nset /lua.wetgenes.tardis.v4.oo /lua.wetgenes.tardis.v4.scale /lua.wetgenes.tardis.v4.sub /lua.wetgenes.tardis.v4.to_v3/lua.wetgenes.tasks /lua.wetgenes.tasks.add_global_thread /lua.wetgenes.tasks.add_id /lua.wetgenes.tasks.add_memo /lua.wetgenes.tasks.add_thread /lua.wetgenes.tasks.claim_global /lua.wetgenes.tasks.client /lua.wetgenes.tasks.client_code /lua.wetgenes.tasks.cocall /lua.wetgenes.tasks.create /lua.wetgenes.tasks.del_global_thread /lua.wetgenes.tasks.del_id /lua.wetgenes.tasks.del_memo /lua.wetgenes.tasks.del_thread /lua.wetgenes.tasks.delete /lua.wetgenes.tasks.do_memo /lua.wetgenes.tasks.eject_global /lua.wetgenes.tasks.fetch_name /lua.wetgenes.tasks.global_code /lua.wetgenes.tasks.http /lua.wetgenes.tasks.http_code /lua.wetgenes.tasks.linda_do_memo /lua.wetgenes.tasks.linda_memos /lua.wetgenes.tasks.memos /lua.wetgenes.tasks.receive /lua.wetgenes.tasks.send /lua.wetgenes.tasks.sqlite /lua.wetgenes.tasks.sqlite_code /lua.wetgenes.tasks.thread_code/lua.wetgenes.tasks_gist /lua.wetgenes.tasks_gist.list/lua.wetgenes.tasks_msgp /lua.wetgenes.tasks_msgp.addr_to_ip_port /lua.wetgenes.tasks_msgp.addr_to_list /lua.wetgenes.tasks_msgp.clean_name /lua.wetgenes.tasks_msgp.ip6_to_addr /lua.wetgenes.tasks_msgp.ipsniff /lua.wetgenes.tasks_msgp.list_to_addr /lua.wetgenes.tasks_msgp.msgp_code /lua.wetgenes.tasks_msgp.pack/lua.wetgenes.tsv /lua.wetgenes.tsv.close /lua.wetgenes.tsv.create /lua.wetgenes.tsv.flush /lua.wetgenes.tsv.load/lua.wetgenes.txt /lua.wetgenes.txt.diff /lua.wetgenes.txt.diff.find /lua.wetgenes.txt.diff.match /lua.wetgenes.txt.diff.split /lua.wetgenes.txt.diff.trim /lua.wetgenes.txt.edit /lua.wetgenes.txt.lex /lua.wetgenes.txt.lex_js /lua.wetgenes.txt.lex_lua /lua.wetgenes.txt.undo/lua.wetgenes.txt.utf /lua.wetgenes.txt.utf.char /lua.wetgenes.txt.utf.charpattern /lua.wetgenes.txt.utf.chars /lua.wetgenes.txt.utf.length /lua.wetgenes.txt.utf.map_latin0_to_unicode /lua.wetgenes.txt.utf.map_unicode_to_latin0 /lua.wetgenes.txt.utf.size /lua.wetgenes.txt.utf.string/lua.wetgenes.txt.words /lua.wetgenes.txt.words.load /lua.wetgenes.txt.words.transform /prefabs /rules /setup /setup_menu /update

lua.box3d

local box3d=require("box3d")

We use box3d as the local name of this library.

A lua binding to the box3d physics library see https://box3d.org/ for more documentation on how box3d works.

lua.box3d.body.aabb

xa,ya,xb,yb = body:aabb()

Get body aabb as stream of numbers, lower bounds first then upper.

Note this value has to be calculated.

lua.box3d.body.acceleration

body:acceleration()
body:acceleration(x,y)
body:acceleration(x,y,r)
body:acceleration(nil,nil,r)

set body acceleration, which is to say we set the body force multiplied by mass or rotational inertia. Note that this will not work on a 0 mass body, I think you have to fake a mass on a body with no shapes first.

x,y is acceleration per second applied to center mass, will be cleared if nil

r is rotational acceleration per second in radians , will be cleared if nil

This will replace force and acceleration and as force is applied then cleared during a step, this needs to be set for every step.

lua.box3d.body.awake

b = body:awake()
b = body:awake(b)

get/set body sleeping state.

lua.box3d.body.convert

x,y = body:convert(x,y,conversion)

conversion must be one of the following strings indicating how the input x,y should be transformed into the output x,y

x,y = body:convert(x,y,"point_local_to_world")
x,y = body:convert(x,y,"point_world_to_local")

x,y = body:convert(x,y,"vector_local_to_world")
x,y = body:convert(x,y,"vector_world_to_local")

x,y = body:convert(x,y,"point_local_to_velocity")
x,y = body:convert(x,y,"point_world_to_velocity")

convert x,y between various spaces.

lua.box3d.body.destroy

body:destroy()

Destroy the body and all sub objects (shapes)

lua.box3d.body.force

body:force()
body:force(x,y)
body:force(x,y,r)
body:force(nil,nil,r)

set body force , note that this does not return the current force and calling it without any values will clear the current force.

x,y is force applied to center mass, will be cleared if nil

r is torque , will be cleared if nil

This will replace force and acceleration and as force is applied then cleared during a step, this needs to be set for every step.

lua.box3d.body.get

vars = body:get()

Get all body variables in a table.

lua.box3d.body.info

info = body:info()

This returns the def table used to create the body along with as much updated information as we have available, mostly intended as a debugging aid.

This is the actual def table (some values are hard to query later) so if you edit it or if you create this object using a non unique def table things can get strange.

lua.box3d.body.mass

mass , rotationalInertia , x,y = body:mass( mass , rotationalInertia , x,y )
mass = ( body:mass(mass) )

get/set mass values, all values are optional but x,y must be a pair. Unset values will remain unchanged.

x,y is center of mass

We return 4 values but as the first one is mass you can simply ignore the rest by wrapping the function in ()

Since adding shapes will auto generate these values, be aware that you will be fighting auto mass generation when setting this value.

Adding shapes or changing the body type will auto generate these values.

lua.box3d.body.set

body:set(vars)

Set all body variables from a table.

lua.box3d.body.transform

x,y,r = body:transform()
x,y,r = body:transform(x,y,r)

get/set body transform

lua.box3d.body.type

btype = body:type()
btype = body:type(btype)

get/set body type. btype is a string, Possible values are

static
kinematic
dynamic

lua.box3d.body.velocity

x,y,r = body:velocity()
x,y,r = body:velocity(x,y,r)

get/set body velocity

lua.box3d.get

vars = box3d.get()

Get all box3d variables in a table. Returned table keys are.

lengthUnitsPerMeter

see box3d.set for more information.

lua.box3d.info

info = box3d.info()

Get all box3d information in a table. Returned table keys are.

version

A table containing 3 values

byteCount

Internal memory use.

This also includes everything returned by box3d.get

lua.box3d.joint.destroy

joint:destroy()

Destroy the joint and all sub objects (none)

lua.box3d.joint.get

vars = joint:get()

Get all joint variables in a table.

lua.box3d.joint.info

info = joint:info()

This returns the def table used to create the joint along with as much updated information as we have available, mostly intended as a debugging aid.

This is the actual def table (some values are hard to query later) so if you edit it or if you create this object using a non unique def table things can get strange.

lua.box3d.joint.set

joint:set(vars)

Set all joint variables from a table.

lua.box3d.set

box3d.set(vars)

Set all box3d variables from a table. Possible table keys are.

LengthUnitsPerMeter

Units per meter, should be set first before creating a world.

Defaults to 1.

Obviously points and vectors should be divided by units to get their value in meters but slightly less obviously density values end up getting multiplied by units squared since they are area related.

What that means is if you are thinking in meters eg you want to set gravity to 10m/s you will need to multiply it by units. Density which would normally be 1 should be 1/(units^2) in order to keep the results close to defaults.

Note that Box2d recommends not changing this, be we cool, yeah?

lua.box3d.shape.aabb

xa,ya,xb,yb = shape:aabb()

Get shapes aabb as stream of numbers, lower bounds first then upper.

lua.box3d.shape.convert

x,y = shape:convert(x,y,conversion)

conversion must be one of the following strings indicating how the input x,y should be transformed into the output x,y

x,y = shape:convert(x,y,"closest")

convert x,y point in world space into x,y closest point on shape.

lua.box3d.shape.destroy

shape:destroy()

Destroy the shape and all sub objects (none)

lua.box3d.shape.get

vars = shape:get()

Get all shape variables in a table.

lua.box3d.shape.info

info = shape:info()

This returns the def table used to create the shape along with as much updated information as we have available, mostly intended as a debugging aid.

This is the actual def table (some values are hard to query later) so if you edit it or if you create this object using a non unique def table things can get strange.

lua.box3d.shape.set

shape:set(vars)

Set all shape variables from a table.

lua.box3d.world

world=box3d.world(def)

Create the world you will be simulating physics in.

def contains the values that you can set in a b3WorldDef and must be a unique table as it will be retained.

All of these are optional so can be nil.

Vectors are a table containing { x , y } values. This may also be a fake table created by lua meta.

Booleans should be true or false

gravity
restitutionThreshold
hitEventThreshold
contactHertz
contactDampingRatio
contactSpeed
maximumLinearSpeed
enableSleep
enableContinuous
enableContactSoftening

lua.box3d.world.bits

bits=world:bits(name)
bits=world:bits(name,{mask=0xfffffffffffff,bits=0x0000000000001,group=0})
bits=world:bits(name,false)

get/set named bits, to help with keeping all your bitmasks in one place so you don't get yourself confuzzled.

bits is must be a table containing mask, bits and group then instead of setting these numbers explicitly we can use this name in shape creation or casting, anywhere a filter is expected.

This helper code adds the following logic to shape creation etc

if filter is set then get bits using world:bits(filter) then
filter_categoryBits    will be set from    bits.bits	if nil
filter_maskBits        will be set from    bits.mask	if nil
filter_groupIndex      will be set from    bits.group	if nil

You probably do not want to create default values for these values using world:defaults as these will not be replace by this helper.

Pass in false to unset the named bits.

If bits does not exist then we will return the default values of {mask=0xfffffffffffff,bits=0x0000000000001,group=0} which can be modified by setting the bits named "default" to whatever you want.

Since this default is always available you can use filter="default" in shape creation to use these default values.

Note that 0xfffffffffffff (13 hex digits) is an integer that fits safely in a double and you should not use any more bits.

lua.box3d.world.body

body=world:body(def)

Create a body in the world.

def contains the values that you can set in a b3BodyDef and must be a unique table as it will be retained.

All of these are optional so can be nil.

Vectors are a table containing values in the integer indexes. This may also be a fake table created by lua meta.

Values with _ are sub structs eg motionLocks_linearX is motionLocks.linearX

Booleans should be true or false

name is a string that should be 31 chars or less and is only used to help with debugging.

type is a string and must be "static" or "kinematic" or "dynamic"

allowFastRotation
angularDamping
angularVelocity
enableSleep
motionLocks_linearX
motionLocks_linearY
motionLocks_angularZ
gravityScale
isAwake
isBullet
isEnabled
linearDamping
linearVelocity
name
position
rotation
sleepThreshold
type

lua.box3d.world.body.shape

shape=body:shape(def)

Create a shape in the body.

def contains the values that you can set in a b3ShapeDef and must be a unique table as it will be retained.

All of these are optional so can be nil.

Vectors are a table containing { x , y } values. This may also be a fake table created by lua meta.

Booleans should be true or false

Minor safety issue regarding filter bitmasks since lua(jit) uses doubles these bit masks should only use 52 bits not 64 so the integers can fit safely into a double. When using hex the top 3 nibbles should always be 0 like so 0x000fffffffffffff that is 13 Fs if you are counting.

density
enableContactEvents
enableHitEvents
enablePreSolveEvents
enableSensorEvents
filter
invokeContactCreation
isSensor
material_customColor
material_friction
material_restitution
material_rollingResistance
material_tangentSpeed
material_userMaterialId
updateBodyMass

if def.shape=="circle" then def also contains the values that you can set in a b3Circle

center
radius

if def.shape=="segment" then def also contains the values that you can set in a b3Segment

point1
point2

if def.shape=="capsule" then def also contains the values that you can set in a b3Capsule

center1
center2
radius

if def.shape=="box" then def also contains the values that you can set in a b3Polygon using b3MakeOffsetRoundedBox

halfWidth
halfHeight
center
rotation
radius

lua.box3d.world.body_events

events = world:body_events()
events = world:body_events(events)

get body events generated by the last step

lua.box3d.world.cast

hits = world:cast(ray)

if ray.points is set then this is a polygon shape cast, otherwise this is an ray cast.

cast a ray and return an array of hits

ray.points

Tightly packed array of points for the shape. Maximum number of points is B3_MAX_POLYGON_VERTICES (8) To cast a circle shape, just use a radius and a single point at the origin.

ray.radius

Radius of the shape to cast, does not work unless you also set points.

ray.origin

Starting world point of ray

ray.translation

The ray to cast

ray.filter_categoryBits
ray.filter_maskBits
ray.filter

Filter masks, ray.filter is a previously set name that we will convert using world:bits(name) into filter_categoryBits and filter_maskBits unless they are already set.

hit=hits[1]
hit=hits[2]
etc

Returned hits which are sorted by fraction from low to high.

Initial overlaps are returned with a fraction of 0 and normal of 0. If you want the first actual hit you should ignore these and get the first hit with a non zero normal.

If hits[1] is nil then there where no hits.

hit.shapeID

BoxID of the shape we hit.

hit.shape

Table of the shape we hit. Filled in from shapeID for your convenience, if somehow (?) shapeID is invalid then this will be nil. Shapes have a uid that you can use to map shapes to game objects.

hit.fraction

0-1 value, indicating how far from the origin the ray traveled.

hit.point

Table containing world coordinates of the hit point.

hit.normal

Table containing shape normal at the hit point.

hits.leafVisits
hits.nodeVisits

Contain extra debug information

lua.box3d.world.contact_events

events = world:contact_events()
events = world:contact_events(events)

get contact events generated by the last step

lua.box3d.world.defaults

cache=world:defaults(name)
cache=world:defaults(name,def)

Remember default values in the world cache, this is intended for generic body/shape/joint creation.

Returns the current def cache for the name.

The def table will be copied ( top level only ) into a cache of the given values adding or replacing them.

if def table is nil then the current cached values will be cleared.

For example to cache a constant density value ( because you changed the global units per meters )

world:defaults("shape",{density=1/256})

When shapes are created they will automatically use the "shape" cache to fill in missing values. Same for "body" and "joint" caches.

You can also use this to fill in special object defaults like so.

world:defaults("shape_bouncy",{material_restitution=1})
...
body:shape(world:fill({...},"shape_bouncy"))

lua.box3d.world.destroy

world:destroy()

Destroy the world and all sub objects ( body , joint , shape )

lua.box3d.world.fill

def=world:fill(def,name)

Set previously cached default values under name into the def table unless a value already exists. This is intended to be used in body/shape/joint creation as a way of applying generic settings for each.

def may be nil in which case a new table is created and returned,

If we do not have any cached values for name then def will not be altered.

This is automatically called to fill in body/shape/joint values that have previously been cached with the generic name "body"."shape","joint" when creating a new body/shape/joint

You may call it explicitly for slightly less generic defaults, eg

body:shape( world:fill({...},"shape_special") )

Note that when creating objects def should always be a new table as it will be kept within the new object and returned by the info function.

lua.box3d.world.fills

def=world:fills(def,...)

Same as fill except multiple names may be given and each applied from left to right. So the left most values will have precedence and missing values will be filled in as we travel left to right.

lua.box3d.world.get

vars = world:get()

Get all world variables into a table.

lua.box3d.world.info

info = world:info()

This returns the def table used to create the world along with as much updated information as we have available, mostly intended as a debugging aid.

This is the actual def table (some values are hard to query later) so if you edit it or if you create this object using a non unique def table things can get strange.

lua.box3d.world.joint

joint=world:joint(def)

Create a joint in the world.

def contains the values that you can set in a b3jointDef and must be a unique table as it will be retained.

All of these are optional so can be nil.

Vectors are a table containing { x , y } values. This may also be a fake table created by lua meta.

Booleans should be true or false

localFrameA/B is a transform which is a vector plus a rotation in radians, so { x , y , r }

The boxid of a body ( for bodyIdA and bodyIdB ) can be found in body.boxid

bodyIdA
bodyIdB
localFrameA
localFrameB
forceThreshold
torqueThreshold
constraintHertz
constraintDampingRatio
collideConnected

if def.joint=="distance" then def also contains the values that you can set in a b3DistanceJointDef

length
enableSpring
lowerSpringForce
upperSpringForce
hertz
dampingRatio
enableLimit
minLength
maxLength
enableMotor
maxMotorForce
motorSpeed

if def.joint=="motor" then def also contains the values that you can set in a b3MotorJointDef

linearVelocity
maxVelocityForce
angularVelocity
maxVelocityTorque
linearHertz
linearDampingRatio
maxSpringForce
angularHertz
angularDampingRatio
maxSpringTorque

if def.joint=="filter" then def also contains the values that you can set in a b3FilterJointDef

-- no extra values just those found in b3jointDef

if def.joint=="prismatic" then def also contains the values that you can set in a b3PrismaticJointDef

enableSpring
hertz
dampingRatio
targetTranslation
enableLimit
lowerTranslation
upperTranslation
enableMotor
maxMotorForce
motorSpeed

if def.joint=="revolute" then def also contains the values that you can set in a b3RevoluteJointDef

targetAngle
enableSpring
hertz
dampingRatio
enableLimit
lowerAngle
upperAngle
enableMotor
maxMotorTorque
motorSpeed

if def.joint=="weld" then def also contains the values that you can set in a b3WeldJointDef

linearHertz
angularHertz
linearDampingRatio
angularDampingRatio

if def.joint=="wheel" then def also contains the values that you can set in a b3WheelJointDef

enableSpring
hertz
dampingRatio
enableLimit
lowerTranslation
upperTranslation
enableMotor
maxMotorTorque
motorSpeed

lua.box3d.world.overlap

overlaps = world:overlap(shape)

if shape.points is set then this is a polygon shape overlap, otherwise this is an aabb overlap.

Get all shapes overlapping aabb or shape , I believe this might return some shapes that do not actually overlap the given box so should probably double check.

shape.points

Tightly packed array of points for the shape. Maximum number of points is B3_MAX_POLYGON_VERTICES (8) To cast a circle shape, just use a radius and a single point at the origin.

shape.radius

Radius of the shape to cast, does not work with aabb.

shape.lowerBound
shape.upperBound

Lower and upper aabb vectors ( will be added to origin ) this is ignored if shape.points is set.

shape.origin

Origin vector of shape

shape.filter_categoryBits
shape.filter_maskBits

Filter masks

overlaps.shapeIds

An array of shapeIds

overlaps.shapes

An array of shapes

overlaps.leafVisits
overlaps.nodeVisits

Extra debug information

lua.box3d.world.prepare_events

events = world:prepare_events()
events = world:prepare_events(events)

Prepare a table to be filled with all events.

events.uids

Lookup table by uid of events by body.uid or shape.uid A single event may appear multiple times but it will be the same table.

events.all

A list of all events regardless of a uid being set.

events:insert(event,ita,itb)

Helper function to place an event in uids and all. ita and itb may be nil or a shape or a body. We look for ita.uid and itb.uid to fill the uids map.

events.contact_cache

cache of contacts for multiple calls to events.contact to reuse

events:contact(id)

Get contact information from a contact id, we cache results in events.contact_cache so multiple calls will return the same table so is safe to call multiple times with the same id.

A contact is a large chunk of possibly unwanted data so has to be explicitly requested later using the contactId provided by contact events.

May possibly be nil if an invalid contact ID, eg this is old data and you called world:step again and created new contacts.

for event in events:iterate(uid) do ... end

A simple iterator function for the events associated with the given uid, or all events if uid is nil.

lua.box3d.world.sensor_events

events = world:sensor_events()
events = world:sensor_events(events)

get sensor events generated by the last step

lua.box3d.world.set

world:set(vars)

Set all world variables from a table.

lua.box3d.world.step

world:step(seconds,steps)

Advance the world "seconds" through time using "steps" number of discreet sub steps.

Generally the simulation expects (1/seconds)*steps to be 240 ish. So 240 substeps per second. 1/60 and 4 are the defaults.