From 7dfe0beb265d6ad1a5d27256f219dcc85c698ff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Clet?= Date: Sat, 4 Jul 2026 00:34:30 +0200 Subject: [PATCH] cleaning patchers --- help/tc.controller_demo.maxhelp | 8954 +++++++++-------------------- init/tc.jit.anim.control_init.txt | 4 +- patchers/gamepad.drive.maxpat | 1037 ++++ 3 files changed, 3806 insertions(+), 6189 deletions(-) create mode 100644 patchers/gamepad.drive.maxpat diff --git a/help/tc.controller_demo.maxhelp b/help/tc.controller_demo.maxhelp index 849a2cd..58b7b52 100644 --- a/help/tc.controller_demo.maxhelp +++ b/help/tc.controller_demo.maxhelp @@ -1,6187 +1,2769 @@ { - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 34.0, 100.0, 1444.0, 848.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "bubble" : 1, - "id" : "obj-35", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 808.0, 284.0, 222.0, 24.0 ], - "text" : "Which object to control in view space" - } - - } -, { - "box" : { - "id" : "obj-33", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 53.0, 505.0, 72.0, 22.0 ], - "text" : "prepend set" - } - - } -, { - "box" : { - "color" : [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], - "id" : "obj-32", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 704.0, 341.0, 47.0, 22.0 ], - "text" : "s to_v8" - } - - } -, { - "box" : { - "id" : "obj-31", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 704.0, 313.0, 61.0, 22.0 ], - "text" : "control $2" - } - - } -, { - "box" : { - "id" : "obj-26", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 59.0, 119.0, 1000.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "id" : "obj-14", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 139.0, 257.0, 32.0, 22.0 ], - "text" : "gate" - } - - } -, { - "box" : { - "id" : "obj-13", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 249.0, 218.0, 22.0, 22.0 ], - "text" : "t 1" - } - - } -, { - "box" : { - "id" : "obj-12", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 184.0, 217.0, 22.0, 22.0 ], - "text" : "t 0" - } - - } -, { - "box" : { - "id" : "obj-11", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 152.0, 148.0, 51.0, 22.0 ], - "text" : "t l l" - } - - } -, { - "box" : { - "id" : "obj-10", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 184.0, 186.0, 310.0, 22.0 ], - "text" : "zl.sect jit.gl.skybox jit.gl.sketch jit.gl.camera jit.anim.node" - } - - } -, { - "box" : { - "bubble" : 1, - "id" : "obj-9", - "linecount" : 4, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 499.0, 165.0, 200.0, 64.0 ], - "text" : "For the purpose of a seamless experience, filtering out objects we don't want to control in this patch, even if you could!" - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 139.0, 300.0, 96.0, 22.0 ], - "text" : "prepend append" - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 40.0, 148.0, 35.0, 22.0 ], - "text" : "clear" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-3", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 40.0, 351.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-2", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 3, - "outlettype" : [ "", "", "" ], - "patching_rect" : [ 40.0, 103.0, 131.0, 22.0 ], - "text" : "route controllable done" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 40.0, 58.0, 77.0, 22.0 ], - "text" : "r controllable" - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-12", 0 ], - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 0 ], - "source" : [ "obj-10", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-10", 0 ], - "source" : [ "obj-11", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 1 ], - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-12", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-13", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-14", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 0 ], - "source" : [ "obj-2", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-6", 0 ] - } - - } - ], - "originid" : "pat-128" - } -, - "patching_rect" : [ 674.0, 252.0, 133.0, 22.0 ], - "text" : "p controllable_populate" - } - - } -, { - "box" : { - "id" : "obj-25", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 129.0, 505.0, 79.0, 22.0 ], - "text" : "s controllable" - } - - } -, { - "box" : { - "id" : "obj-24", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 524.5, 139.0, 84.0, 20.0 ], - "text" : "keyboard type" - } - - } -, { - "box" : { - "id" : "obj-10", - "items" : [ "azerty", ",", "qwerty", ",", "qwertz", ",", "qzerty", ",", "qwerty_v2", ",", "azerty_v2" ], - "maxclass" : "umenu", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "int", "", "" ], - "parameter_enable" : 0, - "patching_rect" : [ 445.5, 138.0, 77.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-5", - "linecount" : 28, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 445.5, 655.0, 568.0, 382.0 ], - "text" : "HOW TO USE IN YOUR OWN PATCH\n\n0. Add [v8 tc.controller] and, depending on the controls you want, [p mouse_keyboard_controls] and/or [p gamepad_controls] and their surrounding to your patch. You can also create your own input method as it relies on simple 'move X 0 Z' and 'turn X Y 0' messages\n\n1. Make sure there is a jit.anim.node attached to the camera(s) you're going to use. This step will probably not be necessary anymore in a near future.\n\n2. To v8, send 'camera' followed by the name of your jit.gl.camera or a jit.anid.node attached to it. Will serve as the basis for moving objects in view space. This is necessary to control any object.\n\n3. Send 'controllable' to get a list of all controllable jit.gl objects in your patch.\n \n4. Send 'control_camera' followed by the the name of your jit.gl.camera or a jit.anid.node attached to it to control the camera. If flymode is disabled, the camera will remain on the same elevation (Y world pos) unless using the elevation controls. If flymode is enabled, the camera will go in the direction it faces and elevation controls will make it move up-down relatively to that direction. \n\n5. Send 'control' followed by the name of a jit.gl or jit.anim.node object to control it in view space. When using the name of a jit.gl object, its top-level user-created jit.anim.node will be used as entry point for the controls from v8. If there is no user-created jit.anim.node used by this object, its implicit internal jit.anim.node will be used as entry point. When using the name of a jit.anim.node directly, it will be the entry point for the controls comming from v8. If show_bounds is enabled and the target object is a bounds-compatible jit.gl object (or a jit.anim.node controlling bounds-compatible jit.gl objects), its bounds will be displayed\n\n6. Use the mouse+keyboard or gamepad to control the object or camera." - } - - } -, { - "box" : { - "color" : [ 1.0, 0.0, 0.0, 1.0 ], - "id" : "obj-71", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 0, - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 568.0, 271.0, 1000.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 59.0, 595.0, 61.0, 22.0 ], - "text" : "r reset_all" - } - - } -, { - "box" : { - "id" : "obj-11", - "linecount" : 2, - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 59.0, 625.0, 91.0, 35.0 ], - "text" : "anim_reset, position 0 0 0" - } - - } -, { - "box" : { - "id" : "obj-2", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 163.0, 514.0, 54.0, 22.0 ], - "text" : "deferlow" - } - - } -, { - "box" : { - "fontname" : "Arial", - "fontsize" : 13.0, - "id" : "obj-39", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 531.0, 638.0, 137.0, 23.0 ], - "text" : "read baluster-vase.gltf" - } - - } -, { - "box" : { - "fontname" : "Arial", - "fontsize" : 13.0, - "id" : "obj-42", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 330.0, 638.0, 189.0, 23.0 ], - "text" : "read pocillopora-damicornis.gltf" - } - - } -, { - "box" : { - "id" : "obj-37", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 483.0, 547.0, 70.0, 22.0 ], - "text" : "loadmess 2" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-33", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 576.0, 576.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-34", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 576.0, 603.0, 86.0, 22.0 ], - "text" : "metalness $1" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-35", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 483.0, 576.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-36", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 483.0, 603.0, 87.0, 22.0 ], - "text" : "roughness $1" - } - - } -, { - "box" : { - "id" : "obj-32", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "bang" ], - "patching_rect" : [ 163.0, 482.0, 58.0, 22.0 ], - "text" : "loadbang" - } - - } -, { - "box" : { - "id" : "obj-26", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 163.0, 603.0, 264.0, 22.0 ], - "text" : "substitute jit_gl_texture environment_texture" - } - - } -, { - "box" : { - "id" : "obj-27", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 163.0, 638.0, 145.0, 22.0 ], - "text" : "prepend sendmaterial 1" - } - - } -, { - "box" : { - "id" : "obj-20", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "jit_matrix", "" ], - "patching_rect" : [ 163.0, 671.0, 378.0, 22.0 ], - "text" : "jit.gl.model @file baluster-vase.gltf @material_mode 3 @name model" - } - - } -, { - "box" : { - "id" : "obj-16", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 249.0, 514.0, 100.0, 22.0 ], - "text" : "jit.gl.skybox" - } - - } -, { - "box" : { - "id" : "obj-29", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "jit_gl_texture", "" ], - "patching_rect" : [ 163.0, 547.0, 293.0, 22.0 ], - "text" : "jit.gl.environment @file umhlanga_sunrise_2k.exr" - } - - } -, { - "box" : { - "id" : "obj-9", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 103.0, 39.0, 275.0, 22.0 ], - "text" : "jit.anim.node @name cam_node @position 0 0 13" - } - - } -, { - "box" : { - "id" : "obj-79", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 210.0, 301.0, 265.0, 22.0 ], - "text" : "position 0 -2 0, rotatexyz -90 0 0, scale 10 10 10" - } - - } -, { - "box" : { - "id" : "obj-86", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "bang", "bang" ], - "patching_rect" : [ 27.0, 236.0, 32.0, 22.0 ], - "text" : "t b b" - } - - } -, { - "box" : { - "id" : "obj-85", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 27.0, 209.0, 61.0, 22.0 ], - "text" : "r reset_all" - } - - } -, { - "box" : { - "id" : "obj-172", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 119.0, 301.0, 84.0, 22.0 ], - "text" : "position -4 0 0" - } - - } -, { - "box" : { - "id" : "obj-170", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 27.0, 301.0, 80.0, 22.0 ], - "text" : "position 4 0 0" - } - - } -, { - "box" : { - "id" : "obj-142", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 27.0, 39.0, 61.0, 22.0 ], - "text" : "r reset_all" - } - - } -, { - "box" : { - "id" : "obj-83", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 40.0, 268.0, 68.0, 22.0 ], - "text" : "anim_reset" - } - - } -, { - "box" : { - "id" : "obj-143", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 440.0, 140.0, 559.0, 22.0 ], - "text" : "jit.gl.light @shadows 1 @shadowquality hi @direction 0.4 -0.8 -1. @shadowblur 0.1 @shadowrange 50." - } - - } -, { - "box" : { - "id" : "obj-30", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 27.0, 71.0, 153.0, 22.0 ], - "text" : "anim_reset, position 0 0 13" - } - - } -, { - "box" : { - "id" : "obj-10", - "maxclass" : "newobj", - "numinlets" : 8, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 210.0, 236.0, 117.0, 22.0 ], - "text" : "jit.gl.pbr @name pbr" - } - - } -, { - "box" : { - "id" : "obj-8", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "jit_matrix", "" ], - "patching_rect" : [ 27.0, 404.0, 613.0, 22.0 ], - "text" : "jit.gl.gridshape @name plane @shape plane @material pbr @position 0 -2 0 @rotatexyz -90 0 0 @scale 10 10 10" - } - - } -, { - "box" : { - "id" : "obj-7", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "jit_matrix", "" ], - "patching_rect" : [ 27.0, 368.0, 383.0, 22.0 ], - "text" : "jit.gl.plato @name plato @shape icosa @material pbr @position -4 0 0", - "varname" : "icosa" - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "jit_matrix", "" ], - "patching_rect" : [ 27.0, 332.0, 405.0, 22.0 ], - "text" : "jit.gl.gridshape @name torus @shape torus @material pbr @position 4 0 0", - "varname" : "torus" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "jit_gl_texture", "" ], - "patching_rect" : [ 27.0, 140.0, 238.0, 22.0 ], - "text" : "jit.gl.camera @name cam @position 0 0 13", - "varname" : "cam" - } - - } -, { - "box" : { - "attr" : "direction", - "id" : "obj-144", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 440.0, 109.0, 206.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "position", - "id" : "obj-80", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 27.0, 110.0, 275.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "shadowrange", - "id" : "obj-12", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 654.0, 109.0, 150.0, 22.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-20", 0 ], - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-143", 0 ], - "source" : [ "obj-12", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 0 ], - "source" : [ "obj-142", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-143", 0 ], - "source" : [ "obj-144", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "source" : [ "obj-170", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-7", 0 ], - "source" : [ "obj-172", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 0 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-27", 0 ], - "source" : [ "obj-26", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-20", 0 ], - "source" : [ "obj-27", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-26", 0 ], - "source" : [ "obj-29", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "source" : [ "obj-32", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-34", 0 ], - "source" : [ "obj-33", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-27", 0 ], - "source" : [ "obj-34", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-36", 0 ], - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-27", 0 ], - "source" : [ "obj-36", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 0 ], - "source" : [ "obj-37", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-20", 0 ], - "source" : [ "obj-39", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-20", 0 ], - "source" : [ "obj-42", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 0 ], - "source" : [ "obj-79", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "source" : [ "obj-80", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "order" : 2, - "source" : [ "obj-83", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-7", 0 ], - "order" : 1, - "source" : [ "obj-83", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 0 ], - "order" : 0, - "source" : [ "obj-83", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-86", 0 ], - "source" : [ "obj-85", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-170", 0 ], - "order" : 2, - "source" : [ "obj-86", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-172", 0 ], - "order" : 1, - "source" : [ "obj-86", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-79", 0 ], - "order" : 0, - "source" : [ "obj-86", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-83", 0 ], - "source" : [ "obj-86", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "source" : [ "obj-9", 0 ] - } - - } - ], - "originid" : "pat-130" - } -, - "patching_rect" : [ 35.5, 179.0, 47.0, 22.0 ], - "text" : "p world" - } - - } -, { - "box" : { - "id" : "obj-70", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 561.5, 105.0, 113.0, 20.0 ], - "text" : "keyboard sensitivity" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-68", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 509.5, 104.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-62", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 59.0, 119.0, 1000.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "id" : "obj-89", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "bang" ], - "patching_rect" : [ 44.0, 93.0, 48.0, 22.0 ], - "text" : "del 100" - } - - } -, { - "box" : { - "id" : "obj-110", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 44.0, 128.0, 44.0, 22.0 ], - "text" : "resync" - } - - } -, { - "box" : { - "id" : "obj-21", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 44.0, 60.0, 61.0, 22.0 ], - "text" : "r reset_all" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-59", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 44.0, 210.0, 30.0, 30.0 ], - "varname" : "u850021828" - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-59", 0 ], - "source" : [ "obj-110", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-89", 0 ], - "source" : [ "obj-21", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-110", 0 ], - "source" : [ "obj-89", 0 ] - } - - } - ], - "originid" : "pat-132" - } -, - "patching_rect" : [ 53.0, 429.0, 45.0, 22.0 ], - "text" : "p reset" - } - - } -, { - "box" : { - "id" : "obj-57", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "bang" ], - "patching_rect" : [ 132.5, 63.0, 58.0, 22.0 ], - "text" : "loadbang" - } - - } -, { - "box" : { - "id" : "obj-54", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 430.5, 30.0, 207.0, 20.0 ], - "text" : "Allow controlling rotation without click" - } - - } -, { - "box" : { - "id" : "obj-51", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 404.5, 28.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "id" : "obj-48", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 132.5, 91.0, 143.0, 22.0 ], - "text" : "sendwindow idlemouse 1" - } - - } -, { - "box" : { - "id" : "obj-56", - "items" : [ "jit.gl.gridshape", "torus", ",", "jit.gl.plato", "plato", ",", "jit.gl.gridshape", "plane", ",", "jit.gl.light", "u272005546", ",", "jit.gl.model", "model" ], - "maxclass" : "umenu", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "int", "", "" ], - "parameter_enable" : 0, - "patching_rect" : [ 622.0, 285.0, 184.0, 22.0 ] - } - - } -, { - "box" : { - "fontface" : 1, - "fontsize" : 14.0, - "id" : "obj-28", - "linecount" : 14, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 445.5, 400.0, 532.0, 225.0 ], - "text" : "Controls mouse+keyboard gamepad (xbox)\n\nControl Cam C Y\nControl Object (prev-next) O-P L-R DPad\nMove WASD (qwerty) / ZQSD (azerty) L stick\nTurn mouse+click in window R stick\nElevation Q-Z (querty) / A-W (azerty) L-R triggers\nFlymode F R stick click\nReset obj E B\nReset scene R Start\n\n\nNote: The lighting looks different whether you target the camera or an object, it seems to be a bug when using multiple jit.anim.node on a camera." - } - - } -, { - "box" : { - "bubble" : 1, - "bubbleside" : 0, - "id" : "obj-23", - "linecount" : 3, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 18.0, 564.0, 256.5, 66.0 ], - "text" : "'control' outputs the given object name to be controlled (jit.gl or jit.anim.node), followed by the actual one being controlled (jit.anim.node)" - } - - } -, { - "box" : { - "id" : "obj-14", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 187.0, 400.0, 54.0, 22.0 ], - "text" : "deferlow" - } - - } -, { - "box" : { - "color" : [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], - "id" : "obj-41", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 369.5, 203.0, 47.0, 22.0 ], - "text" : "s to_v8" - } - - } -, { - "box" : { - "dontreplace" : 1, - "id" : "obj-40", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 424.0, 203.0, 104.5, 22.0 ], - "text" : "turn -0. -0. -0." - } - - } -, { - "box" : { - "color" : [ 1.0, 0.611764705882353, 0.0, 1.0 ], - "id" : "obj-38", - "maxclass" : "newobj", - "numinlets" : 5, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 680.0, 164.0, 612.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "comment" : "", - "id" : "obj-6", - "index" : 2, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 909.0, 534.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 230.0, 53.0, 129.0, 22.0 ], - "text" : "prepend ui_dict_layout" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-2", - "index" : 4, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 230.0, 11.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-18", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 230.0, 217.0, 173.0, 22.0 ], - "text" : "vexpr $f1 * $f2 @scalarmode 1" - } - - } -, { - "box" : { - "id" : "obj-17", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 230.0, 280.0, 85.0, 22.0 ], - "text" : "prepend move" - } - - } -, { - "box" : { - "id" : "obj-16", - "linecount" : 4, - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 173.0, 117.0, 50.0, 62.0 ], - "text" : "anim_turn 0. 0. 0. 0.136" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-9", - "index" : 5, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 384.0, 164.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-7", - "index" : 2, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 85.5, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "bubble" : 1, - "bubbleside" : 0, - "id" : "obj-3", - "linecount" : 3, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 3.0, 307.0, 213.0, 66.0 ], - "text" : "Using custom turn method based on mouse output from jit.world instead of jit.anim.drive for smoother result" - } - - } -, { - "box" : { - "id" : "obj-38", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 834.0, 115.0, 19.0, 20.0 ], - "text" : "P" - } - - } -, { - "box" : { - "id" : "obj-39", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 811.0, 115.0, 19.0, 20.0 ], - "text" : "O" - } - - } -, { - "box" : { - "id" : "obj-40", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 790.0, 115.0, 19.0, 20.0 ], - "text" : "I" - } - - } -, { - "box" : { - "id" : "obj-34", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 604.0, 139.0, 50.0, 22.0 ], - "text" : "115" - } - - } -, { - "box" : { - "id" : "obj-111", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 667.0, 330.0, 139.0, 22.0 ], - "text" : "prepend control_camera" - } - - } -, { - "box" : { - "id" : "obj-105", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "bang", "bang" ], - "patching_rect" : [ 817.0, 203.0, 32.0, 22.0 ], - "text" : "t b b" - } - - } -, { - "box" : { - "id" : "obj-104", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 774.0, 242.0, 35.0, 22.0 ], - "text" : "reset" - } - - } -, { - "box" : { - "id" : "obj-82", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 817.0, 242.0, 63.0, 22.0 ], - "text" : "s reset_all" - } - - } -, { - "box" : { - "id" : "obj-78", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 691.285714285714334, 203.0, 51.0, 22.0 ], - "text" : "flymode" - } - - } -, { - "box" : { - "id" : "obj-81", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 667.0, 285.0, 31.0, 22.0 ], - "text" : "cam" - } - - } -, { - "box" : { - "id" : "obj-77", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 909.0, 285.0, 32.0, 22.0 ], - "text" : "prev" - } - - } -, { - "box" : { - "id" : "obj-33", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 951.0, 285.0, 35.0, 22.0 ], - "text" : "next" - } - - } -, { - "box" : { - "id" : "obj-28", - "linecount" : 6, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 745.0, 9.0, 150.0, 87.0 ], - "text" : "C: control camera\nF: flymode\nE: reset controlled object\nR: reset whole scene\nO: select previous object\nP: select next object" - } - - } -, { - "box" : { - "id" : "obj-25", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 764.0, 115.0, 19.0, 20.0 ], - "text" : "R" - } - - } -, { - "box" : { - "id" : "obj-26", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 741.0, 115.0, 19.0, 20.0 ], - "text" : "E" - } - - } -, { - "box" : { - "id" : "obj-14", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 720.0, 115.0, 19.0, 20.0 ], - "text" : "F" - } - - } -, { - "box" : { - "id" : "obj-13", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 695.0, 115.0, 19.0, 20.0 ], - "text" : "C" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "newobj", - "numinlets" : 8, - "numoutlets" : 8, - "outlettype" : [ "", "", "", "", "", "", "", "" ], - "patching_rect" : [ 667.0, 139.0, 189.0, 22.0 ], - "text" : "route 99 102 101 114 105 111 112" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 4, - "outlettype" : [ "int", "int", "int", "int" ], - "patching_rect" : [ 667.0, 73.0, 50.5, 22.0 ], - "text" : "key" - } - - } -, { - "box" : { - "id" : "obj-32", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 230.0, 248.0, 55.0, 22.0 ], - "text" : "zl.slice 3" - } - - } -, { - "box" : { - "bubble" : 1, - "id" : "obj-59", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 320.0, 109.0, 264.0, 37.0 ], - "text" : "dummy object to get the jit.anim.drive output without directly affecting a visible object" - } - - } -, { - "box" : { - "id" : "obj-57", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 250.0, 117.0, 68.0, 22.0 ], - "text" : "jit.gl.sketch" - } - - } -, { - "box" : { - "id" : "obj-54", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 230.0, 153.0, 101.0, 22.0 ], - "text" : "route anim_move" - } - - } -, { - "box" : { - "id" : "obj-41", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 934.0, 246.0, 482.0, 702.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "id" : "obj-48", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 88.0, 367.0, 29.5, 22.0 ], - "text" : "0 0" - } - - } -, { - "box" : { - "id" : "obj-46", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 351.0, 147.0, 49.0, 22.0 ], - "text" : "$1 $2 1" - } - - } -, { - "box" : { - "id" : "obj-45", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 276.0, 147.0, 49.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-43", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "bang", "" ], - "patching_rect" : [ 88.0, 267.0, 34.0, 22.0 ], - "text" : "sel 0" - } - - } -, { - "box" : { - "id" : "obj-23", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 276.0, 90.0, 32.0, 22.0 ], - "text" : "gate" - } - - } -, { - "box" : { - "id" : "obj-21", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 3, - "outlettype" : [ "", "", "" ], - "patching_rect" : [ 276.0, 118.0, 169.0, 22.0 ], - "text" : "route mouseidle mouseidleout" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-19", - "index" : 2, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 276.0, 11.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-14", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 154.0, 760.0, 60.0, 22.0 ], - "text" : "zl.change" - } - - } -, { - "box" : { - "id" : "obj-30", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 210.0, 227.0, 29.5, 22.0 ], - "text" : "$3" - } - - } -, { - "box" : { - "id" : "obj-25", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 179.0, 188.0, 50.0, 22.0 ], - "text" : "t l l" - } - - } -, { - "box" : { - "id" : "obj-24", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 209.0, 334.0, 32.0, 22.0 ], - "text" : "gate" - } - - } -, { - "box" : { - "id" : "obj-13", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 222.0, 302.0, 47.0, 22.0 ], - "text" : "jit.bang" - } - - } -, { - "box" : { - "id" : "obj-9", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 209.0, 372.0, 38.0, 22.0 ], - "text" : "zl.reg" - } - - } -, { - "box" : { - "id" : "obj-2", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 154.0, 717.0, 195.0, 22.0 ], - "text" : "vexpr $f1 * $f2 * -1 @scalarmode 1" - } - - } -, { - "box" : { - "id" : "obj-12", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 154.0, 797.0, 77.0, 22.0 ], - "text" : "prepend turn" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-11", - "index" : 3, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 330.0, 667.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-10", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 154.0, 671.0, 49.0, 22.0 ], - "text" : "$2 $1 0" - } - - } -, { - "box" : { - "id" : "obj-8", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 154.0, 598.0, 173.0, 22.0 ], - "text" : "join 2" - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "int", "int" ], - "patching_rect" : [ 209.0, 491.0, 48.0, 22.0 ], - "text" : "t 1 i" - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 154.0, 457.0, 74.0, 22.0 ], - "text" : "gate 2" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "int", "int" ], - "patching_rect" : [ 363.0, 491.0, 48.0, 22.0 ], - "text" : "t 1 i" - } - - } -, { - "box" : { - "id" : "obj-3", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 154.0, 408.0, 32.0, 22.0 ], - "text" : "2" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 308.0, 457.0, 74.0, 22.0 ], - "text" : "gate 2" - } - - } -, { - "box" : { - "id" : "obj-22", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "bang", "bang" ], - "patching_rect" : [ 154.0, 267.0, 64.0, 22.0 ], - "text" : "togedge" - } - - } -, { - "box" : { - "id" : "obj-36", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 308.0, 565.0, 29.0, 22.0 ], - "text" : "-" - } - - } -, { - "box" : { - "id" : "obj-37", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "int", "int" ], - "patching_rect" : [ 308.0, 533.0, 29.0, 22.0 ], - "text" : "t i i" - } - - } -, { - "box" : { - "id" : "obj-33", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "int", "int" ], - "patching_rect" : [ 209.0, 408.0, 173.0, 22.0 ], - "text" : "unpack 0 0" - } - - } -, { - "box" : { - "id" : "obj-29", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 154.0, 570.0, 29.0, 22.0 ], - "text" : "-" - } - - } -, { - "box" : { - "id" : "obj-28", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "int", "int" ], - "patching_rect" : [ 154.0, 538.0, 29.0, 22.0 ], - "text" : "t i i" - } - - } -, { - "box" : { - "id" : "obj-27", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 179.0, 49.0, 75.0, 22.0 ], - "text" : "route mouse" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-38", - "index" : 1, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 179.0, 11.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-39", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 154.0, 837.0, 30.0, 30.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "source" : [ "obj-1", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 1 ], - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-39", 0 ], - "source" : [ "obj-12", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-24", 1 ], - "source" : [ "obj-13", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-12", 0 ], - "source" : [ "obj-14", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-23", 0 ], - "source" : [ "obj-19", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-45", 0 ], - "source" : [ "obj-21", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-46", 0 ], - "source" : [ "obj-21", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-22", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-21", 0 ], - "source" : [ "obj-23", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-9", 0 ], - "source" : [ "obj-24", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 0 ], - "source" : [ "obj-25", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-9", 1 ], - "source" : [ "obj-25", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-23", 1 ], - "source" : [ "obj-27", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-25", 0 ], - "source" : [ "obj-27", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 0 ], - "source" : [ "obj-28", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 1 ], - "source" : [ "obj-28", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 0 ], - "source" : [ "obj-29", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "order" : 0, - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "order" : 1, - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 0 ], - "order" : 0, - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-22", 0 ], - "order" : 2, - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-24", 0 ], - "order" : 1, - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-43", 0 ], - "order" : 3, - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 1 ], - "source" : [ "obj-33", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 1 ], - "source" : [ "obj-33", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-8", 1 ], - "source" : [ "obj-36", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-36", 0 ], - "source" : [ "obj-37", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-36", 1 ], - "source" : [ "obj-37", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-27", 0 ], - "source" : [ "obj-38", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-4", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-36", 1 ], - "source" : [ "obj-4", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-48", 0 ], - "source" : [ "obj-43", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-25", 0 ], - "source" : [ "obj-45", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-25", 0 ], - "source" : [ "obj-46", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-10", 0 ], - "source" : [ "obj-48", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 1 ], - "source" : [ "obj-5", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-28", 0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "source" : [ "obj-6", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-10", 0 ], - "source" : [ "obj-8", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-33", 0 ], - "source" : [ "obj-9", 0 ] - } - - } - ], - "originid" : "pat-136" - } -, - "patching_rect" : [ 50.0, 280.0, 90.0, 22.0 ], - "text" : "p mouse_turn" - } - - } -, { - "box" : { - "id" : "obj-31", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 230.0, 83.0, 255.0, 22.0 ], - "text" : "jit.anim.drive @ui_listen 1 @speed 8 @ease 0" - } - - } -, { - "box" : { - "attr" : "ui_dict_layout", - "id" : "obj-22", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 372.0, 53.0, 179.0, 22.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-35", - "index" : 1, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 50.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-36", - "index" : 3, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 121.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-37", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 432.0, 534.0, 30.0, 30.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-34", 1 ], - "order" : 1, - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-4", 0 ], - "order" : 0, - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-104", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-104", 0 ], - "source" : [ "obj-105", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-82", 0 ], - "source" : [ "obj-105", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-111", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-17", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-32", 0 ], - "source" : [ "obj-18", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-31", 0 ], - "source" : [ "obj-22", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-16", 1 ], - "order" : 2, - "source" : [ "obj-31", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-54", 0 ], - "order" : 1, - "source" : [ "obj-31", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-57", 0 ], - "order" : 0, - "source" : [ "obj-31", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-17", 0 ], - "source" : [ "obj-32", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-33", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-41", 0 ], - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-41", 2 ], - "source" : [ "obj-36", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-104", 0 ], - "source" : [ "obj-4", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-105", 0 ], - "source" : [ "obj-4", 3 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-33", 0 ], - "source" : [ "obj-4", 6 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-77", 0 ], - "source" : [ "obj-4", 5 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-78", 0 ], - "source" : [ "obj-4", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-81", 0 ], - "source" : [ "obj-4", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-41", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-31", 0 ], - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-18", 0 ], - "source" : [ "obj-54", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-41", 1 ], - "source" : [ "obj-7", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-77", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-78", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-111", 0 ], - "source" : [ "obj-81", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-18", 1 ], - "source" : [ "obj-9", 0 ] - } - - } - ], - "originid" : "pat-134" - } -, - "patching_rect" : [ 369.5, 171.0, 159.0, 22.0 ], - "text" : "p mouse_keyboard_controls" - } - - } -, { - "box" : { - "id" : "obj-17", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 439.5, 53.0, 80.0, 22.0 ], - "text" : "loadmess 0.6" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-47", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 439.5, 79.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-19", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 491.5, 80.0, 100.0, 20.0 ], - "text" : "mouse sensitivity" - } - - } -, { - "box" : { - "dontreplace" : 1, - "id" : "obj-13", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 773.5, 203.0, 104.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "bang" ], - "patching_rect" : [ 187.0, 370.0, 58.0, 22.0 ], - "text" : "loadbang" - } - - } -, { - "box" : { - "id" : "obj-195", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 818.5, 30.0, 59.0, 20.0 ], - "text" : "Left stick " - } - - } -, { - "box" : { - "id" : "obj-194", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1005.5, 30.0, 67.0, 20.0 ], - "text" : "Right stick " - } - - } -, { - "box" : { - "color" : [ 1.0, 0.612, 0.0, 1.0 ], - "id" : "obj-189", - "maxclass" : "newobj", - "numinlets" : 6, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 62.0, 123.0, 1000.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "comment" : "", - "id" : "obj-9", - "index" : 2, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 889.0, 738.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-202", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 84.0, 144.0, 1000.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "comment" : "", - "id" : "obj-1", - "index" : 2, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 554.0, 485.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-111", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 308.0, 368.0, 139.0, 22.0 ], - "text" : "prepend control_camera" - } - - } -, { - "box" : { - "id" : "obj-105", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "bang", "bang" ], - "patching_rect" : [ 688.799999999999955, 260.0, 32.0, 22.0 ], - "text" : "t b b" - } - - } -, { - "box" : { - "id" : "obj-104", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 645.0, 299.0, 35.0, 22.0 ], - "text" : "reset" - } - - } -, { - "box" : { - "id" : "obj-82", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 688.799999999999955, 299.0, 63.0, 22.0 ], - "text" : "s reset_all" - } - - } -, { - "box" : { - "id" : "obj-72", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 696.799999999999955, 229.0, 97.0, 20.0 ], - "text" : "Reset all objects", - "textcolor" : [ 1.0, 0.0, 0.0, 1.0 ] - } - - } -, { - "box" : { - "id" : "obj-76", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "bang", "" ], - "patching_rect" : [ 688.799999999999955, 197.0, 34.0, 22.0 ], - "text" : "sel 1" - } - - } -, { - "box" : { - "id" : "obj-150", - "linecount" : 7, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1215.0, 307.0, 151.0, 100.0 ], - "text" : "When flymode is enabled, the target can move in all direction. When disabled, its elevation (Y pos) is locked, and can be controlled only with the L/R triggers" - } - - } -, { - "box" : { - "id" : "obj-78", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1117.14285714285711, 346.0, 51.0, 22.0 ], - "text" : "flymode" - } - - } -, { - "box" : { - "id" : "obj-66", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 129.849999999999994, 265.0, 35.0, 22.0 ], - "text" : "reset" - } - - } -, { - "box" : { - "id" : "obj-106", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 137.849999999999994, 227.0, 85.0, 33.0 ], - "text" : "Reset target position", - "textcolor" : [ 1.0, 0.0, 0.0, 1.0 ] - } - - } -, { - "box" : { - "id" : "obj-95", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 301.550000000000011, 242.0, 85.0, 20.0 ], - "text" : "Select camera", - "textcolor" : [ 1.0, 0.0, 0.0, 1.0 ] - } - - } -, { - "box" : { - "id" : "obj-38", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "bang", "" ], - "patching_rect" : [ 608.950000000000045, 185.0, 34.0, 22.0 ], - "text" : "sel 1" - } - - } -, { - "box" : { - "id" : "obj-32", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "bang", "" ], - "patching_rect" : [ 529.0, 185.0, 34.0, 22.0 ], - "text" : "sel 1" - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "bang", "" ], - "patching_rect" : [ 289.550000000000011, 191.0, 34.0, 22.0 ], - "text" : "sel 1" - } - - } -, { - "box" : { - "id" : "obj-81", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 289.550000000000011, 280.0, 31.0, 22.0 ], - "text" : "cam" - } - - } -, { - "box" : { - "id" : "obj-77", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 529.0, 260.0, 32.0, 22.0 ], - "text" : "prev" - } - - } -, { - "box" : { - "id" : "obj-33", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 599.950000000000045, 260.0, 31.0, 22.0 ], - "text" : "next" - } - - } -, { - "box" : { - "id" : "obj-168", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "bang", "" ], - "patching_rect" : [ 1117.14285714285711, 275.0, 34.0, 22.0 ], - "text" : "sel 1" - } - - } -, { - "box" : { - "id" : "obj-141", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "bang", "" ], - "patching_rect" : [ 129.849999999999994, 195.0, 34.0, 22.0 ], - "text" : "sel 1" - } - - } -, { - "box" : { - "id" : "obj-68", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 758.799999999999955, 169.0, 57.0, 20.0 ], - "text" : "back" - } - - } -, { - "box" : { - "id" : "obj-69", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 688.799999999999955, 169.0, 57.0, 20.0 ], - "text" : "start" - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-62", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 767.799999999999955, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-63", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 688.799999999999955, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "id" : "obj-59", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1117.14285714285711, 171.0, 70.0, 33.0 ], - "text" : "right stick press" - } - - } -, { - "box" : { - "id" : "obj-58", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1035.14285714285711, 171.0, 59.0, 33.0 ], - "text" : "left stick press" - } - - } -, { - "box" : { - "id" : "obj-57", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 957.14285714285711, 171.0, 63.206337849722217, 33.0 ], - "text" : "right shoulder" - } - - } -, { - "box" : { - "id" : "obj-56", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 877.14285714285711, 170.0, 63.206337849722217, 33.0 ], - "text" : "left shoulder" - } - - } -, { - "box" : { - "id" : "obj-46", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 608.950000000000045, 169.0, 62.0, 20.0 ], - "text" : "dpad right" - } - - } -, { - "box" : { - "id" : "obj-45", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 529.0, 169.0, 55.0, 20.0 ], - "text" : "dpad left" - } - - } -, { - "box" : { - "id" : "obj-44", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 449.25, 169.0, 67.0, 20.0 ], - "text" : "dpad down" - } - - } -, { - "box" : { - "id" : "obj-43", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 369.399999999999977, 169.0, 52.0, 20.0 ], - "text" : "dpad up" - } - - } -, { - "box" : { - "id" : "obj-42", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 289.550000000000011, 169.0, 19.0, 20.0 ], - "text" : "y" - } - - } -, { - "box" : { - "id" : "obj-41", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 209.699999999999989, 169.0, 19.0, 20.0 ], - "text" : "x" - } - - } -, { - "box" : { - "id" : "obj-40", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 129.849999999999994, 169.0, 19.0, 20.0 ], - "text" : "b" - } - - } -, { - "box" : { - "id" : "obj-39", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 50.0, 169.0, 19.0, 20.0 ], - "text" : "a" - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-34", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 877.14285714285711, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-35", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 1117.14285714285711, 138.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-36", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 1037.14285714285711, 138.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-37", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 957.14285714285711, 138.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-16", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 608.950000000000045, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-17", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 529.0, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-18", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 449.25, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-19", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 369.399999999999977, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-14", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 289.550000000000011, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-15", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 209.699999999999989, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-13", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 129.849999999999994, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "bgcolor" : [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], - "id" : "obj-22", - "maxclass" : "toggle", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "parameter_enable" : 0, - "patching_rect" : [ 50.0, 137.0, 24.0, 24.0 ] - } - - } -, { - "box" : { - "id" : "obj-2", - "maxclass" : "newobj", - "numinlets" : 15, - "numoutlets" : 15, - "outlettype" : [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" ], - "patching_rect" : [ 50.0, 100.0, 1177.0, 22.0 ], - "text" : "route button_a button_b button_x button_y button_dpad_up button_dpad_down button_dpad_left button_dpad_right button_start button_back button_left_shoulder button_right_shoulder button_left_stick button_right_stick" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-197", - "index" : 1, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 50.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-200", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 352.962493999999992, 485.0, 30.0, 30.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-200", 0 ], - "source" : [ "obj-104", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-104", 0 ], - "source" : [ "obj-105", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-82", 0 ], - "source" : [ "obj-105", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-200", 0 ], - "source" : [ "obj-111", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-141", 0 ], - "source" : [ "obj-13", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-14", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-66", 0 ], - "source" : [ "obj-141", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-38", 0 ], - "source" : [ "obj-16", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-78", 0 ], - "source" : [ "obj-168", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-32", 0 ], - "source" : [ "obj-17", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "source" : [ "obj-197", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 0 ], - "source" : [ "obj-2", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-2", 3 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-15", 0 ], - "source" : [ "obj-2", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-16", 0 ], - "source" : [ "obj-2", 7 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-17", 0 ], - "source" : [ "obj-2", 6 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-18", 0 ], - "source" : [ "obj-2", 5 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-19", 0 ], - "source" : [ "obj-2", 4 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-22", 0 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-34", 0 ], - "source" : [ "obj-2", 10 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 0 ], - "source" : [ "obj-2", 13 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-36", 0 ], - "source" : [ "obj-2", 12 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-37", 0 ], - "source" : [ "obj-2", 11 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-62", 0 ], - "source" : [ "obj-2", 9 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-63", 0 ], - "source" : [ "obj-2", 8 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-77", 0 ], - "source" : [ "obj-32", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-33", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-168", 0 ], - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-33", 0 ], - "source" : [ "obj-38", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-81", 0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-76", 0 ], - "source" : [ "obj-63", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-200", 0 ], - "source" : [ "obj-66", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-105", 0 ], - "source" : [ "obj-76", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-77", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-200", 0 ], - "source" : [ "obj-78", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-111", 0 ], - "source" : [ "obj-81", 0 ] - } - - } - ], - "originid" : "pat-140" - } -, - "patching_rect" : [ 984.799999999999841, 277.0, 115.0, 22.0 ], - "text" : "p gamepad_buttons" - } - - } -, { - "box" : { - "id" : "obj-7", - "linecount" : 2, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 689.0, 195.0, 169.0, 33.0 ], - "text" : "L/R TRIGGERS - ELEVATION\n(move up/down)" - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 372.0, 314.0, 128.0, 20.0 ], - "text" : "RIGHT STICK - TURN" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 62.0, 314.0, 122.0, 20.0 ], - "text" : "LEFT STICK - MOVE" - } - - } -, { - "box" : { - "id" : "obj-24", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 308.0, 195.0, 107.0, 20.0 ], - "text" : "Triggers sensitivity" - } - - } -, { - "box" : { - "id" : "obj-23", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 528.0, 195.0, 73.0, 20.0 ], - "text" : "L sensitivity" - } - - } -, { - "box" : { - "id" : "obj-22", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 459.0, 195.0, 73.0, 20.0 ], - "text" : "L deadzone" - } - - } -, { - "box" : { - "id" : "obj-21", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 232.0, 195.0, 73.0, 20.0 ], - "text" : "R sensitivity" - } - - } -, { - "box" : { - "id" : "obj-20", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 140.5, 196.0, 73.0, 20.0 ], - "text" : "R deadzone" - } - - } -, { - "box" : { - "id" : "obj-18", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 93.0, 44.0, 59.0, 20.0 ], - "text" : "gamepad" - } - - } -, { - "box" : { - "id" : "obj-16", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 59.0, 119.0, 1000.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "id" : "obj-11", - "linecount" : 5, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 442.0, 531.0, 150.0, 74.0 ], - "text" : "https://cycling74.com/forums/scaled-radial-deadzone-for-gamepad-joystick#reply-68021c0c3bd53f00135efbe2" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 302.0, 435.0, 37.0, 22.0 ], - "text" : "zl.rev" - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "", "", "" ], - "patching_rect" : [ 232.0, 531.0, 41.0, 22.0 ], - "text" : "unjoin" - } - - } -, { - "box" : { - "id" : "obj-3", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 232.0, 472.0, 60.0, 22.0 ], - "text" : "zl.change" - } - - } -, { - "box" : { - "id" : "obj-52", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 232.0, 408.0, 58.0, 22.0 ], - "text" : "zl.reg 0 0" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 410.0, 392.0, 243.0, 20.0 ], - "text" : "scaled_input * stick_input / input_magnitude" - } - - } -, { - "box" : { - "id" : "obj-46", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 417.0, 329.0, 76.0, 20.0 ], - "text" : "scaled_input" - } - - } -, { - "box" : { - "id" : "obj-45", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 500.0, 19.0, 22.0 ], - "text" : "t l" - } - - } -, { - "box" : { - "id" : "obj-36", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 3, - "outlettype" : [ "bang", "bang", "" ], - "patching_rect" : [ 232.0, 365.0, 44.0, 22.0 ], - "text" : "sel 1 0" - } - - } -, { - "box" : { - "id" : "obj-35", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 302.0, 408.0, 38.0, 22.0 ], - "text" : "zl.reg" - } - - } -, { - "box" : { - "id" : "obj-30", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 321.0, 365.0, 200.0, 22.0 ], - "text" : "vexpr $f1 * $f2 / $f3 @scalarmode 1" - } - - } -, { - "box" : { - "id" : "obj-29", - "maxclass" : "newobj", - "numinlets" : 6, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 321.0, 328.0, 90.0, 22.0 ], - "text" : "scale 0. 1. 0. 1." - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 190.0, 197.0, 22.0 ], - "text" : "expr sqrt(pow($f1\\, 2) + pow($f2\\, 2))" - } - - } -, { - "box" : { - "id" : "obj-293", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 232.0, 155.0, 29.5, 22.0 ], - "text" : "t l l" - } - - } -, { - "box" : { - "id" : "obj-292", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 100.0, 110.0, 22.0 ], - "text" : "join f f @triggers -1" - } - - } -, { - "box" : { - "id" : "obj-285", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "float", "float", "float" ], - "patching_rect" : [ 232.0, 241.0, 40.0, 22.0 ], - "text" : "t f f f" - } - - } -, { - "box" : { - "id" : "obj-199", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 109.0, 409.0, 118.400001764297485, 20.0 ], - "text" : "return Vector2(0, 0)" - } - - } -, { - "box" : { - "id" : "obj-197", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 50.0, 286.0, 180.000002682209015, 20.0 ], - "text" : " if input_magnitude < deadzone:" - } - - } -, { - "box" : { - "id" : "obj-10", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 232.0, 286.0, 29.5, 22.0 ], - "text" : "< 0." - } - - } -, { - "box" : { - "id" : "obj-8", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 133.0, 191.0, 97.0, 20.0 ], - "text" : "input_magnitude" - } - - } -, { - "box" : { - "id" : "obj-168", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 504.0, 101.0, 64.0, 20.0 ], - "text" : "deadzone" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-166", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 452.0, 100.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-7", - "index" : 1, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-9", - "index" : 2, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 323.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-12", - "index" : 3, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 452.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-13", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 232.0, 606.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-14", - "index" : 2, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 267.0, 606.0, 30.0, 30.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-36", 0 ], - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-166", 0 ], - "source" : [ "obj-12", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-10", 1 ], - "order" : 1, - "source" : [ "obj-166", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 1 ], - "order" : 0, - "source" : [ "obj-166", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-10", 0 ], - "source" : [ "obj-285", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 0 ], - "source" : [ "obj-285", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 2 ], - "source" : [ "obj-285", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 0 ], - "source" : [ "obj-29", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-293", 0 ], - "source" : [ "obj-292", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 1 ], - "source" : [ "obj-293", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "source" : [ "obj-293", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-45", 0 ], - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 1 ], - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 0 ], - "source" : [ "obj-36", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-52", 0 ], - "source" : [ "obj-36", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-45", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-285", 0 ], - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-6", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-292", 0 ], - "source" : [ "obj-7", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-292", 1 ], - "source" : [ "obj-9", 0 ] - } - - } - ], - "originid" : "pat-142" - } -, - "patching_rect" : [ 377.0, 382.0, 123.0, 22.0 ], - "text" : "p deadzone_handling" - } - - } -, { - "box" : { - "id" : "obj-15", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patcher" : { - "fileversion" : 1, - "appversion" : { - "major" : 9, - "minor" : 0, - "revision" : 5, - "architecture" : "x64", - "modernui" : 1 - } -, - "classnamespace" : "box", - "rect" : [ 398.0, 153.0, 1000.0, 755.0 ], - "gridsize" : [ 15.0, 15.0 ], - "boxes" : [ { - "box" : { - "id" : "obj-11", - "linecount" : 5, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 442.0, 531.0, 150.0, 74.0 ], - "text" : "https://cycling74.com/forums/scaled-radial-deadzone-for-gamepad-joystick#reply-68021c0c3bd53f00135efbe2" - } - - } -, { - "box" : { - "id" : "obj-6", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "", "", "" ], - "patching_rect" : [ 232.0, 555.0, 41.0, 22.0 ], - "text" : "unjoin" - } - - } -, { - "box" : { - "id" : "obj-3", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 232.0, 496.0, 60.0, 22.0 ], - "text" : "zl.change" - } - - } -, { - "box" : { - "id" : "obj-52", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 232.0, 408.0, 58.0, 22.0 ], - "text" : "zl.reg 0 0" - } - - } -, { - "box" : { - "id" : "obj-4", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 410.0, 392.0, 243.0, 20.0 ], - "text" : "scaled_input * stick_input / input_magnitude" - } - - } -, { - "box" : { - "id" : "obj-46", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 417.0, 329.0, 76.0, 20.0 ], - "text" : "scaled_input" - } - - } -, { - "box" : { - "id" : "obj-45", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 524.0, 19.0, 22.0 ], - "text" : "t l" - } - - } -, { - "box" : { - "id" : "obj-36", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 3, - "outlettype" : [ "bang", "bang", "" ], - "patching_rect" : [ 232.0, 365.0, 44.0, 22.0 ], - "text" : "sel 1 0" - } - - } -, { - "box" : { - "id" : "obj-35", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 302.0, 408.0, 38.0, 22.0 ], - "text" : "zl.reg" - } - - } -, { - "box" : { - "id" : "obj-30", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 321.0, 365.0, 200.0, 22.0 ], - "text" : "vexpr $f1 * $f2 / $f3 @scalarmode 1" - } - - } -, { - "box" : { - "id" : "obj-29", - "maxclass" : "newobj", - "numinlets" : 6, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 321.0, 328.0, 90.0, 22.0 ], - "text" : "scale 0. 1. 0. 1." - } - - } -, { - "box" : { - "id" : "obj-5", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 190.0, 197.0, 22.0 ], - "text" : "expr sqrt(pow($f1\\, 2) + pow($f2\\, 2))" - } - - } -, { - "box" : { - "id" : "obj-293", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 232.0, 155.0, 29.5, 22.0 ], - "text" : "t l l" - } - - } -, { - "box" : { - "id" : "obj-292", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 100.0, 110.0, 22.0 ], - "text" : "join f f @triggers -1" - } - - } -, { - "box" : { - "id" : "obj-285", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "float", "float", "float" ], - "patching_rect" : [ 232.0, 241.0, 40.0, 22.0 ], - "text" : "t f f f" - } - - } -, { - "box" : { - "id" : "obj-199", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 109.0, 409.0, 118.400001764297485, 20.0 ], - "text" : "return Vector2(0, 0)" - } - - } -, { - "box" : { - "id" : "obj-197", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 50.0, 286.0, 180.000002682209015, 20.0 ], - "text" : " if input_magnitude < deadzone:" - } - - } -, { - "box" : { - "id" : "obj-10", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 232.0, 286.0, 29.5, 22.0 ], - "text" : "< 0." - } - - } -, { - "box" : { - "id" : "obj-8", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 133.0, 191.0, 97.0, 20.0 ], - "text" : "input_magnitude" - } - - } -, { - "box" : { - "id" : "obj-168", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 504.0, 101.0, 64.0, 20.0 ], - "text" : "deadzone" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-166", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 452.0, 100.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-7", - "index" : 1, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 232.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-9", - "index" : 2, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 323.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-12", - "index" : 3, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 452.0, 40.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-13", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 232.0, 606.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-14", - "index" : 2, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 267.0, 606.0, 30.0, 30.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-36", 0 ], - "source" : [ "obj-10", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-166", 0 ], - "source" : [ "obj-12", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-10", 1 ], - "order" : 1, - "source" : [ "obj-166", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 1 ], - "order" : 0, - "source" : [ "obj-166", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-10", 0 ], - "source" : [ "obj-285", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-29", 0 ], - "source" : [ "obj-285", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 2 ], - "source" : [ "obj-285", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 0 ], - "source" : [ "obj-29", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-293", 0 ], - "source" : [ "obj-292", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-30", 1 ], - "source" : [ "obj-293", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-5", 0 ], - "source" : [ "obj-293", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-45", 0 ], - "source" : [ "obj-3", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 1 ], - "source" : [ "obj-30", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-35", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-35", 0 ], - "source" : [ "obj-36", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-52", 0 ], - "source" : [ "obj-36", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-6", 0 ], - "source" : [ "obj-45", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-285", 0 ], - "source" : [ "obj-5", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-52", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-6", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-292", 0 ], - "source" : [ "obj-7", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-292", 1 ], - "source" : [ "obj-9", 0 ] - } - - } - ], - "originid" : "pat-144" - } -, - "patching_rect" : [ 58.0, 382.0, 123.0, 22.0 ], - "text" : "p deadzone_handling" - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-2", - "index" : 1, - "maxclass" : "outlet", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 58.0, 738.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 7, - "numoutlets" : 7, - "outlettype" : [ "", "", "", "", "", "", "" ], - "patching_rect" : [ 62.0, 100.0, 941.799999999999955, 22.0 ], - "text" : "route axis_left_x axis_left_y axis_right_x axis_right_y axis_left_trigger axis_right_trigger" - } - - } -, { - "box" : { - "id" : "obj-94", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 58.0, 532.0, 60.0, 22.0 ], - "text" : "zl.change" - } - - } -, { - "box" : { - "id" : "obj-28", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 377.0, 529.0, 60.0, 22.0 ], - "text" : "zl.change" - } - - } -, { - "box" : { - "id" : "obj-108", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 257.0, 464.0, 68.0, 22.0 ], - "text" : "pak 0. 0. 0." - } - - } -, { - "box" : { - "id" : "obj-124", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 676.0, 451.0, 32.0, 22.0 ], - "text" : "gate" - } - - } -, { - "box" : { - "id" : "obj-123", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "float", "float" ], - "patching_rect" : [ 676.0, 348.0, 29.5, 22.0 ], - "text" : "t f f" - } - - } -, { - "box" : { - "id" : "obj-119", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "int" ], - "patching_rect" : [ 676.0, 382.0, 32.0, 22.0 ], - "text" : "!= 0." - } - - } -, { - "box" : { - "id" : "obj-118", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 58.0, 562.0, 85.0, 22.0 ], - "text" : "prepend move" - } - - } -, { - "box" : { - "id" : "obj-117", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 58.0, 497.0, 86.0, 22.0 ], - "text" : "vexpr $f1 * $f2" - } - - } -, { - "box" : { - "id" : "obj-115", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 689.0, 415.0, 47.0, 22.0 ], - "text" : "jit.bang" - } - - } -, { - "box" : { - "id" : "obj-96", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "bang", "float" ], - "patching_rect" : [ 831.0, 246.0, 29.5, 22.0 ], - "text" : "t b f" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-93", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 676.0, 488.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-91", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "float" ], - "patching_rect" : [ 676.0, 307.0, 31.0, 22.0 ], - "text" : "* -1." - } - - } -, { - "box" : { - "id" : "obj-90", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 676.0, 277.0, 184.0, 22.0 ], - "text" : "if $f1 > $f2 then $f1 else out2 $f2" - } - - } -, { - "box" : { - "id" : "obj-75", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 377.0, 562.0, 77.0, 22.0 ], - "text" : "prepend turn" - } - - } -, { - "box" : { - "id" : "obj-74", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 377.0, 497.0, 191.0, 22.0 ], - "text" : "vexpr $f1 * $f2 * 8 @scalarmode 1" - } - - } -, { - "box" : { - "id" : "obj-73", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "float" ], - "patching_rect" : [ 481.0, 415.0, 31.0, 22.0 ], - "text" : "* -1." - } - - } -, { - "box" : { - "id" : "obj-71", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 377.0, 464.0, 68.0, 22.0 ], - "text" : "pak 0. 0. 0." - } - - } -, { - "box" : { - "id" : "obj-48", - "maxclass" : "newobj", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "float" ], - "patching_rect" : [ 162.0, 415.0, 31.0, 22.0 ], - "text" : "* -1." - } - - } -, { - "box" : { - "id" : "obj-11", - "maxclass" : "newobj", - "numinlets" : 3, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 58.0, 457.0, 68.0, 22.0 ], - "text" : "pak 0. 0. 0." - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-113", - "index" : 1, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 62.0, 39.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-129", - "index" : 2, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 162.0, 217.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-139", - "index" : 3, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 253.0, 217.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-140", - "index" : 4, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 346.0, 217.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-178", - "index" : 5, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 481.0, 217.0, 30.0, 30.0 ] - } - - } -, { - "box" : { - "comment" : "", - "id" : "obj-180", - "index" : 6, - "maxclass" : "inlet", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 549.0, 217.0, 30.0, 30.0 ] - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-15", 1 ], - "source" : [ "obj-1", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-15", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-16", 1 ], - "source" : [ "obj-1", 3 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-16", 0 ], - "source" : [ "obj-1", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-202", 0 ], - "source" : [ "obj-1", 6 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-90", 0 ], - "source" : [ "obj-1", 4 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-96", 0 ], - "source" : [ "obj-1", 5 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-117", 1 ], - "source" : [ "obj-108", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-117", 0 ], - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-1", 0 ], - "source" : [ "obj-113", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-124", 1 ], - "source" : [ "obj-115", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-94", 0 ], - "source" : [ "obj-117", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "source" : [ "obj-118", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-124", 0 ], - "source" : [ "obj-119", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-119", 0 ], - "source" : [ "obj-123", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-93", 0 ], - "source" : [ "obj-123", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-93", 0 ], - "source" : [ "obj-124", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-15", 2 ], - "source" : [ "obj-129", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-108", 2 ], - "order" : 0, - "source" : [ "obj-139", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-108", 0 ], - "order" : 1, - "source" : [ "obj-139", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-108", 1 ], - "source" : [ "obj-140", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 0 ], - "source" : [ "obj-15", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-48", 0 ], - "source" : [ "obj-15", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-71", 0 ], - "source" : [ "obj-16", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-73", 0 ], - "source" : [ "obj-16", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-16", 2 ], - "source" : [ "obj-178", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-74", 1 ], - "source" : [ "obj-180", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "source" : [ "obj-202", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-9", 0 ], - "source" : [ "obj-202", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-75", 0 ], - "source" : [ "obj-28", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 2 ], - "source" : [ "obj-48", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-74", 0 ], - "source" : [ "obj-71", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-71", 1 ], - "source" : [ "obj-73", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-28", 0 ], - "source" : [ "obj-74", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-2", 0 ], - "source" : [ "obj-75", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-123", 0 ], - "source" : [ "obj-90", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-91", 0 ], - "source" : [ "obj-90", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-123", 0 ], - "source" : [ "obj-91", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-11", 1 ], - "source" : [ "obj-93", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-118", 0 ], - "source" : [ "obj-94", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-90", 1 ], - "source" : [ "obj-96", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-90", 0 ], - "source" : [ "obj-96", 0 ] - } - - } - ], - "originid" : "pat-138" - } -, - "patching_rect" : [ 719.5, 171.0, 515.0, 22.0 ], - "text" : "p gamepad_controls" - } - - } -, { - "box" : { - "id" : "obj-125", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 187.0, 429.0, 143.0, 22.0 ], - "text" : "camera cam, controllable" - } - - } -, { - "box" : { - "color" : [ 0.0, 0.694117647058824, 0.482352941176471, 1.0 ], - "filename" : "tc.controller.js", - "id" : "obj-109", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 53.0, 472.0, 87.0, 22.0 ], - "saved_object_attributes" : { - "parameter_enable" : 0 - } -, - "text" : "v8 tc.controller", - "textfile" : { - "filename" : "tc.controller.js", - "flags" : 0, - "embed" : 0, - "autowatch" : 1 - } - - } - - } -, { - "box" : { - "id" : "obj-116", - "linecount" : 10, - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 445.5, 1054.0, 566.5, 141.0 ], - "text" : "TODO:\n- use worldtolocal anim.node feature instead of manually calculating transform matrix?\n- better object rotation logic?\n- other ideas?\n\nWHAT DOESN'T WORK\n- lighting looks different whether you target the camera or an object, it seems to be a bug when using multiple jit.anim.node on a camera.\n- using the implicit anim node of a jit.gl.camera doesn't work (need to declare an explicit anim node)\n- controlling a skybox doesn't work although it's technically possible and works when done manually" - } - - } -, { - "box" : { - "color" : [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], - "id" : "obj-132", - "maxclass" : "newobj", - "numinlets" : 0, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 110.0, 429.0, 45.0, 22.0 ], - "text" : "r to_v8" - } - - } -, { - "box" : { - "color" : [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], - "id" : "obj-131", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 719.5, 203.0, 47.0, 22.0 ], - "text" : "s to_v8" - } - - } -, { - "box" : { - "dontreplace" : 1, - "id" : "obj-60", - "maxclass" : "message", - "numinlets" : 2, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 53.0, 540.0, 187.5, 22.0 ], - "text" : "control torus u545008696" - } - - } -, { - "box" : { - "id" : "obj-166", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1165.5, 107.0, 80.0, 22.0 ], - "text" : "loadmess 0.4" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-167", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 1165.5, 136.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-165", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1219.5, 137.0, 113.0, 20.0 ], - "text" : "Elevation sensitivity" - } - - } -, { - "box" : { - "id" : "obj-164", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1060.5, 84.0, 90.0, 20.0 ], - "text" : "Look sensitivity" - } - - } -, { - "box" : { - "id" : "obj-163", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 871.5, 84.0, 120.0, 20.0 ], - "text" : "Movement sensitivity" - } - - } -, { - "box" : { - "id" : "obj-160", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1006.5, 54.0, 80.0, 22.0 ], - "text" : "loadmess 0.4" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-161", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 1006.5, 83.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-159", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 818.5, 54.0, 80.0, 22.0 ], - "text" : "loadmess 0.4" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-158", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 818.5, 83.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "fontface" : 0, - "fontname" : "Arial", - "fontsize" : 12.0, - "id" : "obj-156", - "maxclass" : "jit.fpsgui", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "" ], - "patching_rect" : [ 202.5, 148.0, 80.0, 35.0 ] - } - - } -, { - "box" : { - "id" : "obj-153", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 1008.5, 110.0, 80.0, 22.0 ], - "text" : "loadmess 0.1" - } - - } -, { - "box" : { - "id" : "obj-154", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 1060.5, 137.0, 67.0, 20.0 ], - "text" : "Dead zone" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-155", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 1008.5, 136.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-149", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "patching_rect" : [ 818.5, 109.0, 87.0, 22.0 ], - "text" : "loadmess 0.15" - } - - } -, { - "box" : { - "id" : "obj-148", - "maxclass" : "comment", - "numinlets" : 1, - "numoutlets" : 0, - "patching_rect" : [ 870.5, 136.0, 67.0, 20.0 ], - "text" : "Dead zone" - } - - } -, { - "box" : { - "format" : 6, - "id" : "obj-146", - "maxclass" : "flonum", - "numinlets" : 1, - "numoutlets" : 2, - "outlettype" : [ "", "bang" ], - "parameter_enable" : 0, - "patching_rect" : [ 818.5, 135.0, 50.0, 22.0 ] - } - - } -, { - "box" : { - "id" : "obj-3", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "jit_matrix", "bang", "" ], - "patching_rect" : [ 35.5, 121.0, 353.0, 22.0 ], - "text" : "jit.world gpw @enable 1 @erase_color 0 0 0 1 @sync 0 @fps 60" - } - - } -, { - "box" : { - "id" : "obj-1", - "maxclass" : "newobj", - "numinlets" : 1, - "numoutlets" : 3, - "outlettype" : [ "", "", "" ], - "patching_rect" : [ 719.5, 131.0, 59.0, 22.0 ], - "text" : "gamepad" - } - - } -, { - "box" : { - "attr" : "floating", - "id" : "obj-61", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 35.5, 91.0, 83.0, 22.0 ], - "text_width" : 61.0 - } - - } -, { - "box" : { - "attr" : "ease", - "id" : "obj-2", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 53.0, 370.0, 97.0, 22.0 ], - "text_width" : 46.0 - } - - } -, { - "box" : { - "attr" : "flymode", - "id" : "obj-11", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 53.0, 342.0, 86.5, 22.0 ], - "text_width" : 63.0 - } - - } -, { - "box" : { - "attr" : "show_bounds", - "id" : "obj-49", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 53.0, 400.0, 121.0, 22.0 ] - } - - } -, { - "box" : { - "attr" : "enable", - "id" : "obj-55", - "maxclass" : "attrui", - "numinlets" : 1, - "numoutlets" : 1, - "outlettype" : [ "" ], - "parameter_enable" : 0, - "patching_rect" : [ 35.5, 63.0, 83.0, 22.0 ], - "text_width" : 61.0 - } - - } - ], - "lines" : [ { - "patchline" : { - "destination" : [ "obj-189", 0 ], - "source" : [ "obj-1", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-38", 3 ], - "source" : [ "obj-10", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-25", 0 ], - "source" : [ "obj-109", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-33", 0 ], - "source" : [ "obj-109", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-109", 0 ], - "source" : [ "obj-11", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-109", 0 ], - "source" : [ "obj-125", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-109", 0 ], - "source" : [ "obj-132", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-125", 0 ], - "source" : [ "obj-14", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-189", 1 ], - "source" : [ "obj-146", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-146", 0 ], - "source" : [ "obj-149", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-155", 0 ], - "source" : [ "obj-153", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-189", 4 ], - "source" : [ "obj-155", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-189", 2 ], - "source" : [ "obj-158", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-158", 0 ], - "source" : [ "obj-159", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-161", 0 ], - "source" : [ "obj-160", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-189", 5 ], - "source" : [ "obj-161", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-167", 0 ], - "source" : [ "obj-166", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-189", 3 ], - "source" : [ "obj-167", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-47", 0 ], - "order" : 1, - "source" : [ "obj-17", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-68", 0 ], - "order" : 0, - "source" : [ "obj-17", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-13", 1 ], - "order" : 0, - "source" : [ "obj-189", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-131", 0 ], - "order" : 1, - "source" : [ "obj-189", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-56", 0 ], - "source" : [ "obj-189", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-109", 0 ], - "source" : [ "obj-2", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-56", 0 ], - "source" : [ "obj-26", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-156", 0 ], - "source" : [ "obj-3", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-38", 0 ], - "source" : [ "obj-3", 2 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-32", 0 ], - "source" : [ "obj-31", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-60", 0 ], - "source" : [ "obj-33", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-40", 1 ], - "order" : 0, - "source" : [ "obj-38", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-41", 0 ], - "order" : 1, - "source" : [ "obj-38", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-56", 0 ], - "source" : [ "obj-38", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-38", 2 ], - "source" : [ "obj-47", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-48", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-109", 0 ], - "source" : [ "obj-49", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-38", 1 ], - "source" : [ "obj-51", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-55", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-31", 0 ], - "source" : [ "obj-56", 1 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-48", 0 ], - "source" : [ "obj-57", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-14", 0 ], - "source" : [ "obj-6", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-3", 0 ], - "source" : [ "obj-61", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-109", 0 ], - "source" : [ "obj-62", 0 ] - } - - } -, { - "patchline" : { - "destination" : [ "obj-38", 4 ], - "source" : [ "obj-68", 0 ] - } - - } - ], - "originid" : "pat-126", - "dependency_cache" : [ { - "name" : "tc.controller.js", - "bootpath" : "~/Documents/_MAX/First Person controls", - "patcherrelativepath" : ".", - "type" : "TEXT", - "implicit" : 1 - } - ], - "autosave" : 0 - } - -} + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 636.0, 100.0, 1444.0, 848.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-21", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 1395.0, 188.0, 88.0, 22.0 ], + "text": "s object_select" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 603.0, 189.0, 88.0, 22.0 ], + "text": "s object_select" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 273.0, 493.0, 86.0, 22.0 ], + "text": "r object_select" + } + }, + { + "box": { + "color": [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 1299.0, 188.0, 93.0, 22.0 ], + "text": "s to_tc.fpcontrol" + } + }, + { + "box": { + "id": "obj-202", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 84.0, 144.0, 1000.0, 755.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "comment": "", + "id": "obj-1", + "index": 2, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 533.0, 495.0, 30.0, 30.0 ] + } + }, + { + "box": { + "id": "obj-111", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 290.0, 352.0, 139.0, 22.0 ], + "text": "prepend control_camera" + } + }, + { + "box": { + "id": "obj-105", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "bang", "bang" ], + "patching_rect": [ 688.8, 260.0, 32.0, 22.0 ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-104", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 645.0, 299.0, 35.0, 22.0 ], + "text": "reset" + } + }, + { + "box": { + "id": "obj-82", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 688.8, 299.0, 63.0, 22.0 ], + "text": "s reset_all" + } + }, + { + "box": { + "id": "obj-72", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 696.8, 229.0, 97.0, 20.0 ], + "text": "Reset all objects", + "textcolor": [ 1.0, 0.0, 0.0, 1.0 ] + } + }, + { + "box": { + "id": "obj-76", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "bang", "" ], + "patching_rect": [ 688.8, 197.0, 34.0, 22.0 ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-150", + "linecount": 7, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 1181.0, 313.0, 151.0, 100.0 ], + "text": "When flymode is enabled, the target can move in all direction. When disabled, its elevation (Y pos) is locked, and can be controlled only with the L/R triggers" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 1117.142857142857, 346.0, 51.0, 22.0 ], + "text": "flymode" + } + }, + { + "box": { + "id": "obj-66", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 129.85, 265.0, 35.0, 22.0 ], + "text": "reset" + } + }, + { + "box": { + "id": "obj-106", + "linecount": 2, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 137.85, 227.0, 85.0, 33.0 ], + "text": "Reset target position", + "textcolor": [ 1.0, 0.0, 0.0, 1.0 ] + } + }, + { + "box": { + "id": "obj-95", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 301.55, 242.0, 85.0, 20.0 ], + "text": "Select camera", + "textcolor": [ 1.0, 0.0, 0.0, 1.0 ] + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "bang", "" ], + "patching_rect": [ 608.95, 185.0, 34.0, 22.0 ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "bang", "" ], + "patching_rect": [ 529.0, 185.0, 34.0, 22.0 ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "bang", "" ], + "patching_rect": [ 289.55, 191.0, 34.0, 22.0 ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-81", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 289.55, 280.0, 31.0, 22.0 ], + "text": "cam" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 529.0, 260.0, 32.0, 22.0 ], + "text": "prev" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 599.95, 260.0, 31.0, 22.0 ], + "text": "next" + } + }, + { + "box": { + "id": "obj-168", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "bang", "" ], + "patching_rect": [ 1117.142857142857, 275.0, 34.0, 22.0 ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-141", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "bang", "" ], + "patching_rect": [ 129.85, 195.0, 34.0, 22.0 ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-68", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 758.8, 169.0, 57.0, 20.0 ], + "text": "back" + } + }, + { + "box": { + "id": "obj-69", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 688.8, 169.0, 57.0, 20.0 ], + "text": "start" + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-62", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 767.8, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-63", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 688.8, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "id": "obj-59", + "linecount": 2, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 1117.142857142857, 171.0, 70.0, 33.0 ], + "text": "right stick press" + } + }, + { + "box": { + "id": "obj-58", + "linecount": 2, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 1035.142857142857, 171.0, 59.0, 33.0 ], + "text": "left stick press" + } + }, + { + "box": { + "id": "obj-57", + "linecount": 2, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 957.1428571428571, 171.0, 63.20633784972222, 33.0 ], + "text": "right shoulder" + } + }, + { + "box": { + "id": "obj-56", + "linecount": 2, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 877.1428571428571, 170.0, 63.20633784972222, 33.0 ], + "text": "left shoulder" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 608.95, 169.0, 62.0, 20.0 ], + "text": "dpad right" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 529.0, 169.0, 55.0, 20.0 ], + "text": "dpad left" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 449.25, 169.0, 67.0, 20.0 ], + "text": "dpad down" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 369.4, 169.0, 52.0, 20.0 ], + "text": "dpad up" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 289.55, 169.0, 19.0, 20.0 ], + "text": "y" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 209.7, 169.0, 19.0, 20.0 ], + "text": "x" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 129.85, 169.0, 19.0, 20.0 ], + "text": "b" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 50.0, 169.0, 19.0, 20.0 ], + "text": "a" + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-34", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 877.1428571428571, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-35", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 1117.142857142857, 138.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-36", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 1037.142857142857, 138.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-37", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 957.1428571428571, 138.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-16", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 608.95, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-17", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 529.0, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-18", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 449.25, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-19", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 369.4, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-14", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 289.55, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-15", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 209.7, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-13", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 129.85, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "bgcolor": [ 0.407843137254902, 0.407843137254902, 0.407843137254902, 1.0 ], + "id": "obj-22", + "maxclass": "toggle", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "parameter_enable": 0, + "patching_rect": [ 50.0, 137.0, 24.0, 24.0 ] + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 15, + "numoutlets": 15, + "outlettype": [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" ], + "patching_rect": [ 50.0, 100.0, 1177.0, 22.0 ], + "text": "route button_a button_b button_x button_y button_dpad_up button_dpad_down button_dpad_left button_dpad_right button_start button_back button_left_shoulder button_right_shoulder button_left_stick button_right_stick" + } + }, + { + "box": { + "comment": "", + "id": "obj-197", + "index": 1, + "maxclass": "inlet", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 50.0, 40.0, 30.0, 30.0 ] + } + }, + { + "box": { + "comment": "", + "id": "obj-200", + "index": 1, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 290.0, 448.0, 30.0, 30.0 ] + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-200", 0 ], + "source": [ "obj-104", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-104", 0 ], + "source": [ "obj-105", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-82", 0 ], + "source": [ "obj-105", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-200", 0 ], + "source": [ "obj-111", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-141", 0 ], + "source": [ "obj-13", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-6", 0 ], + "source": [ "obj-14", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-66", 0 ], + "source": [ "obj-141", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-38", 0 ], + "source": [ "obj-16", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-78", 0 ], + "source": [ "obj-168", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-32", 0 ], + "source": [ "obj-17", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-197", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-13", 0 ], + "source": [ "obj-2", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-14", 0 ], + "source": [ "obj-2", 3 ] + } + }, + { + "patchline": { + "destination": [ "obj-15", 0 ], + "source": [ "obj-2", 2 ] + } + }, + { + "patchline": { + "destination": [ "obj-16", 0 ], + "source": [ "obj-2", 7 ] + } + }, + { + "patchline": { + "destination": [ "obj-17", 0 ], + "source": [ "obj-2", 6 ] + } + }, + { + "patchline": { + "destination": [ "obj-18", 0 ], + "source": [ "obj-2", 5 ] + } + }, + { + "patchline": { + "destination": [ "obj-19", 0 ], + "source": [ "obj-2", 4 ] + } + }, + { + "patchline": { + "destination": [ "obj-22", 0 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-34", 0 ], + "source": [ "obj-2", 10 ] + } + }, + { + "patchline": { + "destination": [ "obj-35", 0 ], + "source": [ "obj-2", 13 ] + } + }, + { + "patchline": { + "destination": [ "obj-36", 0 ], + "source": [ "obj-2", 12 ] + } + }, + { + "patchline": { + "destination": [ "obj-37", 0 ], + "source": [ "obj-2", 11 ] + } + }, + { + "patchline": { + "destination": [ "obj-62", 0 ], + "source": [ "obj-2", 9 ] + } + }, + { + "patchline": { + "destination": [ "obj-63", 0 ], + "source": [ "obj-2", 8 ] + } + }, + { + "patchline": { + "destination": [ "obj-77", 0 ], + "source": [ "obj-32", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-1", 0 ], + "source": [ "obj-33", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-168", 0 ], + "source": [ "obj-35", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-33", 0 ], + "source": [ "obj-38", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-81", 0 ], + "source": [ "obj-6", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-76", 0 ], + "source": [ "obj-63", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-200", 0 ], + "source": [ "obj-66", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-105", 0 ], + "source": [ "obj-76", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-1", 0 ], + "source": [ "obj-77", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-200", 0 ], + "source": [ "obj-78", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-111", 0 ], + "source": [ "obj-81", 0 ] + } + } + ] + }, + "patching_rect": [ 1299.0, 155.0, 115.0, 22.0 ], + "text": "p gamepad_buttons" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 239.0, 374.0, 55.0, 22.0 ], + "text": "route init" + } + }, + { + "box": { + "bubble": 1, + "id": "obj-35", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 315.0, 532.0, 272.0, 24.0 ], + "text": "Select which object to control in camera space" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 53.0, 612.0, 72.0, 22.0 ], + "text": "prepend set" + } + }, + { + "box": { + "color": [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 211.0, 589.0, 93.0, 22.0 ], + "text": "s to_tc.fpcontrol" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 211.0, 561.0, 61.0, 22.0 ], + "text": "control $2" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 59.0, 119.0, 1000.0, 755.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "comment": "", + "id": "obj-1", + "index": 1, + "maxclass": "inlet", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 40.0, 42.0, 30.0, 30.0 ] + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 139.0, 257.0, 32.0, 22.0 ], + "text": "gate" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "patching_rect": [ 249.0, 218.0, 22.0, 22.0 ], + "text": "t 1" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "int" ], + "patching_rect": [ 184.0, 217.0, 22.0, 22.0 ], + "text": "t 0" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 152.0, 148.0, 51.0, 22.0 ], + "text": "t l l" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 184.0, 186.0, 310.0, 22.0 ], + "text": "zl.sect jit.gl.skybox jit.gl.sketch jit.gl.camera jit.anim.node" + } + }, + { + "box": { + "bubble": 1, + "id": "obj-9", + "linecount": 4, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 499.0, 165.0, 200.0, 64.0 ], + "text": "For the purpose of a seamless experience, filtering out objects we don't want to control in this patch, even if you could!" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 139.0, 300.0, 96.0, 22.0 ], + "text": "prepend append" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 40.0, 148.0, 35.0, 22.0 ], + "text": "clear" + } + }, + { + "box": { + "comment": "", + "id": "obj-3", + "index": 1, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 40.0, 351.0, 30.0, 30.0 ] + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 3, + "outlettype": [ "", "", "" ], + "patching_rect": [ 40.0, 103.0, 131.0, 22.0 ], + "text": "route controllable done" + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-12", 0 ], + "source": [ "obj-10", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-13", 0 ], + "source": [ "obj-10", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-10", 0 ], + "source": [ "obj-11", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-14", 1 ], + "source": [ "obj-11", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-14", 0 ], + "source": [ "obj-12", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-14", 0 ], + "source": [ "obj-13", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-6", 0 ], + "source": [ "obj-14", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-11", 0 ], + "source": [ "obj-2", 2 ] + } + }, + { + "patchline": { + "destination": [ "obj-5", 0 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 0 ], + "source": [ "obj-5", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 0 ], + "source": [ "obj-6", 0 ] + } + } + ] + }, + "patching_rect": [ 129.0, 493.0, 133.0, 22.0 ], + "text": "p controllable_populate" + } + }, + { + "box": { + "id": "obj-5", + "linecount": 27, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 611.0, 459.0, 568.0, 368.0 ], + "text": "HOW TO USE IN YOUR OWN PATCH\n\n0. Add [tc.fpcontrol] and, depending on the controls you want, [p mouse_keyboard_controls] and/or [gamepad.drive] . You can also create your own input method as it relies on simple 'move X 0 Z' and 'turn X Y 0' messages\n\n1. In order to initialize [tc.fpcontrol] you need to send 'camera' followed by the name of your jit.gl.camera or a jit.anid.node attached to it. Will serve as the basis for moving objects in view space. This is necessary to control any object. A caveheat is that this message must be sent after the world has been initalized. You can [route init] from [jit.world] right outlet for that.\n\n2. Send 'controllable' to get a list of all controllable jit.gl objects in your patch.\n \n4. Send 'control_camera' followed by the the name of your jit.gl.camera or a jit.anid.node attached to it to control the camera. If flymode is disabled, the camera will remain on the same elevation (Y world pos) unless using the elevation controls (gamepad triggers). If flymode is enabled, the camera will go in the direction it faces and elevation controls will make it move up-down relatively to that direction. \n\n5. Send 'control' followed by the name of a jit.gl or jit.anim.node object to control it in camera space. When using the name of a jit.gl object, its top-level user-created jit.anim.node will be used as entry point for the controls from v8. If there is no user-created jit.anim.node used by this object, its implicit internal jit.anim.node will be used as entry point. When using the name of a jit.anim.node directly, it will be the entry point for the controls comming from v8. If show_bounds is enabled and the target object is a bounds-compatible jit.gl object (or a jit.anim.node controlling bounds-compatible jit.gl objects), its bounds will be displayed\n\n6. Use the mouse+keyboard or gamepad to control the object or camera." + } + }, + { + "box": { + "color": [ 1.0, 0.0, 0.0, 1.0 ], + "id": "obj-71", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 0, + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 478.0, 100.0, 405.0, 755.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 59.0, 595.0, 61.0, 22.0 ], + "text": "r reset_all" + } + }, + { + "box": { + "id": "obj-11", + "linecount": 2, + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 59.0, 625.0, 91.0, 35.0 ], + "text": "anim_reset, position 0 0 0" + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 163.0, 514.0, 54.0, 22.0 ], + "text": "deferlow" + } + }, + { + "box": { + "fontname": "Arial", + "fontsize": 13.0, + "id": "obj-39", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 531.0, 638.0, 137.0, 23.0 ], + "text": "read baluster-vase.gltf" + } + }, + { + "box": { + "fontname": "Arial", + "fontsize": 13.0, + "id": "obj-42", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 330.0, 638.0, 189.0, 23.0 ], + "text": "read pocillopora-damicornis.gltf" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 483.0, 547.0, 70.0, 22.0 ], + "text": "loadmess 2" + } + }, + { + "box": { + "format": 6, + "id": "obj-33", + "maxclass": "flonum", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "bang" ], + "parameter_enable": 0, + "patching_rect": [ 576.0, 576.0, 50.0, 22.0 ] + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 576.0, 603.0, 86.0, 22.0 ], + "text": "metalness $1" + } + }, + { + "box": { + "format": 6, + "id": "obj-35", + "maxclass": "flonum", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "bang" ], + "parameter_enable": 0, + "patching_rect": [ 483.0, 576.0, 50.0, 22.0 ] + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 483.0, 603.0, 87.0, 22.0 ], + "text": "roughness $1" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "bang" ], + "patching_rect": [ 163.0, 482.0, 58.0, 22.0 ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 163.0, 603.0, 264.0, 22.0 ], + "text": "substitute jit_gl_texture environment_texture" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 163.0, 638.0, 145.0, 22.0 ], + "text": "prepend sendmaterial 1" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 163.0, 671.0, 378.0, 22.0 ], + "text": "jit.gl.model @file baluster-vase.gltf @material_mode 3 @name model" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 249.0, 514.0, 100.0, 22.0 ], + "text": "jit.gl.skybox" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "jit_gl_texture", "" ], + "patching_rect": [ 163.0, 547.0, 293.0, 22.0 ], + "text": "jit.gl.environment @file umhlanga_sunrise_2k.exr" + } + }, + { + "box": { + "id": "obj-79", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 210.0, 301.0, 265.0, 22.0 ], + "text": "position 0 -2 0, rotatexyz -90 0 0, scale 10 10 10" + } + }, + { + "box": { + "id": "obj-86", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "bang", "bang" ], + "patching_rect": [ 27.0, 236.0, 32.0, 22.0 ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-85", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 27.0, 209.0, 61.0, 22.0 ], + "text": "r reset_all" + } + }, + { + "box": { + "id": "obj-172", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 119.0, 301.0, 84.0, 22.0 ], + "text": "position -4 0 0" + } + }, + { + "box": { + "id": "obj-170", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 27.0, 301.0, 80.0, 22.0 ], + "text": "position 4 0 0" + } + }, + { + "box": { + "id": "obj-142", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 27.0, 39.0, 61.0, 22.0 ], + "text": "r reset_all" + } + }, + { + "box": { + "id": "obj-83", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 40.0, 268.0, 68.0, 22.0 ], + "text": "anim_reset" + } + }, + { + "box": { + "id": "obj-143", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 440.0, 140.0, 559.0, 22.0 ], + "text": "jit.gl.light @shadows 1 @shadowquality hi @direction 0.4 -0.8 -1. @shadowblur 0.1 @shadowrange 50." + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 27.0, 71.0, 153.0, 22.0 ], + "text": "anim_reset, position 0 0 13" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 8, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 210.0, 236.0, 117.0, 22.0 ], + "text": "jit.gl.pbr @name pbr" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 27.0, 404.0, 613.0, 22.0 ], + "text": "jit.gl.gridshape @name plane @shape plane @material pbr @position 0 -2 0 @rotatexyz -90 0 0 @scale 10 10 10" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 27.0, 368.0, 383.0, 22.0 ], + "text": "jit.gl.plato @name plato @shape icosa @material pbr @position -4 0 0", + "varname": "icosa" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 27.0, 332.0, 405.0, 22.0 ], + "text": "jit.gl.gridshape @name torus @shape torus @material pbr @position 4 0 0", + "varname": "torus" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "jit_gl_texture", "" ], + "patching_rect": [ 27.0, 140.0, 238.0, 22.0 ], + "text": "jit.gl.camera @name cam @position 0 0 13", + "varname": "cam" + } + }, + { + "box": { + "attr": "direction", + "id": "obj-144", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 440.0, 109.0, 206.0, 22.0 ] + } + }, + { + "box": { + "attr": "position", + "id": "obj-80", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 27.0, 110.0, 275.0, 22.0 ] + } + }, + { + "box": { + "attr": "shadowrange", + "id": "obj-12", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 654.0, 109.0, 150.0, 22.0 ] + } + }, + { + "box": { + "attr": "position", + "id": "obj-1", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 812.0, 109.0, 210.0, 22.0 ] + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-143", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-20", 0 ], + "source": [ "obj-11", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-143", 0 ], + "source": [ "obj-12", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-30", 0 ], + "source": [ "obj-142", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-143", 0 ], + "source": [ "obj-144", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-5", 0 ], + "source": [ "obj-170", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-7", 0 ], + "source": [ "obj-172", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-29", 0 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-27", 0 ], + "source": [ "obj-26", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-20", 0 ], + "source": [ "obj-27", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-26", 0 ], + "source": [ "obj-29", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-4", 0 ], + "source": [ "obj-30", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-32", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-34", 0 ], + "source": [ "obj-33", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-27", 0 ], + "source": [ "obj-34", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-36", 0 ], + "source": [ "obj-35", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-27", 0 ], + "source": [ "obj-36", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-35", 0 ], + "source": [ "obj-37", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-20", 0 ], + "source": [ "obj-39", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-20", 0 ], + "source": [ "obj-42", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-11", 0 ], + "source": [ "obj-6", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-8", 0 ], + "source": [ "obj-79", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-4", 0 ], + "source": [ "obj-80", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-5", 0 ], + "order": 2, + "source": [ "obj-83", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-7", 0 ], + "order": 1, + "source": [ "obj-83", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-8", 0 ], + "order": 0, + "source": [ "obj-83", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-86", 0 ], + "source": [ "obj-85", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-170", 0 ], + "order": 2, + "source": [ "obj-86", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-172", 0 ], + "order": 1, + "source": [ "obj-86", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-79", 0 ], + "order": 0, + "source": [ "obj-86", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-83", 0 ], + "source": [ "obj-86", 1 ] + } + } + ] + }, + "patching_rect": [ 35.5, 179.0, 47.0, 22.0 ], + "text": "p world" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 59.0, 119.0, 1000.0, 755.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-89", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "bang" ], + "patching_rect": [ 44.0, 93.0, 48.0, 22.0 ], + "text": "del 100" + } + }, + { + "box": { + "id": "obj-110", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 44.0, 128.0, 44.0, 22.0 ], + "text": "resync" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 44.0, 60.0, 61.0, 22.0 ], + "text": "r reset_all" + } + }, + { + "box": { + "comment": "", + "id": "obj-59", + "index": 1, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 44.0, 210.0, 30.0, 30.0 ], + "varname": "u850021828" + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-59", 0 ], + "source": [ "obj-110", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-89", 0 ], + "source": [ "obj-21", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-110", 0 ], + "source": [ "obj-89", 0 ] + } + } + ] + }, + "patching_rect": [ 53.0, 405.0, 45.0, 22.0 ], + "text": "p reset" + } + }, + { + "box": { + "id": "obj-56", + "items": [ "jit.gl.gridshape", "torus", ",", "jit.gl.plato", "plato", ",", "jit.gl.gridshape", "plane", ",", "jit.gl.light", "u966000628", ",", "jit.gl.model", "model" ], + "maxclass": "umenu", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ "int", "", "" ], + "parameter_enable": 0, + "patching_rect": [ 129.0, 533.0, 184.0, 22.0 ] + } + }, + { + "box": { + "fontface": 1, + "fontsize": 14.0, + "id": "obj-28", + "linecount": 10, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 612.0, 277.0, 532.0, 163.0 ], + "text": "Controls mouse+keyboard gamepad (xbox)\n\nControl Cam C Y\nControl Object (prev-next) O-P L-R DPad\nMove WASD (qwerty) / ZQSD (azerty) L stick\nTurn mouse+click in window R stick\nElevation Q-Z (querty) / A-W (azerty) L-R triggers\nFlymode F R stick click\nReset obj E B\nReset scene R Start" + } + }, + { + "box": { + "bubble": 1, + "bubbleside": 0, + "id": "obj-23", + "linecount": 3, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 18.0, 684.0, 257.0, 66.0 ], + "text": "'control' outputs the given object name to be controlled (jit.gl or jit.anim.node), followed by the actual one being controlled (jit.anim.node)" + } + }, + { + "box": { + "color": [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], + "id": "obj-41", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 463.0, 189.0, 93.0, 22.0 ], + "text": "s to_tc.fpcontrol" + } + }, + { + "box": { + "color": [ 1.0, 0.611764705882353, 0.0, 1.0 ], + "id": "obj-38", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 747.0, 193.0, 612.0, 755.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 59.0, 119.0, 1000.0, 755.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-38", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 280.0, 206.0, 19.0, 20.0 ], + "text": "P" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 257.0, 206.0, 19.0, 20.0 ], + "text": "O" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 236.0, 206.0, 19.0, 20.0 ], + "text": "I" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 50.0, 230.0, 50.0, 22.0 ], + "text": "127" + } + }, + { + "box": { + "id": "obj-111", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 113.0, 421.0, 139.0, 22.0 ], + "text": "prepend control_camera" + } + }, + { + "box": { + "id": "obj-105", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "bang", "bang" ], + "patching_rect": [ 263.0, 294.0, 32.0, 22.0 ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-104", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 220.0, 333.0, 35.0, 22.0 ], + "text": "reset" + } + }, + { + "box": { + "id": "obj-82", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 263.0, 333.0, 63.0, 22.0 ], + "text": "s reset_all" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 137.28571428571433, 294.0, 51.0, 22.0 ], + "text": "flymode" + } + }, + { + "box": { + "id": "obj-81", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 113.0, 376.0, 31.0, 22.0 ], + "text": "cam" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 355.0, 376.0, 32.0, 22.0 ], + "text": "prev" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 397.0, 376.0, 35.0, 22.0 ], + "text": "next" + } + }, + { + "box": { + "id": "obj-28", + "linecount": 6, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 191.0, 100.0, 150.0, 87.0 ], + "text": "C: control camera\nF: flymode\nE: reset controlled object\nR: reset whole scene\nO: select previous object\nP: select next object" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 210.0, 206.0, 19.0, 20.0 ], + "text": "R" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 187.0, 206.0, 19.0, 20.0 ], + "text": "E" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 166.0, 206.0, 19.0, 20.0 ], + "text": "F" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 141.0, 206.0, 19.0, 20.0 ], + "text": "C" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 8, + "numoutlets": 8, + "outlettype": [ "", "", "", "", "", "", "", "" ], + "patching_rect": [ 113.0, 230.0, 189.0, 22.0 ], + "text": "route 99 102 101 114 105 111 112" + } + }, + { + "box": { + "id": "obj-1", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 4, + "outlettype": [ "int", "int", "int", "int" ], + "patching_rect": [ 113.0, 164.0, 50.5, 22.0 ], + "text": "key" + } + }, + { + "box": { + "comment": "", + "id": "obj-2", + "index": 1, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 150.76190199999996, 503.0, 30.0, 30.0 ], + "varname": "u926000679" + } + }, + { + "box": { + "comment": "", + "id": "obj-3", + "index": 2, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 370.0, 503.0, 30.0, 30.0 ], + "varname": "u735013105" + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-34", 1 ], + "order": 1, + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-4", 0 ], + "order": 0, + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-104", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-104", 0 ], + "source": [ "obj-105", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-82", 0 ], + "source": [ "obj-105", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-111", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 0 ], + "source": [ "obj-33", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-104", 0 ], + "source": [ "obj-4", 2 ] + } + }, + { + "patchline": { + "destination": [ "obj-105", 0 ], + "source": [ "obj-4", 3 ] + } + }, + { + "patchline": { + "destination": [ "obj-33", 0 ], + "source": [ "obj-4", 6 ] + } + }, + { + "patchline": { + "destination": [ "obj-77", 0 ], + "source": [ "obj-4", 5 ] + } + }, + { + "patchline": { + "destination": [ "obj-78", 0 ], + "source": [ "obj-4", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-81", 0 ], + "source": [ "obj-4", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 0 ], + "source": [ "obj-77", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-78", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-111", 0 ], + "source": [ "obj-81", 0 ] + } + } + ] + }, + "patching_rect": [ 425.0, 118.0, 111.0, 22.0 ], + "text": "p keyboard_control" + } + }, + { + "box": { + "comment": "", + "id": "obj-6", + "index": 2, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 517.0, 338.0, 30.0, 30.0 ], + "varname": "u197004444" + } + }, + { + "box": { + "bubble": 1, + "id": "obj-59", + "linecount": 2, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 126.0, 144.0, 264.0, 37.0 ], + "text": "dummy object to get the jit.anim.drive output without directly affecting a visible object" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 56.0, 152.0, 68.0, 22.0 ], + "text": "jit.gl.sketch" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 36.0, 118.0, 255.0, 22.0 ], + "text": "jit.anim.drive @ui_listen 1 @speed 4 @ease 0" + } + }, + { + "box": { + "attr": "ui_dict_layout", + "id": "obj-22", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 36.0, 85.0, 179.0, 22.0 ] + } + }, + { + "box": { + "comment": "", + "id": "obj-37", + "index": 1, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 36.0, 338.0, 30.0, 30.0 ], + "varname": "u896004443" + } + }, + { + "box": { + "attr": "speed", + "id": "obj-1", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 36.0, 52.0, 150.0, 22.0 ] + } + }, + { + "box": { + "attr": "ease", + "id": "obj-2", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 198.0, 52.0, 150.0, 22.0 ] + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-31", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-31", 0 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-31", 0 ], + "source": [ "obj-22", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-37", 0 ], + "order": 1, + "source": [ "obj-31", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-57", 0 ], + "order": 0, + "source": [ "obj-31", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-37", 0 ], + "source": [ "obj-4", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-6", 0 ], + "source": [ "obj-4", 1 ] + } + } + ] + }, + "patching_rect": [ 463.0, 121.0, 159.0, 22.0 ], + "text": "p mouse_keyboard_controls" + } + }, + { + "box": { + "color": [ 1.0, 0.612, 0.0, 1.0 ], + "id": "obj-189", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 720.0, 121.0, 598.0, 22.0 ], + "text": "gamepad.drive @l_deadzone 0.1 @r_deadzone 0.2 @l_sensitivity 0.4 @r_sensitivity 3 @trigger_sensitivity 0.4" + } + }, + { + "box": { + "id": "obj-125", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 239.0, 405.0, 143.0, 22.0 ], + "text": "camera cam, controllable" + } + }, + { + "box": { + "color": [ 0.0, 0.694117647058824, 0.482352941176471, 1.0 ], + "filename": "tc.controller.js", + "id": "obj-109", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 53.0, 448.0, 95.0, 22.0 ], + "saved_object_attributes": { + "embed": 0, + "parameter_enable": 0 + }, + "text": "tc.fpcontrol", + "textfile": { + "filename": "tc.controller.js", + "flags": 0, + "embed": 0, + "autowatch": 1 + } + } + }, + { + "box": { + "id": "obj-116", + "linecount": 8, + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 444.0, 987.0, 567.0, 114.0 ], + "text": "TODO:\n- use worldtolocal anim.node feature instead of manually calculating transform matrix?\n- better object rotation logic?\n- other ideas?\n\nWHAT DOESN'T WORK\n- using the implicit anim node of a jit.gl.camera doesn't work (need to declare an explicit anim node)\n- controlling a skybox doesn't work although it's technically possible and works when done manually" + } + }, + { + "box": { + "color": [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], + "id": "obj-132", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 110.0, 405.0, 91.0, 22.0 ], + "text": "r to_tc.fpcontrol" + } + }, + { + "box": { + "color": [ 0.282352941176471, 0.537254901960784, 0.905882352941176, 1.0 ], + "id": "obj-131", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 720.0, 189.0, 93.0, 22.0 ], + "text": "s to_tc.fpcontrol" + } + }, + { + "box": { + "dontreplace": 1, + "id": "obj-60", + "linecount": 2, + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 53.0, 647.0, 222.0, 35.0 ], + "text": "control camera_node_implicit camera_node_implicit" + } + }, + { + "box": { + "fontface": 0, + "fontname": "Arial", + "fontsize": 12.0, + "id": "obj-156", + "maxclass": "jit.fpsgui", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 202.5, 148.0, 80.0, 35.0 ] + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ "jit_matrix", "bang", "" ], + "patching_rect": [ 35.5, 121.0, 353.0, 22.0 ], + "text": "jit.world gpw @enable 1 @erase_color 0 0 0 1 @sync 0 @fps 60" + } + }, + { + "box": { + "id": "obj-1", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ "", "", "" ], + "patching_rect": [ 720.0, 81.0, 59.0, 22.0 ], + "text": "gamepad" + } + }, + { + "box": { + "attr": "floating", + "id": "obj-61", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 35.5, 91.0, 83.0, 22.0 ], + "text_width": 61.0 + } + }, + { + "box": { + "attr": "ease", + "id": "obj-2", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 53.0, 346.0, 97.0, 22.0 ], + "text_width": 46.0 + } + }, + { + "box": { + "attr": "flymode", + "id": "obj-11", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 53.0, 318.0, 87.0, 22.0 ], + "text_width": 63.0 + } + }, + { + "box": { + "attr": "show_bounds", + "id": "obj-49", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 53.0, 376.0, 121.0, 22.0 ] + } + }, + { + "box": { + "attr": "enable", + "id": "obj-55", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 35.5, 63.0, 83.0, 22.0 ], + "text_width": 61.0 + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-189", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-26", 0 ], + "source": [ "obj-109", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-33", 0 ], + "source": [ "obj-109", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-109", 0 ], + "source": [ "obj-11", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-109", 0 ], + "source": [ "obj-125", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-109", 0 ], + "source": [ "obj-132", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-131", 0 ], + "source": [ "obj-189", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-202", 0 ], + "source": [ "obj-189", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-56", 0 ], + "source": [ "obj-19", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-109", 0 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-21", 0 ], + "source": [ "obj-202", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-6", 0 ], + "source": [ "obj-202", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-56", 0 ], + "source": [ "obj-26", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-156", 0 ], + "source": [ "obj-3", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-4", 0 ], + "source": [ "obj-3", 2 ] + } + }, + { + "patchline": { + "destination": [ "obj-32", 0 ], + "source": [ "obj-31", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-60", 0 ], + "source": [ "obj-33", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-20", 0 ], + "source": [ "obj-38", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-41", 0 ], + "source": [ "obj-38", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-125", 0 ], + "source": [ "obj-4", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-109", 0 ], + "source": [ "obj-49", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 0 ], + "source": [ "obj-55", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-31", 0 ], + "source": [ "obj-56", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 0 ], + "source": [ "obj-61", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-109", 0 ], + "source": [ "obj-62", 0 ] + } + } + ], + "autosave": 0 + } +} \ No newline at end of file diff --git a/init/tc.jit.anim.control_init.txt b/init/tc.jit.anim.control_init.txt index a9f323c..bf4f130 100644 --- a/init/tc.jit.anim.control_init.txt +++ b/init/tc.jit.anim.control_init.txt @@ -1,3 +1 @@ -max setdefinepackage tc.jit.anim.control; -max define tc.jit.anim.control v8 @filename tc.controller.js; -max setdefinepackage "" ""; \ No newline at end of file +max define tc.fpcontrol v8 @filename tc.controller.js; \ No newline at end of file diff --git a/patchers/gamepad.drive.maxpat b/patchers/gamepad.drive.maxpat new file mode 100644 index 0000000..241b4f7 --- /dev/null +++ b/patchers/gamepad.drive.maxpat @@ -0,0 +1,1037 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ 478.0, 193.0, 1000.0, 755.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-8", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 358.0, 201.0, 124.0, 20.0 ], + "text": "TURN: RIGHT STICK" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "bang" ], + "patching_rect": [ 562.0, 171.0, 58.0, 22.0 ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "newobj", + "numinlets": 8, + "numoutlets": 8, + "outlettype": [ "", "", "", "", "", "", "", "" ], + "patching_rect": [ 518.0, 257.0, 530.0, 22.0 ], + "text": "route l_deadzone l_sensitivity trigger_sensitivity invert_triggers r_deadzone r_sensitivity invert_r_y" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 562.0, 201.0, 72.0, 22.0 ], + "text": "patcherargs" + } + }, + { + "box": { + "id": "obj-53", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 440.0, 227.0, 56.0, 20.0 ], + "text": "R stick Y" + } + }, + { + "box": { + "id": "obj-54", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 350.0, 227.0, 56.0, 20.0 ], + "text": "R stick X" + } + }, + { + "box": { + "id": "obj-55", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 366.0, 563.0, 123.0, 22.0 ], + "text": "join 3" + } + }, + { + "box": { + "id": "obj-56", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "float", "float" ], + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "dsp.gen", + "rect": [ 34.0, 377.0, 1045.0, 450.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 42.0, 190.0, 22.0 ], + "text": "param stick_sensitivity 1. @min 0." + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 70.0, 191.0, 22.0 ], + "text": "param invert_x 1 @min 0 @max 1" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 97.0, 191.0, 22.0 ], + "text": "param invert_y 0 @min 0 @max 1" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 14.0, 218.0, 22.0 ], + "text": "param dead_zone 0. @min 0. @max 1." + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 570.0, 15.0, 19.0, 20.0 ], + "text": "Y" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 85.0, 15.0, 19.0, 20.0 ], + "text": "X" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 535.0, 416.0, 35.0, 22.0 ], + "text": "out 1" + } + }, + { + "box": { + "code": "// Scaled radial deadzone\r\n// Src: https://github.com/Minimuino/thumbstick-deadzones\r\nx = in1;\r\ny = in2; \r\n\r\nmag = sqrt(x*x + y*y);\r\nout_x = 0;\r\nout_y = 0;\r\n\r\nif (mag >= dead_zone) {\r\n scaled_mag = (mag - dead_zone) / (1 - dead_zone);\r\n out_x = x * scaled_mag / mag;\r\n out_y = y * scaled_mag / mag;\r\n}\r\n\r\nout_x = int(invert_x) == 1 ? -1 * out_x : out_x;\r\nout_y = int(invert_y) == 1 ? -1 * out_y : out_y;\r\n\r\nout_x = clip(out_x, -1, 1);\r\nout_y = clip(out_y, -1, 1);\r\n\r\nout_x *= stick_sensitivity;\r\nout_y *= stick_sensitivity;\r\n\r\nout1 = out_x;\r\nout2 = out_y;", + "fontface": 0, + "fontname": "", + "fontsize": 12.0, + "id": "obj-6", + "maxclass": "codebox", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 50.0, 70.0, 504.0, 329.0 ] + } + }, + { + "box": { + "id": "obj-1", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 50.0, 14.0, 28.0, 22.0 ], + "text": "in 1" + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 535.0, 14.0, 28.0, 22.0 ], + "text": "in 2" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 50.0, 416.0, 35.0, 22.0 ], + "text": "out 2" + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-6", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-6", 1 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-4", 0 ], + "source": [ "obj-6", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-7", 0 ], + "source": [ "obj-6", 1 ] + } + } + ] + }, + "patching_rect": [ 366.0, 521.0, 71.0, 22.0 ], + "text": "gen @t turn" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 366.0, 625.0, 60.0, 22.0 ], + "text": "zl.change" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 366.0, 257.0, 107.0, 22.0 ], + "text": "join 2 @triggers -1" + } + }, + { + "box": { + "attr": "dead_zone", + "id": "obj-59", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 411.0, 415.0, 150.0, 22.0 ] + } + }, + { + "box": { + "attr": "stick_sensitivity", + "id": "obj-60", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 429.0, 447.0, 150.0, 22.0 ] + } + }, + { + "box": { + "comment": "Passes messages from gamepad that haven't been used", + "id": "obj-9", + "index": 2, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 1029.0, 444.0, 30.0, 30.0 ] + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 801.0, 325.0, 128.0, 20.0 ], + "text": "RIGHT STICK - TURN" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 87.0, 201.0, 198.0, 20.0 ], + "text": "MOVE: LEFT STICK + TRIGGERS " + } + }, + { + "box": { + "comment": "move and turn messages to use with jit.anim.node", + "id": "obj-2", + "index": 1, + "maxclass": "outlet", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 62.0, 736.0, 30.0, 30.0 ] + } + }, + { + "box": { + "id": "obj-1", + "maxclass": "newobj", + "numinlets": 7, + "numoutlets": 7, + "outlettype": [ "", "", "", "", "", "", "" ], + "patching_rect": [ 62.0, 135.0, 475.0, 22.0 ], + "text": "route axis_left_x axis_left_y axis_left_trigger axis_right_trigger axis_right_x axis_right_y" + } + }, + { + "box": { + "id": "obj-118", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 62.0, 668.0, 85.0, 22.0 ], + "text": "prepend move" + } + }, + { + "box": { + "id": "obj-75", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 366.0, 668.0, 77.0, 22.0 ], + "text": "prepend turn" + } + }, + { + "box": { + "comment": "Connect to gamepad object", + "id": "obj-113", + "index": 1, + "maxclass": "inlet", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 62.0, 57.0, 30.0, 30.0 ] + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 272.0, 232.0, 55.0, 20.0 ], + "text": "R trigger" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 195.0, 232.0, 52.0, 20.0 ], + "text": "L trigger" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 124.0, 232.0, 53.0, 20.0 ], + "text": "L stick Y" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 62.0, 232.0, 53.0, 20.0 ], + "text": "L stick X" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 62.0, 563.0, 86.0, 22.0 ], + "text": "join 3" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "newobj", + "numinlets": 4, + "numoutlets": 3, + "outlettype": [ "float", "float", "float" ], + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 2, + "revision": 0, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "dsp.gen", + "rect": [ 34.0, 377.0, 1045.0, 450.0 ], + "integercoordinates": 1, + "boxes": [ + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 136.0, 225.0, 22.0 ], + "text": "param invert_triggers 0 @min 0 @max 1" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 599.0, 416.0, 35.0, 22.0 ], + "text": "out 2" + } + }, + { + "box": { + "code": "l_trig = in1;\r\nr_trig = in2;\r\nelev = l_trig > r_trig ? -1 * l_trig : r_trig;\r\nelev *= trigger_sensitivity;\r\nelev = int(invert_triggers) ? -1 * elev : elev;\r\nout1 = elev;", + "fontface": 0, + "fontname": "", + "fontsize": 12.0, + "id": "obj-21", + "maxclass": "codebox", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 599.0, 256.0, 374.0, 143.0 ] + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 161.0, 197.0, 22.0 ], + "text": "param trigger_sensitivity 1. @min 0" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 42.0, 190.0, 22.0 ], + "text": "param stick_sensitivity 1. @min 0." + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 989.0, 217.0, 55.0, 20.0 ], + "text": "R trigger" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 633.0, 217.0, 52.0, 20.0 ], + "text": "L trigger" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 954.0, 216.0, 28.0, 22.0 ], + "text": "in 4" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 599.0, 216.0, 28.0, 22.0 ], + "text": "in 3" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 570.0, 15.0, 53.0, 20.0 ], + "text": "L stick Y" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 85.0, 15.0, 53.0, 20.0 ], + "text": "L stick X" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 70.0, 191.0, 22.0 ], + "text": "param invert_x 0 @min 0 @max 1" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 97.0, 191.0, 22.0 ], + "text": "param invert_y 1 @min 0 @max 1" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 535.0, 416.0, 35.0, 22.0 ], + "text": "out 3" + } + }, + { + "box": { + "code": "// Scaled radial deadzone\r\n// Src: https://github.com/Minimuino/thumbstick-deadzones\r\nx = in1;\r\ny = in2; \r\n\r\nmag = sqrt(x*x + y*y);\r\nout_x = 0;\r\nout_y = 0;\r\n\r\nif (mag >= dead_zone) {\r\n scaled_mag = (mag - dead_zone) / (1 - dead_zone);\r\n out_x = x * scaled_mag / mag;\r\n out_y = y * scaled_mag / mag;\r\n}\r\n\r\nout_x = int(invert_x) == 1 ? -1 * out_x : out_x;\r\nout_y = int(invert_y) == 1 ? -1 * out_y : out_y;\r\n\r\nout_x = clip(out_x, -1, 1);\r\nout_y = clip(out_y, -1, 1);\r\n\r\nout_x *= stick_sensitivity;\r\nout_y *= stick_sensitivity;\r\n\r\nout1 = out_x;\r\nout2 = out_y;", + "fontface": 0, + "fontname": "", + "fontsize": 12.0, + "id": "obj-6", + "maxclass": "codebox", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 50.0, 70.0, 504.0, 329.0 ] + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 659.0, 14.0, 218.0, 22.0 ], + "text": "param dead_zone 0. @min 0. @max 1." + } + }, + { + "box": { + "id": "obj-1", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 50.0, 14.0, 28.0, 22.0 ], + "text": "in 1" + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 0, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 535.0, 14.0, 28.0, 22.0 ], + "text": "in 2" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ 50.0, 416.0, 35.0, 22.0 ], + "text": "out 1" + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-6", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-21", 0 ], + "source": [ "obj-14", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-21", 1 ], + "source": [ "obj-15", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-6", 1 ], + "source": [ "obj-2", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-22", 0 ], + "source": [ "obj-21", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-4", 0 ], + "source": [ "obj-6", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-7", 0 ], + "source": [ "obj-6", 1 ] + } + } + ] + }, + "patching_rect": [ 62.0, 521.0, 86.0, 22.0 ], + "text": "gen @t move" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ "", "" ], + "patching_rect": [ 62.0, 625.0, 60.0, 22.0 ], + "text": "zl.change" + } + }, + { + "box": { + "id": "obj-292", + "maxclass": "newobj", + "numinlets": 4, + "numoutlets": 1, + "outlettype": [ "" ], + "patching_rect": [ 62.0, 257.0, 247.0, 22.0 ], + "text": "join 4 @triggers -1" + } + }, + { + "box": { + "attr": "dead_zone", + "id": "obj-15", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 93.0, 369.0, 150.0, 22.0 ] + } + }, + { + "box": { + "attr": "stick_sensitivity", + "id": "obj-32", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 131.0, 427.0, 150.0, 22.0 ] + } + }, + { + "box": { + "attr": "trigger_sensitivity", + "id": "obj-33", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 111.0, 398.0, 150.0, 22.0 ] + } + }, + { + "box": { + "attr": "invert_y", + "id": "obj-65", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 440.0, 476.0, 150.0, 22.0 ] + } + }, + { + "box": { + "attr": "invert_triggers", + "id": "obj-66", + "maxclass": "attrui", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ "" ], + "parameter_enable": 0, + "patching_rect": [ 142.0, 455.0, 150.0, 22.0 ] + } + } + ], + "lines": [ + { + "patchline": { + "destination": [ "obj-292", 3 ], + "source": [ "obj-1", 3 ] + } + }, + { + "patchline": { + "destination": [ "obj-292", 2 ], + "source": [ "obj-1", 2 ] + } + }, + { + "patchline": { + "destination": [ "obj-292", 1 ], + "source": [ "obj-1", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-292", 0 ], + "source": [ "obj-1", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-58", 1 ], + "source": [ "obj-1", 5 ] + } + }, + { + "patchline": { + "destination": [ "obj-58", 0 ], + "source": [ "obj-1", 4 ] + } + }, + { + "patchline": { + "destination": [ "obj-62", 0 ], + "source": [ "obj-1", 6 ] + } + }, + { + "patchline": { + "destination": [ "obj-1", 0 ], + "source": [ "obj-113", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-118", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-25", 0 ], + "source": [ "obj-15", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-3", 0 ], + "source": [ "obj-19", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-19", 2 ], + "source": [ "obj-25", 2 ] + } + }, + { + "patchline": { + "destination": [ "obj-19", 1 ], + "source": [ "obj-25", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-19", 0 ], + "source": [ "obj-25", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-25", 0 ], + "source": [ "obj-292", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-118", 0 ], + "source": [ "obj-3", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-25", 0 ], + "source": [ "obj-32", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-25", 0 ], + "source": [ "obj-33", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-61", 0 ], + "source": [ "obj-5", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-57", 0 ], + "source": [ "obj-55", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-55", 1 ], + "source": [ "obj-56", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-55", 0 ], + "source": [ "obj-56", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-75", 0 ], + "source": [ "obj-57", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-56", 0 ], + "source": [ "obj-58", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-56", 0 ], + "source": [ "obj-59", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-56", 0 ], + "source": [ "obj-60", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-62", 0 ], + "source": [ "obj-61", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-15", 0 ], + "source": [ "obj-62", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-32", 0 ], + "source": [ "obj-62", 1 ] + } + }, + { + "patchline": { + "destination": [ "obj-33", 0 ], + "source": [ "obj-62", 2 ] + } + }, + { + "patchline": { + "destination": [ "obj-59", 0 ], + "source": [ "obj-62", 4 ] + } + }, + { + "patchline": { + "destination": [ "obj-60", 0 ], + "source": [ "obj-62", 5 ] + } + }, + { + "patchline": { + "destination": [ "obj-65", 0 ], + "source": [ "obj-62", 6 ] + } + }, + { + "patchline": { + "destination": [ "obj-66", 0 ], + "source": [ "obj-62", 3 ] + } + }, + { + "patchline": { + "destination": [ "obj-9", 0 ], + "source": [ "obj-62", 7 ] + } + }, + { + "patchline": { + "destination": [ "obj-56", 0 ], + "source": [ "obj-65", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-25", 0 ], + "source": [ "obj-66", 0 ] + } + }, + { + "patchline": { + "destination": [ "obj-2", 0 ], + "source": [ "obj-75", 0 ] + } + } + ] + } +} \ No newline at end of file