/ /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.glslang /lua.glslang.lint_gles2 /lua.glslang.parse_chunks /lua.glslang.pp /lua.glslang.replace_include /lua.glslang.yank_shader_versions/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.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.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.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.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.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.new /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.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.currentdir /lua.wetgenes.path.dir /lua.wetgenes.path.ext /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.resolve /lua.wetgenes.path.root /lua.wetgenes.path.setup /lua.wetgenes.path.split/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.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.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.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.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.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.scale /lua.wetgenes.tardis.m2.transpose/lua.wetgenes.tardis.m3 /lua.wetgenes.tardis.m3.adjugate /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.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.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.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.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.normalize /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.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.oo /lua.wetgenes.tardis.v2.scale /lua.wetgenes.tardis.v2.sub/lua.wetgenes.tardis.v3 /lua.wetgenes.tardis.v3.add /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.oo /lua.wetgenes.tardis.v3.scale /lua.wetgenes.tardis.v3.sub/lua.wetgenes.tardis.v4 /lua.wetgenes.tardis.v4.add /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.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_task /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.create_colinda /lua.wetgenes.tasks.del_global_thread /lua.wetgenes.tasks.del_id /lua.wetgenes.tasks.del_memo /lua.wetgenes.tasks.del_task /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.receive /lua.wetgenes.tasks.run_task /lua.wetgenes.tasks.send /lua.wetgenes.tasks.sqlite /lua.wetgenes.tasks.sqlite_code /lua.wetgenes.tasks.thread_code /lua.wetgenes.tasks.update/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.wetgenes.tardis

Time And Relative Dimensions In Space is of course the perfect name for a library of matrix based math functions.

local tardis=require("wetgenes.tardis")

This tardis is a lua library for manipulating time and space with numbers. Designed to work as pure lua but with a faster, but less accurate, f32 core by default. ( this core seems to be slightly faster/same speed as vanilla lua but slower than luajit , so is currently disabled )

Recoil in terror as we use two glyph names for classes whilst typing in random strings of numbers and operators that may or may not contain tyops.

v# vector [#]
m# matrix [#][#]
q4 quaternion

Each class is a table of # values [1] to [#] the 2d number streams are formatted the same as opengl (row-major) and metatables are used to provide methods.

The easy way of remembering the opengl 4x4 matrix layout is that the translate x,y,z values sit at 13,14,15 and 4,8,12,16 is normally set to the constant 0,0,0,1 for most transforms.

     | 1  5  9  13 |
     | 2  6  10 14 |
m4 = | 3  7  11 15 |
     | 4  8  12 16 |

This seems to be the simplest (programmer orientated) description of most of the maths used here so go read it if you want to know what the funny words mean.

http://www.j3d.org/matrix_faq/matrfaq_latest.html

lua.wetgenes.tardis.array

Array is the base class for all other tardis classes, it is just a stream of numbers, probably in a table but possibly a chunk of f32 values in a userdata.

lua.wetgenes.tardis.array.__add

r = array.__add(a,b)

Add a to b and return a a.new(result) so the class returned will match the input class of a and neither a or b will be modified.

lua.wetgenes.tardis.array.__div

r = array.__div(a,b)

Replace b with 1/b and then call the appropriate product function depending on the argument classes. Always creates and returns a.new() value.

lua.wetgenes.tardis.array.__eq

r = array.__eq(a,b)

meta to call a:compare(b) and return the result

lua.wetgenes.tardis.array.__mul

r = array.__mul(a,b)

Call the appropriate product function depending on the argument classes. Always creates and returns a.new() value.

lua.wetgenes.tardis.array.__sub

r = array.__sub(a,b)

Subtract b from a and return a a.new(result) so the class returned will match the input class of a and neither a or b will be modified.

lua.wetgenes.tardis.array.__tostring

string = array.__tostring(it)

Convert an array to a string this is called by the lua tostring() function,

lua.wetgenes.tardis.array.__unm

r = array.__unm(a)

Subtract b from 0 and return a a.new(result) so the class returned will match the input class of a but a will not be modified

lua.wetgenes.tardis.array.abs

r=it:abs(r)
r=it:abs(it.new())

Perform math.abs on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.acos

r=it:acos(r)
r=it:acos(it.new())

Perform math.acos on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.add

r=it:add(b,r)
r=it:add(b,it.new())

Add b to it. b may be a number or another array of the same size as this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.asin

r=it:asin(r)
r=it:asin(it.new())

Perform math.asin on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.atan

r=it:atan(r)
r=it:atan(it.new())

Perform math.atan on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.ceil

r=it:ceil(r)
r=it:ceil(it.new())

Perform math.ceil on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.compare

a=a:compare(b)
a=a:compare(1,2,3,4)

Are the numbers in b the same as the numbers in a, this function will return true if they are and false if they are not.

If the arrays are of different lengths then this will return false.

Numbers to test for can be given explicitly in the arguments and we follow the same one level of tables rule as we do with array.set so any class derived from array can be used.

lua.wetgenes.tardis.array.cos

r=it:cos(r)
r=it:cos(it.new())

Perform math.cos on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.exp

r=it:exp(r)
r=it:exp(it.new())

Perform math.exp on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.floor

r=it:floor(r)
r=it:floor(it.new())

Perform math.floor on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.fract

r=it:fract(r)
r=it:fract(it.new())

Return the fractional part of each value using math.modf.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.log

r=it:log(r)
r=it:log(it.new())

Perform math.log on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.max

r=it:max()

Return a single number value that is the maximum of all values in this array.

lua.wetgenes.tardis.array.min

r=it:min()

Return a single number value that is the minimum of all values in this array.

lua.wetgenes.tardis.array.mix

r=a:mix(b,s,r)

Mix values between a and b where a is returned if s=0 and b is returned if s=1

If r is provided then the result is written into r and returned otherwise a is modified and returned.

lua.wetgenes.tardis.array.pow

r=it:pow(p,r)
r=it:pow(p,it.new())

Perform math.pow(it,p) on all values of this array. p may be a number or another array of the same size as this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.product

ma = ma:product(mb)
ma = ma:product(mb,r)

Look at the type and call the appropriate product function, to produce

mb x ma

Note the right to left application and default returning of the leftmost term for chaining. This seems to make the most sense.

If r is provided then the result is written into r and returned otherwise ma is modified and returned.

lua.wetgenes.tardis.array.quantize

r=it:quantize(1/1024,r)
r=it:quantize(s,it.new())

Perform a trunc(v/s)*s on all values of this array. We recomended the use of a power of two, eg 1/1024 rather than 1/1000 if you wanted 3 decimal digits.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.round

r=it:round(r)
r=it:round(it.new())

Perform math.floor( v+0.5 ) on all values of this array. Which will round up or down to the nearest integer.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.scalar

r=a:scalar(s,r)

Multiply all value in array by number.

If r is provided then the result is written into r and returned otherwise a is modified and returned.

lua.wetgenes.tardis.array.set

a=a:set(1,2,3,4)
a=a:set({1,2,3,4})
a=a:set({1,2},{3,4})
a=a:set(function(i) return i end)

Assign some numbers to an array, all the above examples will assign 1,2,3,4 to the first four slots in the given array, as you can see we allow one level of tables. Any class that is based on this array class can be used instead of an explicit table. So we can use a v2 or v3 or m4 etc etc.

if more numbers are given than the size of the array then they will be ignored.

if less numbers are given than the size of the array then the last number will be repeated.

if no numbers are given then nothing will be done

if a function is given it will be called with the index and should return a number.

lua.wetgenes.tardis.array.sin

r=it:sin(r)
r=it:sin(it.new())

Perform math.sin on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.sub

r=it:sub(b,r)
r=it:sub(b,it.new())

Subtract b from it. b may be a number or another array of the same size as this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.tan

r=it:tan(r)
r=it:tan(it.new())

Perform math.tan on all values of this array.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.trunc

r=it:trunc(r)
r=it:trunc(it.new())

Perform math.floor on positive values and math ceil on negative values for all values of this array. So a trunication that will always error towards 0.

If r is provided then the result is written into r and returned otherwise it is modified and returned.

lua.wetgenes.tardis.array.unpack

a1,a2=v2:unpack()
a1,a2,a3=v3:unpack()
a1,a2,a3,a4=v4:unpack()

Return all values in this array. Note this should be used instead of the unpack function for future optimisation safety.

lua.wetgenes.tardis.class

metatable=tardis.class(name,class,...)

Create a new metatable for an object class, optionally inheriting from other previously declared classes.

lua.wetgenes.tardis.line

A 3d space line class.

[1]position , [2]normal

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.line.new

line = tardis.line.new(p,n)

Create a new line and optionally set it to the given values.

lua.wetgenes.tardis.m2

The metatable for a 2x2 matrix class, use the new function to actually create an object.

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.m2.adjugate

m2 = m2:adjugate()
m2 = m2:adjugate(r)

Adjugate this m2.

If r is provided then the result is written into r and returned otherwise m2 is modified and returned.

lua.wetgenes.tardis.m2.cofactor

m2 = m2:cofactor()
m2 = m2:cofactor(r)

Cofactor this m2.

If r is provided then the result is written into r and returned otherwise m2 is modified and returned.

lua.wetgenes.tardis.m2.determinant

value = m2:determinant()

Return the determinant value of this m2.

lua.wetgenes.tardis.m2.inverse

m2 = m2:inverse()
m2 = m2:inverse(r)

Inverse this m2.

If r is provided then the result is written into r and returned otherwise m2 is modified and returned.

lua.wetgenes.tardis.m2.new

m2 = tardis.m2.new()

Create a new m2 and optionally set it to the given values, m2 methods usually return the input m2 for easy function chaining.

lua.wetgenes.tardis.m2.scale

m2 = m2:scale(s)
m2 = m2:scale(s,r)

Scale this m2 by s.

If r is provided then the result is written into r and returned otherwise m2 is modified and returned.

lua.wetgenes.tardis.m2.transpose

m2 = m2:transpose()
m2 = m2:transpose(r)

Transpose this m2.

If r is provided then the result is written into r and returned otherwise m2 is modified and returned.

lua.wetgenes.tardis.m3

The metatable for a 3x3 matrix class, use the new function to actually create an object.

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.m3.adjugate

m3 = m3:adjugate()
m3 = m3:adjugate(r)

Adjugate this m3.

If r is provided then the result is written into r and returned otherwise m3 is modified and returned.

lua.wetgenes.tardis.m3.cofactor

m3 = m3:cofactor()
m3 = m3:cofactor(r)

Cofactor this m3.

If r is provided then the result is written into r and returned otherwise m3 is modified and returned.

lua.wetgenes.tardis.m3.determinant

value = m3:determinant()

Return the determinant value of this m3.

lua.wetgenes.tardis.m3.inverse

m3 = m3:inverse()
m3 = m3:inverse(r)

Inverse this m3.

If r is provided then the result is written into r and returned otherwise m3 is modified and returned.

lua.wetgenes.tardis.m3.new

m3 = tardis.m3.new()

Create a new m3 and optionally set it to the given values, m3 methods usually return the input m3 for easy function chaining.

lua.wetgenes.tardis.m3.scale

m3 = m3:scale(s)
m3 = m3:scale(s,r)

Scale this m3 by s.

If r is provided then the result is written into r and returned otherwise m3 is modified and returned.

lua.wetgenes.tardis.m3.transpose

m3 = m3:transpose()
m3 = m3:transpose(r)

Transpose this m3.

If r is provided then the result is written into r and returned otherwise m3 is modified and returned.

lua.wetgenes.tardis.m3.v3

v3 = m3:v3(n)

Extract and return a "useful" v3 from an m3 matrix. The first vector is the x axis, then y axis , then z axis.

lua.wetgenes.tardis.m4

The metatable for a 4x4 matrix class, use the new function to actually create an object.

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.m4.add

m4 = m4:add(m4b)
m4 = m4:add(m4b,r)

Add m4b this m4.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.adjugate

m4 = m4:adjugate()
m4 = m4:adjugate(r)

Adjugate this m4.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.arotate

m4 = m4:arotate(degrees,v3a)
m4 = m4:arotate(degrees,v3a,r)

Apply a rotation in degres around the given axis to this matrix.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.cofactor

m4 = m4:cofactor()
m4 = m4:cofactor(r)

Cofactor this m4.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.determinant

value = m4:determinant()

Return the determinant value of this m4.

lua.wetgenes.tardis.m4.get_rotation_q4

q4 = m4:get_rotation_q4(r)

Get quaternion rotation from a scale/rot/trans matrix. Note that scale is assumed to be uniform which it usually is. If that is not the case then remove the scale first.

If r is provided then the result is written into r and returned otherwise a new q4 is created and returned.

lua.wetgenes.tardis.m4.get_scale_v3

v3 = m4:get_scale_v3(r)

Get v3 scale from a scale/rot/trans matrix

If r is provided then the result is written into r and returned otherwise a new v3 is created and returned.

lua.wetgenes.tardis.m4.get_translation_v3

v3 = m4:get_translation_v3(r)

Get v3 translation from a scale/rot/trans matrix

If r is provided then the result is written into r and returned otherwise a new v3 is created and returned.

lua.wetgenes.tardis.m4.inverse

m4 = m4:inverse()
m4 = m4:inverse(r)

Inverse this m4.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.m3

m4 = m4:m3()

Grab tthe top,left parts of the m4 matrix as an m3 matrix.

lua.wetgenes.tardis.m4.mix

m4 = m4:mix(m4b,s)
m4 = m4:mix(m4b,s,r)

Lerp from m4 to m4b by s.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.new

m4 = tardis.m4.new()

Create a new m4 and optionally set it to the given values, m4 methods usually return the input m4 for easy function chaining.

lua.wetgenes.tardis.m4.prearotate

m4 = m4:prearotate(degrees,v3a)
m4 = m4:prearotate(degrees,v3a,r)

Pre apply a rotation in degrees around the given axis to this matrix.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.preqrotate

m4 = m4:preqrotate(q)
m4 = m4:preqrotate(q,r)

Pre apply a quaternion rotation to this matrix.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.prerotate

m4 = m4:prerotate(degrees,v3a)
m4 = m4:prerotate(degrees,v3a,r)
m4 = m4:prerotate(degrees,x,y,z)
m4 = m4:prerotate(degrees,x,y,z,r)
m4 = m4:prerotate(q)
m4 = m4:prerotate(q,r)

Pre apply quaternion or angle rotation to this matrix depending on arguments provided.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.prerrotate

m4 = m4:prerrotate(radians,v3a)
m4 = m4:prerrotate(radians,v3a,r)

Pre apply a rotation in radians around the given axis to this matrix.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.prescale

m4 = m4:scale(s)
m4 = m4:scale(s,r)
m4 = m4:scale(x,y,z)
m4 = m4:scale(x,y,z,r)
m4 = m4:scale(v3)
m4 = m4:scale(v3,r)

Pre Scale this m4 by {s,s,s} or {x,y,z} or v3.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.pretranslate

m4 = m4:pretranslate(x,y,z)
m4 = m4:pretranslate(x,y,z,r)
m4 = m4:pretranslate(v3a)
m4 = m4:pretranslate(v3a,r)

Translate this m4 along its global axis by {x,y,z} or v3a.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.pretranslate_v3

m4 = m4:pretranslate_v3(v3a)
m4 = m4:pretranslate_v3(v3a,r)

Translate this m4 along its global axis by v3a.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.qrotate

m4 = m4:qrotate(q)
m4 = m4:qrotate(q,r)

Apply a quaternion rotation to this matrix.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.rotate

m4 = m4:rotate(degrees,v3a)
m4 = m4:rotate(degrees,v3a,r)
m4 = m4:rotate(degrees,x,y,z)
m4 = m4:rotate(degrees,x,y,z,r)
m4 = m4:rotate(q)
m4 = m4:rotate(q,r)

Apply quaternion or angle rotation to this matrix depending on arguments provided.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.rrotate

m4 = m4:rrotate(radians,v3a)
m4 = m4:rrotate(radians,v3a,r)

Apply a rotation in radians around the given axis to this matrix.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.scale

m4 = m4:scale(s)
m4 = m4:scale(s,r)
m4 = m4:scale(x,y,z)
m4 = m4:scale(x,y,z,r)
m4 = m4:scale(v3)
m4 = m4:scale(v3,r)

Scale this m4 by {s,s,s} or {x,y,z} or v3.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.scale_v3

m4 = m4:scale_v3(v3)
m4 = m4:scale_v3(v3,r)

Scale this m4 by {x,y,z} or v3.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.setrot

m4 = m4:setrot(degrees,v3a)

Set this matrix to a rotation matrix around the given normal by the given degrees.

we will automatically normalise v3a if necessary.

lua.wetgenes.tardis.m4.setrrot

m4 = m4:setrrot(radians,v3a)

Set this matrix to a rotation matrix around the given normal by the given radians.

we will automatically normalise v3a if necessary.

lua.wetgenes.tardis.m4.sub

m4 = m4:sub(m4b)
m4 = m4:sub(m4b,r)

Subtract m4b this m4.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.translate

m4 = m4:translate(x,y,z)
m4 = m4:translate(x,y,z,r)
m4 = m4:translate(v3a)
m4 = m4:translate(v3a,r)

Translate this m4 along its local axis by {x,y,z} or v3a.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.translate_v3

m4 = m4:translate_v3(v3a)
m4 = m4:translate_v3(v3a,r)

Translate this m4 along its local axis by v3a.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.transpose

m4 = m4:transpose()
m4 = m4:transpose(r)

Transpose this m4.

If r is provided then the result is written into r and returned otherwise m4 is modified and returned.

lua.wetgenes.tardis.m4.v3

v3 = m4:v3(n)

Extract and return a "useful" v3 from an m4 matrix. The first vector is the x axis, then y axis , then z axis and finally transform.

If n is not given or not a known value then we return the 4th vector which is the "opengl" transform as that is the most useful v3 part of an m4.

lua.wetgenes.tardis.m4_stack

stack = tardis.m4_stack()

create an m4 stack that is very similar to an old school opengl transform stack.

lua.wetgenes.tardis.plane

A 3d space plane class.

[1]position , [2]normal

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.plane.new

plane = tardis.plane.new(p,n)

Create a new plane and optionally set it to the given values.

lua.wetgenes.tardis.q4

The metatable for a quaternion class, use the new function to actually create an object.

We also inherit all the functions from tardis.v4

lua.wetgenes.tardis.q4.get_yaw_pitch_roll

v3 = q4:get_yaw_pitch_roll()

Get a yaw,pitch,roll degree rotation from this quaternion

If r is provided then the result is written into r and returned otherwise a new v3 is created and returned.

lua.wetgenes.tardis.q4.get_yaw_pitch_roll_in_radians

v3 = q4:get_yaw_pitch_roll_in_radians()

Get a yaw,pitch,roll degree rotation from this quaternion

If r is provided then the result is written into r and returned otherwise a new v3 is created and returned.

lua.wetgenes.tardis.q4.mix

q4 = q4:mix(q4b,s)
q4 = q4:mix(q4b,s,r)

Lerp from q4 to q4b by s.

If r is provided then the result is written into r and returned otherwise q4 is modified and returned.

lua.wetgenes.tardis.q4.new

q4 = tardis.q4.new()

Create a new q4 and optionally set it to the given values, q4 methods usually return the input q4 for easy function chaining.

lua.wetgenes.tardis.q4.prerotate

q4 = q4:prerotate(degrees,v3a)
q4 = q4:prerotate(degrees,v3a,r)

Pre apply a degree rotation to this quaternion.

If r is provided then the result is written into r and returned otherwise q4 is modified and returned.

lua.wetgenes.tardis.q4.prerrotate

q4 = q4:prerrotate(radians,v3a)
q4 = q4:prerrotate(radians,v3a,r)

Pre apply a radian rotation to this quaternion.

If r is provided then the result is written into r and returned otherwise q4 is modified and returned.

lua.wetgenes.tardis.q4.reverse

q4 = q4:reverse()
q4 = q4:reverse(r)

Reverse the rotation of this quaternion.

If r is provided then the result is written into r and returned otherwise q4 is modified and returned.

lua.wetgenes.tardis.q4.rotate

q4 = q4:rotate(degrees,v3a)
q4 = q4:rotate(degrees,v3a,r)

Apply a degree rotation to this quaternion.

If r is provided then the result is written into r and returned otherwise q4 is modified and returned.

lua.wetgenes.tardis.q4.rrotate

q4 = q4:rrotate(radians,v3a)
q4 = q4:rrotate(radians,v3a,r)

Apply a radian rotation to this quaternion.

If r is provided then the result is written into r and returned otherwise q4 is modified and returned.

lua.wetgenes.tardis.q4.set

q4 = tardis.q4.set(q4,{0,0,0,1})
q4 = tardis.q4.set(q4,0,0,0,1)
q4 = tardis.q4.set(q4,{"xyz",0,90,0})
q4 = tardis.q4.set(q4,"xyz",0,90,0)
q4 = tardis.q4.set(q4,"xyz",{0,90,0})

If the first item in the stream is not a string then this is just a normal array.set style.

If first parameter of the stream is a string then initialise the quaternion using a simple axis rotation notation Where the string is a list of axis. This string is lower case letters. x y or z and then the following numbers are amount of rotation to apply around that axis in degrees. You should provide as many numbers as letters.

Essentially this gives you a way of initialising quaternion rotations in an easily readable way.

lua.wetgenes.tardis.q4.set_yaw_pitch_roll

q4 = q4:set_yaw_pitch_roll(v3)
q4 = q4:set_yaw_pitch_roll({90,60,30})	-- 30yaw 60pitch 90roll

Set a V3(roll,pitch,yaw) degree rotation into this quaternion

yaw   v[3] is rotation about the z axis and is applied first
pitch v[2] is rotation about the y axis and is applied second
roll  v[1] is rotation about the z axis and is applied last

lua.wetgenes.tardis.q4.set_yaw_pitch_roll_in_radians

q4 = q4:set_yaw_pitch_roll_in_radians(v)

Set a V3(roll,pitch,yaw) radian rotation into this quaternion

yaw   v[3] is rotation about the z axis and is applied first
pitch v[2] is rotation about the y axis and is applied second
roll  v[1] is rotation about the z axis and is applied last

lua.wetgenes.tardis.q4.setrot

q4 = q4:setrot(degrees,v3a)

Set this quaternion to a rotation around the given normal by the given degrees.

lua.wetgenes.tardis.q4.setrrot

q4 = q4:setrrot(radians,v3a)

Set this quaternion to a rotation around the given normal by the given radians.

lua.wetgenes.tardis.smoothstep

f = tardis.step(edge1,edge2,num)

return 0 if num is bellow or equal to edge1. Return 1 if num is the same or higher as edge2 and smoothly interpolate between 0 and 1 for all other values.

lua.wetgenes.tardis.step

i = tardis.step(edge,num)

return 0 if num is bellow edge or 1 if num is the same or higher

lua.wetgenes.tardis.type

name=tardis.type(object)

This will return the type of an object previously registered with class

lua.wetgenes.tardis.v1

The metatable for a 2d vector class, use the new function to actually create an object.

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.v1.add

v1 = v1:add(v1b)
v1 = v1:add(v1b,r)

Add v1b to v1.

If r is provided then the result is written into r and returned otherwise v1 is modified and returned.

lua.wetgenes.tardis.v1.cross

value = v1:cross(v1b)

Extend to 3d then only return z value as x and y are always 0

lua.wetgenes.tardis.v1.distance

value = a:distance(b)

Returns the length of the vector between a and b.

lua.wetgenes.tardis.v1.dot

value = v1:dot(v1b)

Return the dot product of these two vectors.

lua.wetgenes.tardis.v1.lenlen

value = v1:lenlen()

Returns the length of this vector, squared, this is often all you need for comparisons so lets us skip the sqrt.

lua.wetgenes.tardis.v1.mul

v1 = v1:mul(v1b)
v1 = v1:mul(v1b,r)

Multiply v1 by v1b.

If r is provided then the result is written into r and returned otherwise v1 is modified and returned.

lua.wetgenes.tardis.v1.normalize

v1 = v1:normalize()
v1 = v1:normalize(r)

Adjust the length of this vector to 1.

An input length of 0 will remain at 0.

If r is provided then the result is written into r and returned otherwise v1 is modified and returned.

lua.wetgenes.tardis.v1.oo

v1 = v1:oo()
v1 = v1:oo(r)

One Over value. Build the reciprocal of all elements.

If r is provided then the result is written into r and returned otherwise v1 is modified and returned.

lua.wetgenes.tardis.v1.scale

v1 = v1:scale(s)
v1 = v1:scale(s,r)

Scale this v1 by s.

If r is provided then the result is written into r and returned otherwise v1 is modified and returned.

lua.wetgenes.tardis.v1.sub

v1 = v1:sub(v1b)
v1 = v1:sub(v1b,r)

Subtract v1b from v1.

If r is provided then the result is written into r and returned otherwise v1 is modified and returned.

lua.wetgenes.tardis.v2

The metatable for a 2d vector class, use the new function to actually create an object.

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.v2.add

v2 = v2:add(v2b)
v2 = v2:add(v2b,r)

Add v2b to v2.

If r is provided then the result is written into r and returned otherwise v2 is modified and returned.

lua.wetgenes.tardis.v2.cross

value = v2:cross(v2b)

Extend to 3d then only return z value as x and y are always 0

lua.wetgenes.tardis.v2.distance

value = a:distance(b)

Returns the length of the vector between a and b.

lua.wetgenes.tardis.v2.dot

value = v2:dot(v2b)

Return the dot product of these two vectors.

lua.wetgenes.tardis.v2.lenlen

value = v2:lenlen()

Returns the length of this vector, squared, this is often all you need for comparisons so lets us skip the sqrt.

lua.wetgenes.tardis.v2.mul

v2 = v2:mul(v2b)
v2 = v2:mul(v2b,r)

Multiply v2 by v2b.

If r is provided then the result is written into r and returned otherwise v2 is modified and returned.

lua.wetgenes.tardis.v2.new

v2 = tardis.v2.new()

Create a new v2 and optionally set it to the given values, v2 methods usually return the input v2 for easy function chaining.

lua.wetgenes.tardis.v2.normalize

v2 = v2:normalize()
v2 = v2:normalize(r)

Adjust the length of this vector to 1.

An input length of 0 will remain at 0.

If r is provided then the result is written into r and returned otherwise v2 is modified and returned.

lua.wetgenes.tardis.v2.oo

v2 = v2:oo()
v2 = v2:oo(r)

One Over value. Build the reciprocal of all elements.

If r is provided then the result is written into r and returned otherwise v2 is modified and returned.

lua.wetgenes.tardis.v2.scale

v2 = v2:scale(s)
v2 = v2:scale(s,r)

Scale this v2 by s.

If r is provided then the result is written into r and returned otherwise v2 is modified and returned.

lua.wetgenes.tardis.v2.sub

v2 = v2:sub(v2b)
v2 = v2:sub(v2b,r)

Subtract v2b from v2.

If r is provided then the result is written into r and returned otherwise v2 is modified and returned.

lua.wetgenes.tardis.v3

The metatable for a 3d vector class, use the new function to actually create an object.

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.v3.add

v3 = v3:add(v3b)
v3 = v3:add(v3b,r)

Add v3b to v3.

If r is provided then the result is written into r and returned otherwise v3 is modified and returned.

lua.wetgenes.tardis.v3.angle

radians,axis = v3a:angle(v3b)
radians,axis = v3a:angle(v3b,axis)

Return radians and axis of rotation between these two vectors. If axis is given then it must represent a positive world aligned axis normal. So V3(1,0,0) or V3(0,1,0) or V3(0,0,1) only. The point of providing an axis allows the returned angle to be over a 360 degree range rather than flipping the axis after 180 degrees this means the second axis returned value can be ignored as it will always be the axis that is passed in.

lua.wetgenes.tardis.v3.cross

v3 = v3:cross(v3b)
v3 = v3:cross(v3b,r)

Return the cross product of these two vectors.

If r is provided then the result is written into r and returned otherwise v3 is modified and returned.

lua.wetgenes.tardis.v3.distance

value = a:distance(b)

Returns the length of the vector between a and b.

lua.wetgenes.tardis.v3.dot

value = v3:dot(v3b)

Return the dot product of these two vectors.

lua.wetgenes.tardis.v3.lenlen

value = v3:lenlen()

Returns the length of this vector, squared, this is often all you need for comparisons so lets us skip the sqrt.

lua.wetgenes.tardis.v3.mul

v3 = v3:mul(v3b)
v3 = v3:mul(v3b,r)

Multiply v3 by v3b.

If r is provided then the result is written into r and returned otherwise v3 is modified and returned.

lua.wetgenes.tardis.v3.new

v3 = tardis.v3.new()

Create a new v3 and optionally set it to the given values, v3 methods usually return the input v3 for easy function chaining.

lua.wetgenes.tardis.v3.normalize

v3 = v3:normalize()
v3 = v3:normalize(r)

Adjust the length of this vector to 1.

An input length of 0 will remain at 0.

If r is provided then the result is written into r and returned otherwise v3 is modified and returned.

lua.wetgenes.tardis.v3.oo

v3 = v3:oo()
v3 = v3:oo(r)

One Over value. Build the reciprocal of all elements.

If r is provided then the result is written into r and returned otherwise v3 is modified and returned.

lua.wetgenes.tardis.v3.scale

v3 = v3:scale(s)
v3 = v3:scale(s,r)

Scale this v3 by s.

If r is provided then the result is written into r and returned otherwise v3 is modified and returned.

lua.wetgenes.tardis.v3.sub

v3 = v3:sub(v3b)
v3 = v3:sub(v3b,r)

Subtract v3b from v3.

If r is provided then the result is written into r and returned otherwise v3 is modified and returned.

lua.wetgenes.tardis.v4

The metatable for a 4d vector class, use the new function to actually create an object.

We also inherit all the functions from tardis.array

lua.wetgenes.tardis.v4.add

v4 = v4:add(v4b)
v4 = v4:add(v4b,r)

Add v4b to v4.

If r is provided then the result is written into r and returned otherwise v4 is modified and returned.

lua.wetgenes.tardis.v4.distance

value = a:distance(b)

Returns the length of the vector between a and b.

lua.wetgenes.tardis.v4.dot

value = v4:dot(v4b)

Return the dot product of these two vectors.

lua.wetgenes.tardis.v4.lenlen

value = v4:lenlen()

Returns the length of this vector, squared, this is often all you need for comparisons so lets us skip the sqrt.

lua.wetgenes.tardis.v4.mul

v4 = v4:mul(v4b)
v4 = v4:mul(v4b,r)

Multiply v4 by v4b.

If r is provided then the result is written into r and returned otherwise v4 is modified and returned.

lua.wetgenes.tardis.v4.new

v4 = tardis.v4.new()

Create a new v4 and optionally set it to the given values, v4 methods usually return the input v4 for easy function chaining.

lua.wetgenes.tardis.v4.normalize

v4 = v4:normalize()
v4 = v4:normalize(r)

Adjust the length of this vector to 1.

An input length of 0 will remain at 0.

If r is provided then the result is written into r and returned otherwise v4 is modified and returned.

lua.wetgenes.tardis.v4.oo

v4 = v4:oo()
v4 = v4:oo(r)

One Over value. Build the reciprocal of all elements.

If r is provided then the result is written into r and returned otherwise v4 is modified and returned.

lua.wetgenes.tardis.v4.scale

v4 = v4:scale(s)
v4 = v4:scale(s,r)

Scale this v4 by s.

If r is provided then the result is written into r and returned otherwise v4 is modified and returned.

lua.wetgenes.tardis.v4.sub

v4 = v4:sub(v4b)
v4 = v4:sub(v4b,r)

Subtract v4b from v4.

If r is provided then the result is written into r and returned otherwise v4 is modified and returned.

lua.wetgenes.tardis.v4.to_v3

v3 = v4:to_v3()
v3 = v4:to_v3(r)

scale [4] to 1 then throw it away so we have a v3 xyz

If r is provided then the result is written into r and returned otherwise a new v3 is created and returned.