Files
tc.controller/help/tc.controller_demo.maxhelp

2781 lines
133 KiB
Plaintext

{
"patcher": {
"fileversion": 1,
"appversion": {
"major": 9,
"minor": 2,
"revision": 0,
"architecture": "x64",
"modernui": 1
},
"classnamespace": "box",
"rect": [ 131.0, 100.0, 1444.0, 848.0 ],
"integercoordinates": 1,
"boxes": [
{
"box": {
"id": "obj-9",
"maxclass": "message",
"numinlets": 2,
"numoutlets": 1,
"outlettype": [ "" ],
"patching_rect": [ 361.0, 405.0, 75.0, 22.0 ],
"text": "camera cam"
}
},
{
"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": 1,
"numoutlets": 1,
"outlettype": [ "" ],
"patching_rect": [ 211.0, 405.0, 125.0, 22.0 ],
"text": "loadmess controllable"
}
},
{
"box": {
"bubble": 1,
"id": "obj-35",
"maxclass": "comment",
"numinlets": 1,
"numoutlets": 0,
"patching_rect": [ 315.0, 532.0, 256.0, 24.0 ],
"text": "Select which object to control in view 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": 26,
"maxclass": "comment",
"numinlets": 1,
"numoutlets": 0,
"patching_rect": [ 611.0, 459.0, 568.0, 355.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 use [tc.fpcontrol] you to tell it which camera (or jit.anid.node attached to it) to use. You can pass that as an attribute as shown here. This camera/anim.node will serve as the basis for moving objects in view space. This is necessary to control any object.\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", "u034001065", ",", "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": {
"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, 149.0, 22.0 ],
"saved_object_attributes": {
"embed": 0,
"parameter_enable": 0
},
"text": "tc.fpcontrol @camera cam",
"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": [ 612.0, 834.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 create an anim.node for it)\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",
"maxclass": "message",
"numinlets": 2,
"numoutlets": 1,
"outlettype": [ "" ],
"patching_rect": [ 53.0, 647.0, 222.0, 22.0 ],
"text": "control u998010725 u998010725"
}
},
{
"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, 313.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, 285.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, 343.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
}
},
{
"box": {
"attr": "camera",
"id": "obj-7",
"maxclass": "attrui",
"numinlets": 1,
"numoutlets": 1,
"outlettype": [ "" ],
"parameter_enable": 0,
"patching_rect": [ 53.0, 371.0, 186.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-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-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-109", 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 ]
}
},
{
"patchline": {
"destination": [ "obj-109", 0 ],
"source": [ "obj-7", 0 ]
}
},
{
"patchline": {
"destination": [ "obj-109", 0 ],
"source": [ "obj-9", 0 ]
}
}
],
"autosave": 0
}
}