Forums > Jitter

patch for game-like navigation through gl space

August 12, 2007 | 6:20 pm

Hello eveyone,

I’ve been doing a bunch of projects lately that require intuitive movement through gl space, and I thought I would post a clean and condensed version of the navigation system that I’ve been using. Any suggested improvements or comments would be great.

Drop this into your jitter patch and connect it to your jit.gl.render. Here are the navigation instructions: I’ve also attached a sample patch with ReadMe file.

MOVEMENT:

Use the mouse/trackpad to control your lookat point.
Use the keyboard to move the camera

In this version of the patch, moving forward/backward/left/right = moving parallel to the x-z plane. You can look up or down while moving forward/backward/left/right, but this will not affect your movement on the y axis. Moving up/down = moving along the y axis. You can look around as you move up/down, but this will not affect your movement along the x and z axes. I find this to be the more convenient way to navigate and view gl space.

‘w’ moves camera forward
‘s’ moves camera backward
‘a’ moves camera left
‘d’ moves camera right
COMBINE THE ABOVE KEYS FOR DIAGONAL MOVEMEMENT

‘r’ moves camera up
‘e’ moves camera down

OTHER CONTROLS:

‘k’ toggles movement on/off
‘console’ opens the console, where you can change movement speed and view current camera coordinates
‘z’ zooms the camera view in

max v2;
#N vpatcher 4 275 502 819;
#P window setfont Geneva 10.;
#P window linecount 1;
#P comment 335 503 131 196618 http://www.zacharyseldess.com;
#P window setfont Geneva 9.;
#N vpatcher 381 642 593 813;
#P outlet 66 135 15 0;
#P window setfont Geneva 9.;
#P newex 66 49 40 196617 itoa;
#P newex 66 27 40 196617 key;
#P newex 66 92 19 196617 t b;
#P newex 66 71 88 196617 match c o n s o l e;
#P message 66 114 30 196617 open;
#P connect 3 0 4 0;
#P connect 4 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 0 0;
#P connect 0 0 5 0;
#P pop;
#P newobj 67 180 77 196617 p open_console;
#B color 12;
#P comment 74 466 77 196617 ‘z’ zooms view;
#P comment 54 165 113 196617 ‘console’ opens console;
#N vpatcher 844 573 1010 812;
#P window setfont Geneva 9.;
#P newex 69 78 27 196617 gate;
#P newex 25 78 27 196617 gate;
#P newex 25 22 51 196617 r navigate;
#P outlet 25 199 15 0;
#P newex 25 172 90 196617 prepend lens_angle;
#P message 69 127 38 196617 45 200;
#P newex 25 149 40 196617 line 45.;
#P message 25 127 38 196617 10 700;
#P newex 69 102 40 196617 sel 122;
#P newex 86 48 40 196617 keyup;
#P newex 25 102 40 196617 sel 122;
#P newex 42 48 40 196617 key;
#P connect 9 0 10 0;
#P connect 10 0 1 0;
#P connect 1 0 4 0;
#P connect 4 0 5 0;
#P fasten 6 0 5 0 74 145 30 145;
#P connect 5 0 7 0;
#P connect 7 0 8 0;
#P connect 0 0 10 1;
#P fasten 9 0 11 0 30 43 74 43;
#P connect 11 0 3 0;
#P connect 3 0 6 0;
#P connect 2 0 11 1;
#P pop;
#P newobj 71 444 41 196617 p zoom;
#B color 12;
#P newex 26 444 27 196617 t l l;
#P newex 67 202 47 196617 pcontrol;
#N vpatcher 809 44 1005 241;
#P window setfont Geneva 9.;
#P window linecount 1;
#P hidden newex 10 102 50 196617 qlim 100;
#P hidden newex 54 23 60 196617 loadmess 1;
#N vpatcher 344 81 581 348;
#P outlet 11 230 15 0;
#P window setfont Geneva 9.;
#P newex 11 164 27 196617 t b l;
#P message 115 94 93 196617 window flags float;
#P message 11 94 103 196617 window flags nofloat;
#P message 76 138 74 196617 savewindow 0;
#P message 11 138 74 196617 savewindow 1;
#P message 115 111 76 196617 window notitle;
#P message 11 77 105 196617 window flags nogrow;
#P message 115 60 95 196617 window flags close;
#P message 11 60 105 196617 window flags noclose;
#P message 11 43 105 196617 window flags nozoom;
#P message 11 189 68 196617 window exec;
#P message 115 77 95 196617 window flags grow;
#P message 115 43 95 196617 window flags zoom;
#P message 11 111 66 196617 window title;
#P hidden connect 0 0 13 0;
#P hidden connect 8 0 13 0;
#P hidden connect 12 0 13 0;
#P hidden connect 2 0 13 0;
#P hidden connect 6 0 13 0;
#P hidden connect 1 0 13 0;
#P hidden connect 11 0 13 0;
#P hidden connect 7 0 13 0;
#P hidden connect 5 0 13 0;
#P hidden connect 4 0 13 0;
#P hidden connect 9 0 13 0;
#P hidden connect 10 0 13 0;
#P connect 13 0 3 0;
#P connect 3 0 14 0;
#P fasten 13 1 14 0 33 223 16 223;
#P pop;
#P hidden newobj 84 156 107 196617 p thispatcher_scripts;
#B color 5;
#N thispatcher;
#Q window flags nogrow close nozoom nofloat;
#Q window size 809 44 1005 241;
#Q window title;
#Q window exec;
#Q savewindow 1;
#Q end;
#P hidden newobj 84 177 61 196617 thispatcher;
#B color 5;
#P hidden inlet 172 32 15 0;
#P hidden newex 124 118 50 196617 s ySpeed;
#P hidden newex 124 96 40 196617 / 100.;
#P hidden newex 124 56 55 196617 s xzSpeed;
#P hidden newex 124 34 40 196617 / 100.;
#P hidden inlet 10 76 15 0;
#P hidden newex 10 123 112 196617 unpack camera 0. 0. 0.;
#P comment 150 153 13 196617 Z;
#P comment 91 153 14 196617 Y;
#P comment 32 153 14 196617 X;
#P flonum 128 168 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 69 168 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 10 168 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 41 137 115 196617 CAMERA COORDINATES;
#P flonum 73 108 48 9 0.001 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 36 89 131 196617 (in world units per second);
#P comment 18 75 160 196617 SET MOVEMENT SPEED ON Y AXIS;
#P flonum 73 47 48 9 0.001 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 36 28 131 196617 (in world units per second);
#P comment 11 14 177 196617 SET MOVEMENT SPEED ON X-Z PLANE;
#P user panel 7 8 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 7 69 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 7 130 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P hidden connect 17 0 26 0;
#P hidden connect 26 0 16 0;
#P hidden connect 16 1 10 0;
#P hidden connect 16 2 11 0;
#P hidden connect 25 0 5 0;
#P hidden connect 25 0 8 0;
#P hidden connect 24 0 23 0;
#P hidden connect 5 0 18 0;
#P hidden connect 18 0 19 0;
#P hidden connect 8 0 20 0;
#P hidden connect 20 0 21 0;
#P hidden connect 16 3 12 0;
#P pop 1;
#P newobj 26 230 51 196617 p console;
#B color 12;
#P newex 259 133 146 196617 if $i1 > 600 then 600 else $i1;
#N vpatcher 537 390 735 802;
#P origin 0 4;
#P window setfont Geneva 9.;
#P newex 106 221 34 196617 * -1.;
#P newex 106 199 27 196617 f;
#P newex 63 199 27 196617 f;
#P newex 123 163 50 196617 r ySpeed;
#N vpatcher 701 471 920 755;
#P outlet 128 154 15 0;
#P outlet 165 154 15 0;
#P outlet 45 243 15 0;
#P window setfont Geneva 9.;
#P newex 45 217 27 196617 != 0;
#P newex 45 195 70 196617 expr $i1+$i2;
#P newex 45 172 70 196617 bondo;
#P newex 22 23 56 196617 r navigate;
#P inlet 107 66 15 0;
#P newex 49 119 21 196617 t 0;
#P newex 22 119 21 196617 t 0;
#P newex 22 95 65 196617 sel 114 101;
#P newex 144 119 31 196617 t 1 b;
#P newex 107 119 31 196617 t 1 b;
#P newex 22 70 29 196617 gate;
#P newex 107 95 84 196617 sel 114 101;
#P newex 41 47 40 196617 keyup;
#P connect 9 0 2 0;
#P connect 2 0 5 0;
#P connect 5 0 6 0;
#P connect 0 0 2 1;
#P connect 6 0 10 0;
#P connect 3 0 10 0;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 13 0;
#P connect 5 1 7 0;
#P connect 7 0 10 1;
#P connect 4 0 10 1;
#P connect 10 1 11 1;
#P connect 8 0 1 0;
#P connect 1 0 3 0;
#P connect 3 1 15 0;
#P connect 1 1 4 0;
#P connect 4 1 14 0;
#P pop;
#P newobj 20 122 97 196617 p movingUpDown?;
#B color 12;
#P newex 20 93 27 196617 t i i;
#N comlet camera x;
#P outlet 20 367 15 0;
#P newex 20 199 30 196617 t b b;
#P message 20 323 37 196617 $1 10;
#P newex 20 343 40 196617 line 0.;
#P newex 20 276 27 196617 t f f;
#P toggle 20 152 15 0;
#P newex 20 253 27 196617 f 0.;
#P newex 37 298 36 196617 + 0.;
#P newex 20 173 57 196617 qmetro 10;
#P newex 39 47 40 196617 key;
#P newex 20 70 29 196617 gate;
#P newex 20 21 56 196617 r navigate;
#P comment 76 292 79 196617 speed on y axis;
#P user panel 16 118 104 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P connect 2 0 3 0;
#P connect 3 0 14 0;
#P connect 14 0 15 0;
#P connect 15 0 8 0;
#P connect 8 0 5 0;
#P connect 5 0 12 0;
#P connect 12 0 7 0;
#P connect 7 0 9 0;
#P connect 9 0 11 0;
#P connect 11 0 10 0;
#P connect 10 0 13 0;
#P fasten 6 0 7 1 42 318 128 318 128 246 42 246;
#P connect 9 1 6 0;
#P connect 4 0 3 1;
#P connect 15 1 17 0;
#P connect 17 0 6 1;
#P connect 19 0 6 1;
#P connect 16 0 17 1;
#P connect 15 2 18 0;
#P connect 18 0 19 0;
#P connect 16 0 18 1;
#P pop;
#P newobj 98 274 67 196617 p moveYaxis;
#B color 12;
#P user panel 94 271 75 23;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P newex 183 44 36 196617 t i i;
#P newex 297 389 52 196617 change 0.;
#P newex 259 409 52 196617 change 0.;
#P newex 221 429 52 196617 change 0.;
#P toggle 183 65 15 0;
#P newex 183 86 57 196617 qmetro 10;
#N vpatcher 737 44 1026 444;
#P origin 0 4;
#P window setfont Geneva 9.;
#P window linecount 0;
#P newex 97 173 55 196617 r xzSpeed;
#P newex 139 331 40 196617 line 0.;
#P message 139 310 37 196617 $1 10;
#P newex 26 331 40 196617 line 0.;
#N vpatcher 613 361 987 659;
#P outlet 120 253 15 0;
#P window setfont Geneva 9.;
#P newex 120 227 27 196617 != 0;
#P newex 120 205 115 196617 expr $i1+$i2+$i3+$i4;
#P newex 120 182 117 196617 bondo 4;
#P newex 220 32 51 196617 r navigate;
#P inlet 11 75 15 0;
#P newex 310 128 19 196617 t 0;
#P newex 280 128 19 196617 t 0;
#P newex 250 128 19 196617 t 0;
#P newex 220 128 19 196617 t 0;
#P newex 220 104 131 196617 sel 119 115 97 100;
#P newex 101 128 19 196617 t 1;
#P newex 71 128 19 196617 t 1;
#P newex 41 128 19 196617 t 1;
#P newex 11 128 19 196617 t 1;
#P newex 220 79 27 196617 gate;
#P newex 11 104 131 196617 sel 119 115 97 100;
#P newex 237 56 40 196617 keyup;
#P connect 12 0 1 0;
#P connect 1 0 3 0;
#P connect 1 1 4 0;
#P connect 1 2 5 0;
#P connect 1 3 6 0;
#P connect 3 0 14 0;
#P connect 8 0 14 0;
#P connect 14 0 15 0;
#P connect 15 0 16 0;
#P connect 16 0 17 0;
#P connect 4 0 14 1;
#P connect 9 0 14 1;
#P connect 14 1 15 1;
#P connect 5 0 14 2;
#P connect 10 0 14 2;
#P connect 14 2 15 2;
#P connect 13 0 2 0;
#P connect 2 0 7 0;
#P connect 7 0 8 0;
#P connect 6 0 14 3;
#P connect 11 0 14 3;
#P connect 14 3 15 3;
#P connect 0 0 2 1;
#P connect 7 1 9 0;
#P connect 7 2 10 0;
#P connect 7 3 11 0;
#P pop;
#P newobj 26 122 56 196617 p moving?;
#B color 12;
#N vpatcher 49 47 614 666;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 307 33 51 196617 r navigate;
#P inlet 81 102 15 0;
#P message 16 420 14 196617 1;
#P toggle 16 322 15 0;
#P newex 427 155 29 196617 t 0 0;
#P newex 397 155 29 196617 t 0 0;
#P newex 367 155 29 196617 t 0 0;
#P newex 337 155 29 196617 t 0 0;
#P newex 337 131 192 196617 sel 119 115 97 100 114 101;
#P newex 171 155 29 196617 t 1 1;
#P newex 141 155 29 196617 t 1 1;
#P newex 111 155 29 196617 t 1 1;
#P newex 81 155 29 196617 t 1 1;
#P outlet 87 568 15 0;
#P newex 307 80 27 196617 gate;
#P newex 426 419 30 196617 sel 1;
#P newex 349 419 30 196617 sel 1;
#P newex 270 419 30 196617 sel 1;
#P newex 193 419 30 196617 sel 1;
#P newex 193 397 27 196617 i;
#P newex 270 397 27 196617 i;
#P newex 349 397 27 196617 i;
#P newex 426 397 27 196617 i;
#P newex 307 106 40 196617 t b b i;
#P newex 26 367 27 196617 i;
#P newex 61 367 27 196617 i;
#P newex 96 367 27 196617 i;
#P newex 131 367 27 196617 i;
#P message 443 467 14 196617 1;
#P newex 409 467 29 196617 t 0 8;
#P message 366 467 14 196617 1;
#P newex 332 467 29 196617 t 0 7;
#P message 287 467 14 196617 1;
#P newex 253 467 29 196617 t 0 6;
#P message 210 467 14 196617 1;
#P newex 176 467 29 196617 t 0 5;
#P newex 87 521 44 196617 gate 1 1;
#P message 121 420 14 196617 4;
#P message 86 420 14 196617 3;
#P message 51 420 14 196617 2;
#P toggle 51 322 15 0;
#P newex 51 397 30 196617 sel 1;
#P newex 16 397 30 196617 sel 1;
#P toggle 121 322 15 0;
#P toggle 86 322 15 0;
#P newex 121 397 30 196617 sel 1;
#P newex 86 397 30 196617 sel 1;
#P newex 409 443 44 196617 togEdge;
#P newex 332 443 44 196617 togEdge;
#P newex 253 443 44 196617 togEdge;
#P newex 176 443 44 196617 togEdge;
#P toggle 409 397 15 0;
#P newex 409 366 48 196617 &&;
#P newex 409 343 48 196617 bondo;
#P toggle 447 322 15 0;
#P toggle 409 322 15 0;
#P toggle 332 397 15 0;
#P newex 332 366 48 196617 &&;
#P newex 332 343 48 196617 bondo;
#P toggle 370 322 15 0;
#P toggle 332 322 15 0;
#P toggle 253 397 15 0;
#P newex 253 366 48 196617 &&;
#P newex 253 343 48 196617 bondo;
#P toggle 291 322 15 0;
#P toggle 253 322 15 0;
#P toggle 176 397 15 0;
#P newex 176 366 48 196617 &&;
#P newex 176 343 48 196617 bondo;
#P toggle 214 322 15 0;
#P toggle 176 322 15 0;
#P newex 81 131 192 196617 sel 119 115 97 100 114 101;
#P newex 324 57 40 196617 keyup;
#P window linecount 2;
#P comment 350 103 140 196617 on any keyup , check to see if single key still depressed!;
#P connect 66 0 70 0;
#P lcolor 9;
#P connect 61 0 70 0;
#P fasten 70 0 31 0 21 398;
#P connect 49 0 31 0;
#P connect 31 0 71 0;
#P connect 50 0 49 0;
#P lcolor 4;
#P connect 70 0 49 1;
#P connect 67 0 33 0;
#P lcolor 9;
#P connect 62 0 33 0;
#P connect 33 0 32 0;
#P connect 48 0 32 0;
#P connect 32 0 34 0;
#P connect 50 0 48 0;
#P lcolor 4;
#P connect 33 0 48 1;
#P connect 72 0 2 0;
#P connect 2 0 61 0;
#P connect 68 0 29 0;
#P lcolor 9;
#P connect 63 0 29 0;
#P fasten 29 0 27 0 91 398;
#P connect 47 0 27 0;
#P connect 27 0 35 0;
#P fasten 44 0 37 0 414 501 92 501;
#P lcolor 9;
#P fasten 42 0 37 0 337 501 92 501;
#P lcolor 9;
#P fasten 40 0 37 0 258 501 92 501;
#P lcolor 9;
#P fasten 38 0 37 0 181 501 92 501;
#P lcolor 9;
#P fasten 41 0 37 0 292 501 92 501;
#P lcolor 9;
#P fasten 43 0 37 0 371 501 92 501;
#P lcolor 9;
#P fasten 45 0 37 0 448 501 92 501;
#P lcolor 9;
#P fasten 39 0 37 0 215 501 92 501;
#P lcolor 9;
#P fasten 44 1 60 0 433 551 92 551;
#P fasten 42 1 60 0 356 551 92 551;
#P fasten 40 1 60 0 277 551 92 551;
#P fasten 38 1 60 0 200 551 92 551;
#P connect 37 0 60 0;
#P connect 50 0 47 0;
#P lcolor 4;
#P connect 2 1 62 0;
#P connect 29 0 47 1;
#P connect 69 0 30 0;
#P lcolor 9;
#P connect 64 0 30 0;
#P connect 30 0 28 0;
#P connect 46 0 28 0;
#P connect 28 0 36 0;
#P fasten 34 0 37 1 56 477 126 477;
#P fasten 35 0 37 1 91 477 126 477;
#P connect 36 0 37 1;
#P fasten 71 0 37 1 21 477 126 477;
#P connect 50 0 46 0;
#P lcolor 4;
#P connect 2 2 63 0;
#P connect 30 0 46 1;
#P connect 2 3 64 0;
#P connect 66 1 3 0;
#P lcolor 9;
#P connect 61 1 3 0;
#P connect 3 0 5 0;
#P connect 5 0 6 0;
#P connect 6 0 7 0;
#P connect 7 0 23 0;
#P connect 23 0 38 0;
#P connect 55 0 38 0;
#P connect 50 1 54 0;
#P lcolor 4;
#P connect 54 0 55 0;
#P connect 6 0 54 1;
#P connect 23 1 39 0;
#P connect 68 1 4 0;
#P lcolor 9;
#P connect 63 1 4 0;
#P connect 4 0 5 1;
#P connect 5 1 6 1;
#P connect 61 1 8 0;
#P connect 66 1 8 0;
#P lcolor 9;
#P connect 8 0 10 0;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 24 0;
#P connect 24 0 40 0;
#P connect 56 0 40 0;
#P connect 50 1 53 0;
#P lcolor 4;
#P connect 53 0 56 0;
#P connect 11 0 53 1;
#P connect 24 1 41 0;
#P connect 69 1 9 0;
#P lcolor 9;
#P connect 64 1 9 0;
#P connect 9 0 10 1;
#P connect 10 1 11 1;
#P connect 73 0 59 0;
#P connect 59 0 50 0;
#P connect 1 0 59 1;
#P connect 67 1 13 0;
#P lcolor 9;
#P connect 62 1 13 0;
#P connect 13 0 15 0;
#P connect 15 0 16 0;
#P connect 16 0 17 0;
#P connect 17 0 25 0;
#P connect 25 0 42 0;
#P connect 57 0 42 0;
#P connect 50 2 65 0;
#P connect 65 0 66 0;
#P connect 50 1 52 0;
#P lcolor 4;
#P connect 52 0 57 0;
#P connect 16 0 52 1;
#P connect 25 1 43 0;
#P connect 65 1 67 0;
#P connect 63 1 14 0;
#P connect 68 1 14 0;
#P lcolor 9;
#P connect 14 0 15 1;
#P connect 15 1 16 1;
#P connect 65 2 68 0;
#P connect 62 1 18 0;
#P connect 67 1 18 0;
#P lcolor 9;
#P connect 18 0 20 0;
#P connect 20 0 21 0;
#P connect 21 0 22 0;
#P connect 22 0 26 0;
#P connect 58 0 44 0;
#P connect 26 0 44 0;
#P connect 50 1 51 0;
#P lcolor 4;
#P connect 51 0 58 0;
#P connect 65 3 69 0;
#P connect 21 0 51 1;
#P connect 26 1 45 0;
#P connect 64 1 19 0;
#P connect 69 1 19 0;
#P lcolor 9;
#P connect 19 0 20 1;
#P connect 20 1 21 1;
#P pop;
#P newobj 173 122 72 196617 p whichKeys?;
#B color 12;
#P newex 26 93 27 196617 t i i;
#N vpatcher 668 545 1259 711;
#P window setfont Geneva 9.;
#P window linecount 1;
#P comment 493 109 81 196617 backward/right;
#P comment 428 92 75 196617 backward/left;
#P comment 361 109 75 196617 forward/right;
#P comment 297 92 66 196617 forward/left;
#P newex 491 71 64 196617 + 2.356194;
#P newex 424 71 63 196617 – 2.356194;
#P newex 357 71 64 196617 + 0.785398;
#P newex 290 71 63 196617 – 0.785398;
#P comment 237 92 44 196617 right;
#P comment 174 92 39 196617 left;
#P comment 96 92 67 196617 backward;
#P outlet 22 126 15 0;
#P inlet 493 25 15 0;
#P inlet 22 25 15 0;
#P newex 22 48 481 196617 gate 8;
#P newex 89 71 63 196617 – 3.141593;
#P newex 223 71 64 196617 + 1.570796;
#P newex 156 71 63 196617 – 1.570796;
#P window linecount 0;
#P comment 32 92 58 196617 forward;
#P connect 5 0 4 0;
#P connect 4 0 7 0;
#P fasten 3 0 7 0 94 106 27 106;
#P fasten 1 0 7 0 161 106 27 106;
#P fasten 2 0 7 0 228 106 27 106;
#P fasten 11 0 7 0 295 106 27 106;
#P fasten 12 0 7 0 362 106 27 106;
#P fasten 13 0 7 0 429 106 27 106;
#P fasten 14 0 7 0 496 106 27 106;
#P connect 4 1 3 0;
#P connect 4 2 1 0;
#P connect 4 3 2 0;
#P connect 4 4 11 0;
#P connect 4 5 12 0;
#P connect 4 6 13 0;
#P connect 4 7 14 0;
#P connect 6 0 4 1;
#P pop;
#P newobj 173 174 73 196617 p changeAngle;
#B color 12;
#P newex 173 254 29 196617 * 1.;
#P newex 60 253 29 196617 * 1.;
#P inlet 236 148 15 0;
#N comlet camera z;
#P outlet 139 356 15 0;
#N comlet camera x;
#P outlet 26 356 15 0;
#P window linecount 2;
#P comment 186 273 53 196617 speed on z axis;
#P window linecount 1;
#P newex 173 230 71 196617 expr sin($f1);
#P newex 139 253 27 196617 t f f;
#P newex 139 230 27 196617 f 1.;
#P newex 156 279 27 196617 + 0.;
#P newex 26 194 30 196617 t b b;
#P newex 60 228 73 196617 expr cos($f1);
#P newex 26 253 27 196617 t f f;
#P toggle 26 152 15 0;
#P newex 26 230 27 196617 f 0.;
#P newex 43 279 27 196617 + 0.;
#P newex 26 173 57 196617 qmetro 10;
#P newex 45 47 40 196617 key;
#P newex 26 70 29 196617 gate;
#P newex 26 21 56 196617 r navigate;
#P window linecount 2;
#P comment 73 271 55 196617 speed on x axis;
#P user panel 169 170 81 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 169 118 80 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 22 118 64 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window linecount 1;
#P message 26 310 37 196617 $1 10;
#P connect 5 0 6 0;
#P connect 6 0 26 0;
#P connect 26 0 28 0;
#P connect 28 0 11 0;
#P connect 11 0 8 0;
#P connect 8 0 14 0;
#P connect 14 0 10 0;
#P connect 10 0 12 0;
#P connect 12 0 0 0;
#P connect 0 0 29 0;
#P connect 29 0 20 0;
#P fasten 9 0 10 1 48 299 135 299 135 222 48 222;
#P connect 12 1 9 0;
#P connect 7 0 6 1;
#P fasten 25 0 13 0 178 205 65 205;
#P lcolor 7;
#P connect 13 0 23 0;
#P connect 23 0 9 1;
#P connect 32 0 23 1;
#P fasten 14 1 16 0 51 215 144 215;
#P connect 16 0 17 0;
#P connect 17 0 30 0;
#P connect 30 0 31 0;
#P connect 31 0 21 0;
#P fasten 15 0 16 1 161 299 248 299 248 222 161 222;
#P connect 17 1 15 0;
#P fasten 26 1 27 0 48 114 178 114;
#P connect 27 0 25 0;
#P connect 25 0 18 0;
#P lcolor 7;
#P connect 18 0 24 0;
#P connect 24 0 15 1;
#P connect 32 0 24 1;
#P connect 22 0 25 1;
#P pop;
#P newobj 62 308 82 196617 p moveX-Zaxes;
#B color 12;
#P comment 326 450 78 196617 Looking Around;
#P newex 183 23 56 196617 r navigate;
#N vpatcher 208 44 433 263;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 42 108 56 196617 s navigate;
#P window linecount 2;
#P message 112 160 85 196617 ; max showcursor;
#P message 29 160 80 196617 ; max hidecursor;
#P window linecount 1;
#P newex 29 131 41 196617 sel 1 0;
#P toggle 29 84 15 0;
#P newex 29 60 44 196617 sel 107;
#P window linecount 0;
#P newex 29 34 40 196617 key;
#P connect 0 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 3 0;
#P connect 3 0 4 0;
#P connect 2 0 6 0;
#P fasten 3 1 5 0 49 153 117 153;
#P pop;
#P newobj 365 27 87 196617 p navigateOn/Off;
#B color 12;
#P newex 221 288 164 196617 expr 100 * (cos($f1) * cos($f2));
#P newex 297 328 162 196617 expr 100 * (sin($f1) * cos($f2));
#P newex 259 308 110 196617 expr 100 * (sin($f1));
#P newex 259 366 27 196617 + 0.;
#P newex 221 366 27 196617 + 0.;
#P newex 297 366 27 196617 + 1.;
#P comment 271 351 14 196617 y;
#P newex 259 208 104 196617 scale 0 600 1.5 -1.5;
#P newex 259 156 30 196617 t i i;
#P newex 221 156 33 196617 t i i;
#N vpatcher 435 44 733 372;
#P window setfont Geneva 9.;
#P window linecount 1;
#P hidden newex 31 47 56 196617 t 200 300;
#P hidden newex 31 26 48 196617 loadbang;
#P newex 14 126 48 196617 pack 0 0;
#P newex 52 103 27 196617 i;
#P newex 14 103 27 196617 i;
#P newex 14 73 32 196617 sel 1;
#P inlet 14 48 15 0;
#P newex 111 199 60 196617 pack 1 300;
#P newex 89 231 72 196617 pack 798 300;
#P newex 111 170 32 196617 sel 1;
#P inlet 89 48 15 0;
#P window linecount 2;
#P message 89 271 96 196617 ; max pupdate $1 $2;
#P window linecount 1;
#P newex 111 147 42 196617 >= 799;
#P newex 89 125 32 196617 sel 0;
#P newex 89 103 158 196617 if $i1 < = 0 || $i1 >= 799 then $i1;
#P inlet 251 48 15 0;
#P window linecount 2;
#P comment 114 36 122 196617 pointer loops between 0 and 800 horizontal pixels;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 14 0;
#P hidden connect 15 0 16 0;
#P connect 6 0 12 1;
#P hidden connect 16 0 12 1;
#P fasten 11 0 13 0 19 96 57 96;
#P connect 13 0 14 1;
#P connect 1 0 13 1;
#P hidden connect 16 1 13 1;
#P connect 6 0 2 0;
#P connect 2 0 3 0;
#P connect 3 0 8 0;
#P connect 8 0 5 0;
#P fasten 9 0 5 0 116 258 94 258;
#P fasten 14 0 5 0 19 264 94 264;
#P connect 3 1 4 0;
#P connect 4 0 7 0;
#P connect 7 0 9 0;
#P fasten 1 0 8 1 256 223 156 223;
#P fasten 1 0 9 1 256 188 166 188;
#P pop;
#P newobj 209 185 80 196617 p pupdate;
#B color 12;
#P outlet 43 489 15 0;
#P newex 221 237 164 196617 scale 0 800 -3.141593 3.141593;
#P comment 233 351 14 196617 x;
#P newex 183 108 165 196617 mousestate;
#P newex 183 452 125 196617 pak lookat 0. 0. 1.;
#P newex 26 416 119 196617 pak camera 0. 0. 1.;
#P comment 307 351 13 196617 z;
#P window linecount 2;
#P comment 348 50 127 196617 ‘k’ turns on/off navigation with mouse and keyboard;
#P user panel 178 279 287 197;
#X brgb 116 118 230;
#X frgb 0 0 0;
#X border 0;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 204 181 90 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 360 23 97 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 58 304 90 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P comment 366 200 101 196617 < -- not quite looking straight up and down;
#P user panel 22 226 59 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 67 440 49 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window setfont Geneva 10.;
#P window linecount 1;
#P comment 335 486 87 196618 Zachary Seldess;
#P user panel 332 481 133 41;
#X brgb 255 75 75;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P fasten 43 0 41 0 31 468 16 468 16 222 31 222;
#P connect 11 0 43 0;
#P connect 44 0 16 0;
#P connect 43 1 16 0;
#P fasten 12 0 16 0 188 480 48 480;
#P fasten 15 0 31 0 226 260 67 260;
#P lcolor 15;
#P connect 31 0 11 1;
#P connect 47 0 42 0;
#P connect 42 0 41 1;
#P connect 39 0 11 2;
#P connect 31 1 11 3;
#P connect 29 0 37 0;
#P connect 37 0 33 0;
#P connect 33 0 32 0;
#P connect 32 0 13 0;
#P connect 37 1 17 0;
#P connect 13 1 18 0;
#P connect 18 0 15 0;
#P lcolor 15;
#P connect 15 0 27 0;
#P lcolor 15;
#P connect 27 0 23 0;
#P connect 23 0 34 0;
#P connect 34 0 12 1;
#P connect 31 0 23 1;
#P connect 18 1 17 1;
#P connect 13 2 40 0;
#P connect 40 0 19 0;
#P connect 19 0 20 0;
#P connect 20 0 25 0;
#P connect 25 0 24 0;
#P connect 24 0 35 0;
#P connect 35 0 12 2;
#P connect 39 0 24 1;
#P connect 19 1 17 2;
#P fasten 15 0 26 0 226 260 302 260;
#P lcolor 15;
#P connect 26 0 22 0;
#P connect 22 0 36 0;
#P connect 36 0 12 3;
#P connect 31 1 22 1;
#P fasten 20 0 27 1 264 228 380 228;
#P fasten 20 0 26 1 264 228 454 228;
#P pop;


August 13, 2007 | 1:28 am

I made a few small improvements. Here it is – also attached an updated zip file

Zach

max v2;
#N vpatcher 4 275 502 819;
#P window setfont Geneva 10.;
#P comment 335 503 131 196618 http://www.zacharyseldess.com;
#P window setfont Geneva 9.;
#N vpatcher 381 642 593 813;
#P outlet 66 135 15 0;
#P window setfont Geneva 9.;
#P newex 66 49 40 196617 itoa;
#P newex 66 27 40 196617 key;
#P newex 66 92 19 196617 t b;
#P newex 66 71 88 196617 match c o n s o l e;
#P message 66 114 30 196617 open;
#P connect 3 0 4 0;
#P connect 4 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 0 0;
#P connect 0 0 5 0;
#P pop;
#P newobj 67 180 77 196617 p open_console;
#B color 12;
#P comment 74 466 77 196617 ‘z’ zooms view;
#P comment 54 165 113 196617 ‘console’ opens console;
#N vpatcher 844 573 1010 812;
#P window setfont Geneva 9.;
#P newex 69 78 27 196617 gate;
#P newex 25 78 27 196617 gate;
#P newex 25 22 51 196617 r navigate;
#P outlet 25 199 15 0;
#P newex 25 172 90 196617 prepend lens_angle;
#P message 69 127 38 196617 45 200;
#P newex 25 149 40 196617 line 45.;
#P message 25 127 38 196617 10 700;
#P newex 69 102 40 196617 sel 122;
#P newex 86 48 40 196617 keyup;
#P newex 25 102 40 196617 sel 122;
#P newex 42 48 40 196617 key;
#P connect 9 0 10 0;
#P connect 10 0 1 0;
#P connect 1 0 4 0;
#P fasten 6 0 5 0 74 145 30 145;
#P connect 4 0 5 0;
#P connect 5 0 7 0;
#P connect 7 0 8 0;
#P connect 0 0 10 1;
#P fasten 9 0 11 0 30 43 74 43;
#P connect 11 0 3 0;
#P connect 3 0 6 0;
#P connect 2 0 11 1;
#P pop;
#P newobj 71 444 41 196617 p zoom;
#B color 12;
#P newex 26 444 27 196617 t l l;
#P newex 67 202 47 196617 pcontrol;
#N vpatcher 809 44 1005 241;
#P window setfont Geneva 9.;
#P window linecount 1;
#P hidden newex 10 102 50 196617 qlim 100;
#P hidden newex 54 23 60 196617 loadmess 1;
#N vpatcher 344 81 581 348;
#P outlet 11 230 15 0;
#P window setfont Geneva 9.;
#P newex 11 164 27 196617 t b l;
#P message 115 94 93 196617 window flags float;
#P message 11 94 103 196617 window flags nofloat;
#P message 76 138 74 196617 savewindow 0;
#P message 11 138 74 196617 savewindow 1;
#P message 115 111 76 196617 window notitle;
#P message 11 77 105 196617 window flags nogrow;
#P message 115 60 95 196617 window flags close;
#P message 11 60 105 196617 window flags noclose;
#P message 11 43 105 196617 window flags nozoom;
#P message 11 189 68 196617 window exec;
#P message 115 77 95 196617 window flags grow;
#P message 115 43 95 196617 window flags zoom;
#P message 11 111 66 196617 window title;
#P hidden connect 10 0 13 0;
#P hidden connect 9 0 13 0;
#P hidden connect 4 0 13 0;
#P hidden connect 5 0 13 0;
#P hidden connect 7 0 13 0;
#P hidden connect 11 0 13 0;
#P hidden connect 1 0 13 0;
#P hidden connect 6 0 13 0;
#P hidden connect 2 0 13 0;
#P hidden connect 12 0 13 0;
#P hidden connect 8 0 13 0;
#P hidden connect 0 0 13 0;
#P connect 13 0 3 0;
#P fasten 13 1 14 0 33 223 16 223;
#P connect 3 0 14 0;
#P pop;
#P hidden newobj 84 156 107 196617 p thispatcher_scripts;
#B color 5;
#N thispatcher;
#Q window flags nogrow close nozoom nofloat;
#Q window size 809 44 1005 241;
#Q window title;
#Q window exec;
#Q savewindow 1;
#Q end;
#P hidden newobj 84 177 61 196617 thispatcher;
#B color 5;
#P hidden inlet 172 32 15 0;
#P hidden newex 124 118 50 196617 s ySpeed;
#P hidden newex 124 96 40 196617 / 100.;
#P hidden newex 124 56 55 196617 s xzSpeed;
#P hidden newex 124 34 40 196617 / 100.;
#P hidden inlet 10 76 15 0;
#P hidden newex 10 123 112 196617 unpack camera 0. 0. 0.;
#P comment 150 153 13 196617 Z;
#P comment 91 153 14 196617 Y;
#P comment 32 153 14 196617 X;
#P flonum 128 168 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 69 168 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 10 168 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 41 137 115 196617 CAMERA COORDINATES;
#P flonum 73 108 48 9 0.001 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 36 89 131 196617 (in world units per second);
#P comment 18 75 160 196617 SET MOVEMENT SPEED ON Y AXIS;
#P flonum 73 47 48 9 0.001 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 36 28 131 196617 (in world units per second);
#P comment 11 14 177 196617 SET MOVEMENT SPEED ON X-Z PLANE;
#P user panel 7 8 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 7 69 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 7 130 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P hidden connect 17 0 26 0;
#P hidden connect 26 0 16 0;
#P hidden connect 16 1 10 0;
#P hidden connect 16 2 11 0;
#P hidden connect 25 0 5 0;
#P hidden connect 25 0 8 0;
#P hidden connect 24 0 23 0;
#P hidden connect 5 0 18 0;
#P hidden connect 18 0 19 0;
#P hidden connect 8 0 20 0;
#P hidden connect 20 0 21 0;
#P hidden connect 16 3 12 0;
#P pop 1;
#P newobj 26 230 51 196617 p console;
#B color 12;
#P newex 259 133 146 196617 if $i1 > 600 then 600 else $i1;
#N vpatcher 534 407 734 819;
#P origin 0 4;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 40 231 27 196617 f;
#P window linecount 0;
#P newex 107 202 34 196617 * -1.;
#P newex 107 180 27 196617 f;
#P newex 78 180 27 196617 f;
#P newex 124 144 50 196617 r ySpeed;
#N vpatcher 738 489 955 819;
#P outlet 73 287 15 0;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 45 262 38 196617 t i b;
#P newex 45 239 50 196617 deferlow;
#P outlet 128 163 15 0;
#P outlet 165 163 15 0;
#P outlet 45 287 15 0;
#P window linecount 0;
#P newex 45 216 27 196617 != 0;
#P newex 45 194 70 196617 expr $i1+$i2;
#P newex 45 171 70 196617 bondo;
#P newex 22 22 56 196617 r navigate;
#P inlet 107 65 15 0;
#P newex 49 118 21 196617 t 0;
#P newex 22 118 21 196617 t 0;
#P newex 22 94 65 196617 sel 114 101;
#P newex 144 118 31 196617 t 1 b;
#P newex 107 118 31 196617 t 1 b;
#P newex 22 69 29 196617 gate;
#P newex 107 94 84 196617 sel 114 101;
#P newex 41 46 40 196617 keyup;
#P connect 9 0 2 0;
#P connect 2 0 5 0;
#P connect 5 0 6 0;
#P connect 0 0 2 1;
#P connect 3 0 10 0;
#P connect 6 0 10 0;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 16 0;
#P connect 16 0 17 0;
#P connect 17 0 13 0;
#P connect 5 1 7 0;
#P connect 17 1 18 0;
#P connect 4 0 10 1;
#P connect 7 0 10 1;
#P connect 10 1 11 1;
#P connect 8 0 1 0;
#P connect 1 0 3 0;
#P connect 3 1 15 0;
#P connect 1 1 4 0;
#P connect 4 1 14 0;
#P pop;
#P newobj 20 103 97 196617 p movingUpDown?;
#B color 12;
#N comlet camera x;
#P outlet 20 369 15 0;
#P newex 20 180 30 196617 t b b;
#P message 20 325 37 196617 $1 10;
#P newex 20 345 40 196617 line 0.;
#P newex 20 278 27 196617 t f f;
#P toggle 20 133 15 0;
#P newex 20 255 30 196617 f 0.;
#P newex 37 300 36 196617 + 0.;
#P newex 20 154 57 196617 qmetro 10;
#P newex 39 48 40 196617 key;
#P newex 20 71 29 196617 gate;
#P newex 20 22 56 196617 r navigate;
#P comment 76 294 47 196617 speed on y axis;
#P user panel 16 99 105 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P connect 2 0 3 0;
#P connect 3 0 14 0;
#P connect 14 0 8 0;
#P connect 8 0 5 0;
#P connect 5 0 12 0;
#P connect 12 0 7 0;
#P connect 7 0 9 0;
#P connect 9 0 11 0;
#P connect 11 0 10 0;
#P connect 10 0 13 0;
#P connect 14 1 6 0;
#P lcolor 4;
#P connect 9 1 6 0;
#P connect 4 0 3 1;
#P connect 12 1 19 0;
#P connect 19 0 7 1;
#P fasten 6 0 19 1 42 321 126 321 126 223 62 223;
#P connect 18 0 6 1;
#P connect 16 0 6 1;
#P connect 14 2 16 0;
#P connect 15 0 16 1;
#P connect 14 3 17 0;
#P connect 17 0 18 0;
#P connect 15 0 17 1;
#P pop;
#P newobj 98 274 67 196617 p moveYaxis;
#B color 12;
#P user panel 94 271 75 23;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P newex 183 44 36 196617 t i i;
#P newex 297 389 52 196617 change 0.;
#P newex 259 409 52 196617 change 0.;
#P newex 221 429 52 196617 change 0.;
#P toggle 183 65 15 0;
#P newex 183 86 57 196617 qmetro 10;
#N vpatcher 737 44 1034 517;
#P origin 0 4;
#P window setfont Geneva 9.;
#P window linecount 1;
#P hidden newex 193 232 48 196617 loadbang;
#P window linecount 0;
#P newex 26 118 50 196617 deferlow;
#P newex 156 264 27 196617 f;
#P newex 43 264 27 196617 f;
#P newex 111 193 55 196617 r xzSpeed;
#P newex 139 400 40 196617 line 0.;
#P message 139 379 37 196617 $1 10;
#P newex 26 400 40 196617 line 0.;
#N vpatcher 613 361 992 691;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 120 243 36 196617 t i i;
#P newex 146 266 32 196617 sel 1;
#P outlet 146 291 15 0;
#P outlet 120 291 15 0;
#P window linecount 0;
#P newex 120 221 27 196617 != 0;
#P newex 120 199 115 196617 expr $i1+$i2+$i3+$i4;
#P newex 120 176 117 196617 bondo 4;
#P newex 220 26 51 196617 r navigate;
#P inlet 11 69 15 0;
#P newex 310 122 19 196617 t 0;
#P newex 280 122 19 196617 t 0;
#P newex 250 122 19 196617 t 0;
#P newex 220 122 19 196617 t 0;
#P newex 220 98 131 196617 sel 119 115 97 100;
#P newex 101 122 19 196617 t 1;
#P newex 71 122 19 196617 t 1;
#P newex 41 122 19 196617 t 1;
#P newex 11 122 19 196617 t 1;
#P newex 220 73 27 196617 gate;
#P newex 11 98 131 196617 sel 119 115 97 100;
#P newex 237 50 40 196617 keyup;
#P connect 12 0 1 0;
#P connect 1 0 3 0;
#P connect 1 1 4 0;
#P connect 1 2 5 0;
#P connect 1 3 6 0;
#P connect 8 0 14 0;
#P connect 3 0 14 0;
#P connect 14 0 15 0;
#P connect 15 0 16 0;
#P connect 16 0 20 0;
#P connect 20 0 17 0;
#P connect 20 1 19 0;
#P connect 19 0 18 0;
#P connect 9 0 14 1;
#P connect 4 0 14 1;
#P connect 14 1 15 1;
#P connect 10 0 14 2;
#P connect 5 0 14 2;
#P connect 14 2 15 2;
#P connect 13 0 2 0;
#P connect 2 0 7 0;
#P connect 7 0 8 0;
#P connect 11 0 14 3;
#P connect 6 0 14 3;
#P connect 14 3 15 3;
#P connect 0 0 2 1;
#P connect 7 1 9 0;
#P connect 7 2 10 0;
#P connect 7 3 11 0;
#P pop;
#P newobj 26 142 56 196617 p moving?;
#B color 12;
#N vpatcher 49 47 614 666;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 307 33 51 196617 r navigate;
#P inlet 81 102 15 0;
#P message 16 420 14 196617 1;
#P toggle 16 322 15 0;
#P newex 427 155 29 196617 t 0 0;
#P newex 397 155 29 196617 t 0 0;
#P newex 367 155 29 196617 t 0 0;
#P newex 337 155 29 196617 t 0 0;
#P newex 337 131 192 196617 sel 119 115 97 100 114 101;
#P newex 171 155 29 196617 t 1 1;
#P newex 141 155 29 196617 t 1 1;
#P newex 111 155 29 196617 t 1 1;
#P newex 81 155 29 196617 t 1 1;
#P outlet 87 568 15 0;
#P newex 307 80 27 196617 gate;
#P newex 426 419 30 196617 sel 1;
#P newex 349 419 30 196617 sel 1;
#P newex 270 419 30 196617 sel 1;
#P newex 193 419 30 196617 sel 1;
#P newex 193 397 27 196617 i;
#P newex 270 397 27 196617 i;
#P newex 349 397 27 196617 i;
#P newex 426 397 27 196617 i;
#P newex 307 106 40 196617 t b b i;
#P newex 26 367 27 196617 i;
#P newex 61 367 27 196617 i;
#P newex 96 367 27 196617 i;
#P newex 131 367 27 196617 i;
#P message 443 467 14 196617 1;
#P newex 409 467 29 196617 t 0 8;
#P message 366 467 14 196617 1;
#P newex 332 467 29 196617 t 0 7;
#P message 287 467 14 196617 1;
#P newex 253 467 29 196617 t 0 6;
#P message 210 467 14 196617 1;
#P newex 176 467 29 196617 t 0 5;
#P newex 87 521 44 196617 gate 1 1;
#P message 121 420 14 196617 4;
#P message 86 420 14 196617 3;
#P message 51 420 14 196617 2;
#P toggle 51 322 15 0;
#P newex 51 397 30 196617 sel 1;
#P newex 16 397 30 196617 sel 1;
#P toggle 121 322 15 0;
#P toggle 86 322 15 0;
#P newex 121 397 30 196617 sel 1;
#P newex 86 397 30 196617 sel 1;
#P newex 409 443 44 196617 togEdge;
#P newex 332 443 44 196617 togEdge;
#P newex 253 443 44 196617 togEdge;
#P newex 176 443 44 196617 togEdge;
#P toggle 409 397 15 0;
#P newex 409 366 48 196617 &&;
#P newex 409 343 48 196617 bondo;
#P toggle 447 322 15 0;
#P toggle 409 322 15 0;
#P toggle 332 397 15 0;
#P newex 332 366 48 196617 &&;
#P newex 332 343 48 196617 bondo;
#P toggle 370 322 15 0;
#P toggle 332 322 15 0;
#P toggle 253 397 15 0;
#P newex 253 366 48 196617 &&;
#P newex 253 343 48 196617 bondo;
#P toggle 291 322 15 0;
#P toggle 253 322 15 0;
#P toggle 176 397 15 0;
#P newex 176 366 48 196617 &&;
#P newex 176 343 48 196617 bondo;
#P toggle 214 322 15 0;
#P toggle 176 322 15 0;
#P newex 81 131 192 196617 sel 119 115 97 100 114 101;
#P newex 324 57 40 196617 keyup;
#P window linecount 2;
#P comment 350 103 140 196617 on any keyup , check to see if single key still depressed!;
#P connect 61 0 70 0;
#P connect 66 0 70 0;
#P lcolor 9;
#P fasten 70 0 31 0 21 398;
#P connect 49 0 31 0;
#P connect 31 0 71 0;
#P connect 50 0 49 0;
#P lcolor 4;
#P connect 70 0 49 1;
#P connect 62 0 33 0;
#P connect 67 0 33 0;
#P lcolor 9;
#P connect 33 0 32 0;
#P connect 48 0 32 0;
#P connect 32 0 34 0;
#P connect 50 0 48 0;
#P lcolor 4;
#P connect 33 0 48 1;
#P connect 72 0 2 0;
#P connect 2 0 61 0;
#P connect 63 0 29 0;
#P connect 68 0 29 0;
#P lcolor 9;
#P fasten 29 0 27 0 91 398;
#P connect 47 0 27 0;
#P connect 27 0 35 0;
#P fasten 39 0 37 0 215 501 92 501;
#P lcolor 9;
#P fasten 45 0 37 0 448 501 92 501;
#P lcolor 9;
#P fasten 43 0 37 0 371 501 92 501;
#P lcolor 9;
#P fasten 41 0 37 0 292 501 92 501;
#P lcolor 9;
#P fasten 38 0 37 0 181 501 92 501;
#P lcolor 9;
#P fasten 40 0 37 0 258 501 92 501;
#P lcolor 9;
#P fasten 42 0 37 0 337 501 92 501;
#P lcolor 9;
#P fasten 44 0 37 0 414 501 92 501;
#P lcolor 9;
#P connect 37 0 60 0;
#P fasten 38 1 60 0 200 551 92 551;
#P fasten 40 1 60 0 277 551 92 551;
#P fasten 42 1 60 0 356 551 92 551;
#P fasten 44 1 60 0 433 551 92 551;
#P connect 50 0 47 0;
#P lcolor 4;
#P connect 2 1 62 0;
#P connect 29 0 47 1;
#P connect 64 0 30 0;
#P connect 69 0 30 0;
#P lcolor 9;
#P connect 30 0 28 0;
#P connect 46 0 28 0;
#P connect 28 0 36 0;
#P fasten 71 0 37 1 21 477 126 477;
#P connect 36 0 37 1;
#P fasten 35 0 37 1 91 477 126 477;
#P fasten 34 0 37 1 56 477 126 477;
#P connect 50 0 46 0;
#P lcolor 4;
#P connect 2 2 63 0;
#P connect 30 0 46 1;
#P connect 2 3 64 0;
#P connect 61 1 3 0;
#P connect 66 1 3 0;
#P lcolor 9;
#P connect 3 0 5 0;
#P connect 5 0 6 0;
#P connect 6 0 7 0;
#P connect 7 0 23 0;
#P connect 55 0 38 0;
#P connect 23 0 38 0;
#P connect 50 1 54 0;
#P lcolor 4;
#P connect 54 0 55 0;
#P connect 6 0 54 1;
#P connect 23 1 39 0;
#P connect 63 1 4 0;
#P connect 68 1 4 0;
#P lcolor 9;
#P connect 4 0 5 1;
#P connect 5 1 6 1;
#P connect 66 1 8 0;
#P lcolor 9;
#P connect 61 1 8 0;
#P connect 8 0 10 0;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 24 0;
#P connect 56 0 40 0;
#P connect 24 0 40 0;
#P connect 50 1 53 0;
#P lcolor 4;
#P connect 53 0 56 0;
#P connect 11 0 53 1;
#P connect 24 1 41 0;
#P connect 64 1 9 0;
#P connect 69 1 9 0;
#P lcolor 9;
#P connect 9 0 10 1;
#P connect 10 1 11 1;
#P connect 73 0 59 0;
#P connect 59 0 50 0;
#P connect 1 0 59 1;
#P connect 62 1 13 0;
#P connect 67 1 13 0;
#P lcolor 9;
#P connect 13 0 15 0;
#P connect 15 0 16 0;
#P connect 16 0 17 0;
#P connect 17 0 25 0;
#P connect 57 0 42 0;
#P connect 25 0 42 0;
#P connect 50 2 65 0;
#P connect 65 0 66 0;
#P connect 50 1 52 0;
#P lcolor 4;
#P connect 52 0 57 0;
#P connect 16 0 52 1;
#P connect 25 1 43 0;
#P connect 65 1 67 0;
#P connect 68 1 14 0;
#P lcolor 9;
#P connect 63 1 14 0;
#P connect 14 0 15 1;
#P connect 15 1 16 1;
#P connect 65 2 68 0;
#P connect 67 1 18 0;
#P lcolor 9;
#P connect 62 1 18 0;
#P connect 18 0 20 0;
#P connect 20 0 21 0;
#P connect 21 0 22 0;
#P connect 22 0 26 0;
#P connect 26 0 44 0;
#P connect 58 0 44 0;
#P connect 50 1 51 0;
#P lcolor 4;
#P connect 51 0 58 0;
#P connect 65 3 69 0;
#P connect 21 0 51 1;
#P connect 26 1 45 0;
#P connect 69 1 19 0;
#P lcolor 9;
#P connect 64 1 19 0;
#P connect 19 0 20 1;
#P connect 20 1 21 1;
#P pop;
#P newobj 185 142 72 196617 p whichKeys?;
#B color 12;
#P newex 26 89 27 196617 t i i;
#N vpatcher 668 545 1268 770;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 500 78 27 131137545 f;
#P window linecount 0;
#P newex 12 48 27 131137545 t b i;
#P window setfont Geneva 9.;
#P window linecount 1;
#P comment 500 162 81 196617 backward/right;
#P comment 435 145 75 196617 backward/left;
#P comment 368 162 75 196617 forward/right;
#P comment 304 145 66 196617 forward/left;
#P newex 498 124 64 196617 + 2.356194;
#P newex 431 124 63 196617 – 2.356194;
#P newex 364 124 64 196617 + 0.785398;
#P newex 297 124 63 196617 – 0.785398;
#P comment 244 145 44 196617 right;
#P comment 181 145 39 196617 left;
#P comment 103 145 67 196617 backward;
#P outlet 29 179 15 0;
#P inlet 500 25 15 0;
#P inlet 12 25 15 0;
#P newex 29 101 481 196617 gate 8;
#P newex 96 124 63 196617 – 3.141593;
#P newex 230 124 64 196617 + 1.570796;
#P newex 163 124 63 196617 – 1.570796;
#P window linecount 0;
#P comment 39 145 58 196617 forward;
#P connect 5 0 19 0;
#P connect 19 1 4 0;
#P fasten 14 0 7 0 503 159 34 159;
#P fasten 13 0 7 0 436 159 34 159;
#P fasten 12 0 7 0 369 159 34 159;
#P fasten 11 0 7 0 302 159 34 159;
#P fasten 2 0 7 0 235 159 34 159;
#P fasten 1 0 7 0 168 159 34 159;
#P fasten 3 0 7 0 101 159 34 159;
#P connect 4 0 7 0;
#P connect 4 1 3 0;
#P connect 4 2 1 0;
#P connect 4 3 2 0;
#P connect 4 4 11 0;
#P connect 4 5 12 0;
#P connect 4 6 13 0;
#P connect 4 7 14 0;
#P connect 6 0 20 0;
#P fasten 19 0 20 0 17 71 505 71;
#P lcolor 8;
#P connect 20 0 4 1;
#P pop;
#P newobj 185 194 73 196617 p changeAngle;
#B color 12;
#P newex 173 320 29 196617 * 1.;
#P newex 60 319 29 196617 * 1.;
#P inlet 248 168 15 0;
#N comlet camera z;
#P outlet 139 425 15 0;
#N comlet camera x;
#P outlet 26 425 15 0;
#P window linecount 2;
#P comment 186 346 53 196617 speed on z axis;
#P window linecount 1;
#P newex 173 296 21 196617 sin;
#P newex 139 319 27 196617 t f f;
#P newex 139 296 27 196617 f 1.;
#P newex 156 351 27 196617 + 0.;
#P newex 26 214 63 196617 t b b b b;
#P newex 60 296 23 196617 cos;
#P newex 26 319 27 196617 t f f;
#P toggle 26 172 15 0;
#P newex 26 296 27 196617 f 0.;
#P newex 43 351 27 196617 + 0.;
#P newex 26 193 57 196617 qmetro 10;
#P newex 45 43 40 196617 key;
#P newex 26 66 29 196617 gate;
#P newex 26 21 56 196617 r navigate;
#P window linecount 2;
#P comment 73 346 55 196617 speed on x axis;
#P user panel 181 190 81 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 181 138 80 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 22 138 64 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window linecount 1;
#P message 26 379 37 196617 $1 10;
#P connect 5 0 6 0;
#P connect 6 0 26 0;
#P connect 26 0 35 0;
#P connect 35 0 28 0;
#P connect 28 0 11 0;
#P connect 11 0 8 0;
#P connect 8 0 14 0;
#P connect 14 0 10 0;
#P connect 10 0 12 0;
#P connect 12 0 0 0;
#P connect 0 0 29 0;
#P connect 29 0 20 0;
#P connect 14 1 33 0;
#P connect 33 0 10 1;
#P connect 28 1 9 0;
#P lcolor 4;
#P connect 12 1 9 0;
#P connect 7 0 6 1;
#P fasten 9 0 33 1 48 374 132 374 132 258 65 258;
#P fasten 25 0 13 0 190 289 65 289;
#P lcolor 7;
#P connect 13 0 23 0;
#P connect 23 0 9 1;
#P connect 32 0 23 1;
#P hidden connect 36 0 16 0;
#P fasten 14 2 16 0 65 247 144 247;
#P connect 16 0 17 0;
#P connect 17 0 30 0;
#P connect 30 0 31 0;
#P connect 31 0 21 0;
#P fasten 14 3 34 0 82 239 161 239;
#P connect 34 0 16 1;
#P connect 28 1 15 0;
#P lcolor 4;
#P connect 17 1 15 0;
#P fasten 15 0 34 1 161 374 243 374 243 257 178 257;
#P fasten 25 0 18 0 190 289 178 289;
#P lcolor 7;
#P connect 18 0 24 0;
#P connect 24 0 15 1;
#P fasten 26 1 27 0 48 114 190 114;
#P connect 27 0 25 0;
#P connect 32 0 24 1;
#P connect 22 0 25 1;
#P pop;
#P newobj 62 308 82 196617 p moveX-Zaxes;
#B color 12;
#P comment 360 430 78 196617 Looking Around;
#P newex 183 23 56 196617 r navigate;
#N vpatcher 208 44 433 263;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 42 108 56 196617 s navigate;
#P window linecount 2;
#P message 112 160 85 196617 ; max showcursor;
#P message 29 160 80 196617 ; max hidecursor;
#P window linecount 1;
#P newex 29 131 41 196617 sel 1 0;
#P toggle 29 84 15 0;
#P newex 29 60 44 196617 sel 107;
#P window linecount 0;
#P newex 29 34 40 196617 key;
#P connect 0 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 3 0;
#P connect 3 0 4 0;
#P connect 2 0 6 0;
#P fasten 3 1 5 0 49 153 117 153;
#P pop;
#P newobj 365 27 87 196617 p navigateOn/Off;
#B color 12;
#P newex 221 288 164 196617 expr 100 * (cos($f1) * cos($f2));
#P newex 297 328 162 196617 expr 100 * (sin($f1) * cos($f2));
#P newex 259 308 102 196617 expr 100 * sin($f1);
#P newex 259 366 27 196617 + 0.;
#P newex 221 366 27 196617 + 0.;
#P newex 297 366 27 196617 + 1.;
#P comment 267 351 14 196617 y;
#P newex 259 208 104 196617 scale 0 600 1.5 -1.5;
#P newex 259 156 30 196617 t i i;
#P newex 221 156 33 196617 t i i;
#N vpatcher 435 44 733 372;
#P window setfont Geneva 9.;
#P window linecount 1;
#P hidden newex 31 47 56 196617 t 200 300;
#P hidden newex 31 26 48 196617 loadbang;
#P newex 14 126 48 196617 pack 0 0;
#P newex 52 103 27 196617 i;
#P newex 14 103 27 196617 i;
#P newex 14 73 32 196617 sel 1;
#P inlet 14 48 15 0;
#P newex 111 199 60 196617 pack 1 300;
#P newex 89 231 72 196617 pack 798 300;
#P newex 111 170 32 196617 sel 1;
#P inlet 89 48 15 0;
#P window linecount 2;
#P message 89 271 96 196617 ; max pupdate $1 $2;
#P window linecount 1;
#P newex 111 147 42 196617 >= 799;
#P newex 89 125 32 196617 sel 0;
#P newex 89 103 158 196617 if $i1 < = 0 || $i1 >= 799 then $i1;
#P inlet 251 48 15 0;
#P window linecount 2;
#P comment 114 36 122 196617 pointer loops between 0 and 800 horizontal pixels;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 14 0;
#P hidden connect 15 0 16 0;
#P connect 6 0 12 1;
#P hidden connect 16 0 12 1;
#P fasten 11 0 13 0 19 96 57 96;
#P connect 13 0 14 1;
#P connect 1 0 13 1;
#P hidden connect 16 1 13 1;
#P connect 6 0 2 0;
#P connect 2 0 3 0;
#P connect 3 0 8 0;
#P fasten 14 0 5 0 19 264 94 264;
#P fasten 9 0 5 0 116 258 94 258;
#P connect 8 0 5 0;
#P connect 3 1 4 0;
#P connect 4 0 7 0;
#P connect 7 0 9 0;
#P fasten 1 0 8 1 256 223 156 223;
#P fasten 1 0 9 1 256 188 166 188;
#P pop;
#P newobj 209 185 80 196617 p pupdate;
#B color 12;
#P outlet 43 489 15 0;
#P newex 221 237 164 196617 scale 0 800 -3.141593 3.141593;
#P comment 229 351 14 196617 x;
#P newex 183 108 165 196617 mousestate;
#P newex 183 452 125 196617 pak lookat 0. 0. 1.;
#P newex 26 416 119 196617 pak camera 0. 0. 1.;
#P comment 303 351 13 196617 z;
#P window linecount 2;
#P comment 348 50 127 196617 ‘k’ turns on/off navigation with mouse and keyboard;
#P user panel 178 279 287 197;
#X brgb 116 118 230;
#X frgb 0 0 0;
#X border 0;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 204 181 90 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 360 23 97 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 58 304 90 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P comment 366 200 101 196617 < -- not quite looking straight up and down;
#P user panel 22 226 59 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 67 440 49 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window setfont Geneva 10.;
#P window linecount 1;
#P comment 335 486 87 196618 Zachary Seldess;
#P user panel 332 481 133 41;
#X brgb 74 43 255;
#X frgb 0 0 0;
#X border 0;
#X rounded 0;
#X shadow 0;
#X done;
#P fasten 43 0 41 0 31 468 16 468 16 222 31 222;
#P connect 11 0 43 0;
#P fasten 12 0 16 0 188 480 48 480;
#P connect 43 1 16 0;
#P connect 44 0 16 0;
#P fasten 15 0 31 0 226 260 67 260;
#P lcolor 15;
#P connect 31 0 11 1;
#P lcolor 7;
#P connect 47 0 42 0;
#P connect 42 0 41 1;
#P connect 39 0 11 2;
#P lcolor 6;
#P connect 31 1 11 3;
#P lcolor 14;
#P connect 29 0 37 0;
#P connect 37 0 33 0;
#P connect 33 0 32 0;
#P connect 32 0 13 0;
#P connect 37 1 17 0;
#P connect 13 1 18 0;
#P connect 18 0 15 0;
#P lcolor 15;
#P connect 15 0 27 0;
#P lcolor 15;
#P connect 27 0 23 0;
#P connect 23 0 34 0;
#P connect 34 0 12 1;
#P fasten 31 0 23 1 67 357 243 357;
#P lcolor 7;
#P connect 18 1 17 1;
#P connect 13 2 40 0;
#P connect 40 0 19 0;
#P connect 19 0 20 0;
#P connect 20 0 25 0;
#P connect 25 0 24 0;
#P connect 24 0 35 0;
#P connect 35 0 12 2;
#P fasten 39 0 24 1 103 334 281 334;
#P lcolor 6;
#P connect 19 1 17 2;
#P fasten 15 0 26 0 226 260 302 260;
#P lcolor 15;
#P connect 26 0 22 0;
#P connect 22 0 36 0;
#P connect 36 0 12 3;
#P fasten 31 1 22 1 139 351 319 351;
#P lcolor 14;
#P fasten 20 0 27 1 264 228 380 228;
#P fasten 20 0 26 1 264 228 454 228;
#P pop;


August 13, 2007 | 6:23 pm

And here is the second version of the patch. This is a more typical flight simulator. No seperate keyboard control for the y axis. Just point and go. I’ve also attached another zipped example folder for this version

max v2;
#N vpatcher 4 275 502 819;
#P window setfont Geneva 10.;
#P comment 335 503 131 196618 http://www.zacharyseldess.com;
#P window setfont Geneva 9.;
#N vpatcher 381 642 593 813;
#P outlet 66 135 15 0;
#P window setfont Geneva 9.;
#P newex 66 49 40 196617 itoa;
#P newex 66 27 40 196617 key;
#P newex 66 92 19 196617 t b;
#P newex 66 71 88 196617 match c o n s o l e;
#P message 66 114 30 196617 open;
#P connect 3 0 4 0;
#P connect 4 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 0 0;
#P connect 0 0 5 0;
#P pop;
#P newobj 67 180 77 196617 p open_console;
#B color 12;
#P comment 74 466 77 196617 ‘z’ zooms view;
#P comment 54 165 113 196617 ‘console’ opens console;
#N vpatcher 844 573 1010 812;
#P window setfont Geneva 9.;
#P newex 69 78 27 196617 gate;
#P newex 25 78 27 196617 gate;
#P newex 25 22 51 196617 r navigate;
#P outlet 25 199 15 0;
#P newex 25 172 90 196617 prepend lens_angle;
#P message 69 127 38 196617 45 200;
#P newex 25 149 40 196617 line 45.;
#P message 25 127 38 196617 10 700;
#P newex 69 102 40 196617 sel 122;
#P newex 86 48 40 196617 keyup;
#P newex 25 102 40 196617 sel 122;
#P newex 42 48 40 196617 key;
#P connect 9 0 10 0;
#P connect 10 0 1 0;
#P connect 1 0 4 0;
#P fasten 6 0 5 0 74 145 30 145;
#P connect 4 0 5 0;
#P connect 5 0 7 0;
#P connect 7 0 8 0;
#P connect 0 0 10 1;
#P fasten 9 0 11 0 30 43 74 43;
#P connect 11 0 3 0;
#P connect 3 0 6 0;
#P connect 2 0 11 1;
#P pop;
#P newobj 71 444 41 196617 p zoom;
#B color 12;
#P newex 26 444 27 196617 t l l;
#P newex 67 202 47 196617 pcontrol;
#N vpatcher 809 44 1007 185;
#P window setfont Geneva 9.;
#P hidden newex 11 103 50 196617 qlim 100;
#P hidden newex 55 24 60 196617 loadmess 1;
#N vpatcher 344 81 581 348;
#P outlet 11 230 15 0;
#P window setfont Geneva 9.;
#P newex 11 164 27 196617 t b l;
#P message 115 94 93 196617 window flags float;
#P message 11 94 103 196617 window flags nofloat;
#P message 76 138 74 196617 savewindow 0;
#P message 11 138 74 196617 savewindow 1;
#P message 115 111 76 196617 window notitle;
#P message 11 77 105 196617 window flags nogrow;
#P message 115 60 95 196617 window flags close;
#P message 11 60 105 196617 window flags noclose;
#P message 11 43 105 196617 window flags nozoom;
#P message 11 189 68 196617 window exec;
#P message 115 77 95 196617 window flags grow;
#P message 115 43 95 196617 window flags zoom;
#P message 11 111 66 196617 window title;
#P hidden connect 10 0 13 0;
#P hidden connect 9 0 13 0;
#P hidden connect 4 0 13 0;
#P hidden connect 5 0 13 0;
#P hidden connect 7 0 13 0;
#P hidden connect 11 0 13 0;
#P hidden connect 1 0 13 0;
#P hidden connect 6 0 13 0;
#P hidden connect 2 0 13 0;
#P hidden connect 12 0 13 0;
#P hidden connect 8 0 13 0;
#P hidden connect 0 0 13 0;
#P connect 13 0 3 0;
#P fasten 13 1 14 0 33 223 16 223;
#P connect 3 0 14 0;
#P pop;
#P hidden newobj 85 99 107 196617 p thispatcher_scripts;
#B color 5;
#N thispatcher;
#Q window flags nogrow close nozoom nofloat;
#Q window size 809 44 1007 185;
#Q window title;
#Q window exec;
#Q savewindow 1;
#Q end;
#P hidden newobj 85 120 61 196617 thispatcher;
#B color 5;
#P hidden inlet 173 33 15 0;
#P hidden newex 125 57 61 196617 s xyzSpeed;
#P hidden newex 125 35 40 196617 / 100.;
#P hidden inlet 11 77 15 0;
#P hidden newex 11 124 112 196617 unpack camera 0. 0. 0.;
#P comment 151 96 13 196617 Z;
#P comment 92 96 14 196617 Y;
#P comment 33 96 14 196617 X;
#P flonum 129 111 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 70 111 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P flonum 11 111 58 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 42 80 115 196617 CAMERA COORDINATES;
#P flonum 74 48 48 9 0.001 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P comment 37 29 131 196617 (in world units per second);
#P comment 55 15 92 196617 SET FLYING SPEED;
#P user panel 8 9 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 8 73 182 59;
#X brgb 173 91 93;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P hidden connect 13 0 20 0;
#P hidden connect 12 1 6 0;
#P hidden connect 20 0 12 0;
#P hidden connect 12 2 7 0;
#P hidden connect 19 0 4 0;
#P hidden connect 18 0 17 0;
#P hidden connect 4 0 14 0;
#P hidden connect 14 0 15 0;
#P hidden connect 12 3 8 0;
#P pop 1;
#P newobj 26 230 51 196617 p console;
#B color 12;
#P newex 259 133 146 196617 if $i1 > 600 then 600 else $i1;
#P newex 183 44 36 196617 t i i;
#P newex 297 389 52 196617 change 0.;
#P newex 259 409 52 196617 change 0.;
#P newex 221 429 52 196617 change 0.;
#P toggle 183 65 15 0;
#P newex 183 86 57 196617 qmetro 10;
#N vpatcher 737 44 1147 554;
#P origin 0 4;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 285 331 29 196617 * 1.;
#N vpatcher 49 47 235 321;
#P outlet 36 234 15 0;
#P window setfont Geneva 9.;
#P window linecount 1;
#P message 60 203 17 196617 1.;
#P newex 90 30 51 196617 r navigate;
#P inlet 36 72 15 0;
#P message 36 203 22 196617 -1.;
#P toggle 36 156 15 0;
#P newex 90 126 21 196617 t 0;
#P newex 90 102 44 196617 sel 115;
#P newex 36 125 21 196617 t 1;
#P newex 90 77 27 196617 gate;
#P newex 36 180 58 196617 sel 1 0;
#P newex 36 102 44 196617 sel 115;
#P newex 107 54 40 196617 keyup;
#P connect 9 0 1 0;
#P connect 1 0 4 0;
#P connect 4 0 7 0;
#P fasten 6 0 7 0 95 149 41 149;
#P connect 7 0 2 0;
#P connect 2 0 8 0;
#P fasten 11 0 12 0 65 226 41 226;
#P connect 8 0 12 0;
#P connect 2 1 11 0;
#P connect 10 0 3 0;
#P connect 3 0 5 0;
#P connect 5 0 6 0;
#P connect 0 0 3 1;
#P pop;
#P newobj 304 142 72 196617 p backwards?;
#B color 12;
#P user panel 300 138 80 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P newex 268 264 27 196617 f;
#P newex 251 435 40 196617 line 0.;
#P newex 285 354 29 196617 * 1.;
#N comlet camera x;
#P outlet 251 460 15 0;
#P newex 285 296 21 196617 sin;
#P newex 251 354 27 196617 t f f;
#P newex 251 296 27 196617 f 0.;
#P newex 268 386 27 196617 + 0.;
#P window linecount 2;
#P comment 298 381 55 196617 speed on y axis;
#P window linecount 1;
#P message 251 414 37 196617 $1 10;
#P newex 287 195 41 196617 t f f;
#P newex 60 331 29 196617 * 1.;
#P newex 173 331 29 196617 * 1.;
#P newex 287 220 23 196617 cos;
#P inlet 287 168 15 0;
#P hidden newex 81 264 48 196617 loadbang;
#P window linecount 0;
#P newex 26 118 50 196617 deferlow;
#P newex 156 264 27 196617 f;
#P newex 43 264 27 196617 f;
#P newex 111 193 61 196617 r xyzSpeed;
#P newex 139 435 40 196617 line 0.;
#P message 139 414 37 196617 $1 10;
#P newex 26 435 40 196617 line 0.;
#N vpatcher 613 361 992 691;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 120 243 36 196617 t i i;
#P newex 146 266 32 196617 sel 1;
#P outlet 146 291 15 0;
#P outlet 120 291 15 0;
#P window linecount 0;
#P newex 120 221 27 196617 != 0;
#P newex 120 199 115 196617 expr $i1+$i2+$i3+$i4;
#P newex 120 176 117 196617 bondo 4;
#P newex 220 26 51 196617 r navigate;
#P inlet 11 69 15 0;
#P newex 310 122 19 196617 t 0;
#P newex 280 122 19 196617 t 0;
#P newex 250 122 19 196617 t 0;
#P newex 220 122 19 196617 t 0;
#P newex 220 98 131 196617 sel 119 115 97 100;
#P newex 101 122 19 196617 t 1;
#P newex 71 122 19 196617 t 1;
#P newex 41 122 19 196617 t 1;
#P newex 11 122 19 196617 t 1;
#P newex 220 73 27 196617 gate;
#P newex 11 98 131 196617 sel 119 115 97 100;
#P newex 237 50 40 196617 keyup;
#P connect 12 0 1 0;
#P connect 1 0 3 0;
#P connect 1 1 4 0;
#P connect 1 2 5 0;
#P connect 1 3 6 0;
#P connect 8 0 14 0;
#P connect 3 0 14 0;
#P connect 14 0 15 0;
#P connect 15 0 16 0;
#P connect 16 0 20 0;
#P connect 20 0 17 0;
#P connect 20 1 19 0;
#P connect 19 0 18 0;
#P connect 9 0 14 1;
#P connect 4 0 14 1;
#P connect 14 1 15 1;
#P connect 10 0 14 2;
#P connect 5 0 14 2;
#P connect 14 2 15 2;
#P connect 13 0 2 0;
#P connect 2 0 7 0;
#P connect 7 0 8 0;
#P connect 11 0 14 3;
#P connect 6 0 14 3;
#P connect 14 3 15 3;
#P connect 0 0 2 1;
#P connect 7 1 9 0;
#P connect 7 2 10 0;
#P connect 7 3 11 0;
#P pop;
#P newobj 26 142 56 196617 p moving?;
#B color 12;
#N vpatcher 49 47 614 666;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 307 33 51 196617 r navigate;
#P inlet 81 102 15 0;
#P message 16 420 14 196617 1;
#P toggle 16 322 15 0;
#P newex 427 155 29 196617 t 0 0;
#P newex 397 155 29 196617 t 0 0;
#P newex 367 155 29 196617 t 0 0;
#P newex 337 155 29 196617 t 0 0;
#P newex 337 131 192 196617 sel 119 115 97 100 114 101;
#P newex 171 155 29 196617 t 1 1;
#P newex 141 155 29 196617 t 1 1;
#P newex 111 155 29 196617 t 1 1;
#P newex 81 155 29 196617 t 1 1;
#P outlet 87 568 15 0;
#P newex 307 80 27 196617 gate;
#P newex 426 419 30 196617 sel 1;
#P newex 349 419 30 196617 sel 1;
#P newex 270 419 30 196617 sel 1;
#P newex 193 419 30 196617 sel 1;
#P newex 193 397 27 196617 i;
#P newex 270 397 27 196617 i;
#P newex 349 397 27 196617 i;
#P newex 426 397 27 196617 i;
#P newex 307 106 40 196617 t b b i;
#P newex 26 367 27 196617 i;
#P newex 61 367 27 196617 i;
#P newex 96 367 27 196617 i;
#P newex 131 367 27 196617 i;
#P message 443 467 14 196617 1;
#P newex 409 467 29 196617 t 0 8;
#P message 366 467 14 196617 1;
#P newex 332 467 29 196617 t 0 7;
#P message 287 467 14 196617 1;
#P newex 253 467 29 196617 t 0 6;
#P message 210 467 14 196617 1;
#P newex 176 467 29 196617 t 0 5;
#P newex 87 521 44 196617 gate 1 1;
#P message 121 420 14 196617 4;
#P message 86 420 14 196617 3;
#P message 51 420 14 196617 2;
#P toggle 51 322 15 0;
#P newex 51 397 30 196617 sel 1;
#P newex 16 397 30 196617 sel 1;
#P toggle 121 322 15 0;
#P toggle 86 322 15 0;
#P newex 121 397 30 196617 sel 1;
#P newex 86 397 30 196617 sel 1;
#P newex 409 443 44 196617 togEdge;
#P newex 332 443 44 196617 togEdge;
#P newex 253 443 44 196617 togEdge;
#P newex 176 443 44 196617 togEdge;
#P toggle 409 397 15 0;
#P newex 409 366 48 196617 &&;
#P newex 409 343 48 196617 bondo;
#P toggle 447 322 15 0;
#P toggle 409 322 15 0;
#P toggle 332 397 15 0;
#P newex 332 366 48 196617 &&;
#P newex 332 343 48 196617 bondo;
#P toggle 370 322 15 0;
#P toggle 332 322 15 0;
#P toggle 253 397 15 0;
#P newex 253 366 48 196617 &&;
#P newex 253 343 48 196617 bondo;
#P toggle 291 322 15 0;
#P toggle 253 322 15 0;
#P toggle 176 397 15 0;
#P newex 176 366 48 196617 &&;
#P newex 176 343 48 196617 bondo;
#P toggle 214 322 15 0;
#P toggle 176 322 15 0;
#P newex 81 131 192 196617 sel 119 115 97 100 114 101;
#P newex 324 57 40 196617 keyup;
#P window linecount 2;
#P comment 350 103 140 196617 on any keyup , check to see if single key still depressed!;
#P connect 61 0 70 0;
#P connect 66 0 70 0;
#P lcolor 9;
#P fasten 70 0 31 0 21 398;
#P connect 49 0 31 0;
#P connect 31 0 71 0;
#P connect 50 0 49 0;
#P lcolor 4;
#P connect 70 0 49 1;
#P connect 62 0 33 0;
#P connect 67 0 33 0;
#P lcolor 9;
#P connect 33 0 32 0;
#P connect 48 0 32 0;
#P connect 32 0 34 0;
#P connect 50 0 48 0;
#P lcolor 4;
#P connect 33 0 48 1;
#P connect 72 0 2 0;
#P connect 2 0 61 0;
#P connect 63 0 29 0;
#P connect 68 0 29 0;
#P lcolor 9;
#P fasten 29 0 27 0 91 398;
#P connect 47 0 27 0;
#P connect 27 0 35 0;
#P fasten 39 0 37 0 215 501 92 501;
#P lcolor 9;
#P fasten 45 0 37 0 448 501 92 501;
#P lcolor 9;
#P fasten 43 0 37 0 371 501 92 501;
#P lcolor 9;
#P fasten 41 0 37 0 292 501 92 501;
#P lcolor 9;
#P fasten 38 0 37 0 181 501 92 501;
#P lcolor 9;
#P fasten 40 0 37 0 258 501 92 501;
#P lcolor 9;
#P fasten 42 0 37 0 337 501 92 501;
#P lcolor 9;
#P fasten 44 0 37 0 414 501 92 501;
#P lcolor 9;
#P connect 37 0 60 0;
#P fasten 38 1 60 0 200 551 92 551;
#P fasten 40 1 60 0 277 551 92 551;
#P fasten 42 1 60 0 356 551 92 551;
#P fasten 44 1 60 0 433 551 92 551;
#P connect 50 0 47 0;
#P lcolor 4;
#P connect 2 1 62 0;
#P connect 29 0 47 1;
#P connect 64 0 30 0;
#P connect 69 0 30 0;
#P lcolor 9;
#P connect 30 0 28 0;
#P connect 46 0 28 0;
#P connect 28 0 36 0;
#P fasten 71 0 37 1 21 477 126 477;
#P connect 36 0 37 1;
#P fasten 35 0 37 1 91 477 126 477;
#P fasten 34 0 37 1 56 477 126 477;
#P connect 50 0 46 0;
#P lcolor 4;
#P connect 2 2 63 0;
#P connect 30 0 46 1;
#P connect 2 3 64 0;
#P connect 61 1 3 0;
#P connect 66 1 3 0;
#P lcolor 9;
#P connect 3 0 5 0;
#P connect 5 0 6 0;
#P connect 6 0 7 0;
#P connect 7 0 23 0;
#P connect 55 0 38 0;
#P connect 23 0 38 0;
#P connect 50 1 54 0;
#P lcolor 4;
#P connect 54 0 55 0;
#P connect 6 0 54 1;
#P connect 23 1 39 0;
#P connect 63 1 4 0;
#P connect 68 1 4 0;
#P lcolor 9;
#P connect 4 0 5 1;
#P connect 5 1 6 1;
#P connect 66 1 8 0;
#P lcolor 9;
#P connect 61 1 8 0;
#P connect 8 0 10 0;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 24 0;
#P connect 56 0 40 0;
#P connect 24 0 40 0;
#P connect 50 1 53 0;
#P lcolor 4;
#P connect 53 0 56 0;
#P connect 11 0 53 1;
#P connect 24 1 41 0;
#P connect 64 1 9 0;
#P connect 69 1 9 0;
#P lcolor 9;
#P connect 9 0 10 1;
#P connect 10 1 11 1;
#P connect 73 0 59 0;
#P connect 59 0 50 0;
#P connect 1 0 59 1;
#P connect 62 1 13 0;
#P connect 67 1 13 0;
#P lcolor 9;
#P connect 13 0 15 0;
#P connect 15 0 16 0;
#P connect 16 0 17 0;
#P connect 17 0 25 0;
#P connect 57 0 42 0;
#P connect 25 0 42 0;
#P connect 50 2 65 0;
#P connect 65 0 66 0;
#P connect 50 1 52 0;
#P lcolor 4;
#P connect 52 0 57 0;
#P connect 16 0 52 1;
#P connect 25 1 43 0;
#P connect 65 1 67 0;
#P connect 68 1 14 0;
#P lcolor 9;
#P connect 63 1 14 0;
#P connect 14 0 15 1;
#P connect 15 1 16 1;
#P connect 65 2 68 0;
#P connect 67 1 18 0;
#P lcolor 9;
#P connect 62 1 18 0;
#P connect 18 0 20 0;
#P connect 20 0 21 0;
#P connect 21 0 22 0;
#P connect 22 0 26 0;
#P connect 26 0 44 0;
#P connect 58 0 44 0;
#P connect 50 1 51 0;
#P lcolor 4;
#P connect 51 0 58 0;
#P connect 65 3 69 0;
#P connect 21 0 51 1;
#P connect 26 1 45 0;
#P connect 69 1 19 0;
#P lcolor 9;
#P connect 64 1 19 0;
#P connect 19 0 20 1;
#P connect 20 1 21 1;
#P pop;
#P newobj 185 142 72 196617 p whichKeys?;
#B color 12;
#P newex 26 89 45 196617 t i i i;
#N vpatcher 668 545 1268 770;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 500 78 27 131137545 f;
#P window linecount 0;
#P newex 12 48 27 131137545 t b i;
#P window setfont Geneva 9.;
#P window linecount 1;
#P comment 500 162 81 196617 backward/right;
#P comment 435 145 75 196617 backward/left;
#P comment 368 162 75 196617 forward/right;
#P comment 304 145 66 196617 forward/left;
#P newex 498 124 64 196617 + 2.356194;
#P newex 431 124 63 196617 – 2.356194;
#P newex 364 124 64 196617 + 0.785398;
#P newex 297 124 63 196617 – 0.785398;
#P comment 244 145 44 196617 right;
#P comment 181 145 39 196617 left;
#P comment 103 145 67 196617 backward;
#P outlet 29 179 15 0;
#P inlet 500 25 15 0;
#P inlet 12 25 15 0;
#P newex 29 101 481 196617 gate 8;
#P newex 96 124 63 196617 – 3.141593;
#P newex 230 124 64 196617 + 1.570796;
#P newex 163 124 63 196617 – 1.570796;
#P window linecount 0;
#P comment 39 145 58 196617 forward;
#P connect 5 0 19 0;
#P connect 19 1 4 0;
#P fasten 14 0 7 0 503 159 34 159;
#P fasten 13 0 7 0 436 159 34 159;
#P fasten 12 0 7 0 369 159 34 159;
#P fasten 11 0 7 0 302 159 34 159;
#P fasten 2 0 7 0 235 159 34 159;
#P fasten 1 0 7 0 168 159 34 159;
#P fasten 3 0 7 0 101 159 34 159;
#P connect 4 0 7 0;
#P connect 4 1 3 0;
#P connect 4 2 1 0;
#P connect 4 3 2 0;
#P connect 4 4 11 0;
#P connect 4 5 12 0;
#P connect 4 6 13 0;
#P connect 4 7 14 0;
#P connect 6 0 20 0;
#P fasten 19 0 20 0 17 71 505 71;
#P lcolor 8;
#P connect 20 0 4 1;
#P pop;
#P newobj 185 194 73 196617 p changeAngle;
#B color 12;
#P newex 173 355 29 196617 * 1.;
#P newex 60 354 29 196617 * 1.;
#P inlet 248 168 15 0;
#N comlet camera z;
#P outlet 139 460 15 0;
#N comlet camera x;
#P outlet 26 460 15 0;
#P window linecount 2;
#P comment 186 381 53 196617 speed on z axis;
#P window linecount 1;
#P newex 173 296 21 196617 sin;
#P newex 139 354 27 196617 t f f;
#P newex 139 296 27 196617 f 1.;
#P newex 156 386 27 196617 + 0.;
#P newex 26 214 96 196617 t b b b b b b;
#P newex 60 296 23 196617 cos;
#P newex 26 354 27 196617 t f f;
#P toggle 26 172 15 0;
#P newex 26 296 27 196617 f 0.;
#P newex 43 386 27 196617 + 0.;
#P newex 26 193 57 196617 qmetro 10;
#P newex 45 43 40 196617 key;
#P newex 26 66 29 196617 gate;
#P newex 26 21 56 196617 r navigate;
#P window linecount 2;
#P comment 73 381 55 196617 speed on x axis;
#P user panel 181 190 81 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 181 138 80 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 22 138 64 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window linecount 1;
#P message 26 414 37 196617 $1 10;
#P connect 5 0 6 0;
#P connect 6 0 26 0;
#P connect 26 0 35 0;
#P connect 35 0 28 0;
#P connect 28 0 11 0;
#P connect 11 0 8 0;
#P connect 8 0 14 0;
#P connect 14 0 10 0;
#P connect 10 0 12 0;
#P connect 12 0 0 0;
#P connect 0 0 29 0;
#P connect 29 0 20 0;
#P connect 14 1 33 0;
#P connect 33 0 10 1;
#P connect 28 1 9 0;
#P lcolor 4;
#P connect 12 1 9 0;
#P connect 7 0 6 1;
#P fasten 9 0 33 1 48 409 132 409 132 258 65 258;
#P fasten 25 0 13 0 190 289 65 289;
#P lcolor 7;
#P connect 13 0 40 0;
#P connect 40 0 23 0;
#P connect 23 0 9 1;
#P connect 38 0 40 1;
#P lcolor 13;
#P connect 32 0 23 1;
#P hidden connect 36 0 16 0;
#P fasten 14 2 16 0 65 252 144 252;
#P connect 16 0 17 0;
#P connect 17 0 30 0;
#P connect 30 0 31 0;
#P connect 31 0 21 0;
#P fasten 14 3 34 0 82 245 161 245;
#P connect 34 0 16 1;
#P connect 28 1 15 0;
#P lcolor 4;
#P connect 17 1 15 0;
#P fasten 15 0 34 1 161 409 243 409 243 257 178 257;
#P fasten 25 0 18 0 190 289 178 289;
#P lcolor 7;
#P connect 18 0 39 0;
#P connect 39 0 24 0;
#P connect 24 0 15 1;
#P fasten 26 1 27 0 48 114 190 114;
#P connect 27 0 25 0;
#P connect 38 0 39 1;
#P lcolor 13;
#P connect 32 0 24 1;
#P connect 22 0 25 1;
#P fasten 14 4 45 0 99 239 256 239;
#P connect 45 0 46 0;
#P connect 46 0 42 0;
#P connect 42 0 50 0;
#P connect 50 0 48 0;
#P fasten 14 5 51 0 116 234 273 234;
#P connect 51 0 45 1;
#P connect 46 1 44 0;
#P connect 28 1 44 0;
#P lcolor 4;
#P fasten 44 0 51 1 273 409 357 409 357 258 290 258;
#P fasten 41 1 47 0 323 287 290 287;
#P lcolor 7;
#P connect 47 0 54 0;
#P connect 54 0 49 0;
#P connect 49 0 44 1;
#P connect 37 0 41 0;
#P connect 41 0 38 0;
#P fasten 26 2 53 0 65 109 309 109;
#P connect 53 0 54 1;
#P connect 32 0 49 1;
#P pop;
#P newobj 62 308 80 196617 p moveXYZaxes;
#B color 12;
#P comment 360 430 78 196617 Looking Around;
#P newex 183 23 56 196617 r navigate;
#N vpatcher 208 44 433 263;
#P window setfont Geneva 9.;
#P window linecount 1;
#P newex 42 108 56 196617 s navigate;
#P window linecount 2;
#P message 112 160 85 196617 ; max showcursor;
#P message 29 160 80 196617 ; max hidecursor;
#P window linecount 1;
#P newex 29 131 41 196617 sel 1 0;
#P toggle 29 84 15 0;
#P newex 29 60 44 196617 sel 107;
#P window linecount 0;
#P newex 29 34 40 196617 key;
#P connect 0 0 1 0;
#P connect 1 0 2 0;
#P connect 2 0 3 0;
#P connect 3 0 4 0;
#P connect 2 0 6 0;
#P fasten 3 1 5 0 49 153 117 153;
#P pop;
#P newobj 365 27 87 196617 p navigateOn/Off;
#B color 12;
#P newex 221 288 164 196617 expr 100 * (cos($f1) * cos($f2));
#P newex 297 328 162 196617 expr 100 * (sin($f1) * cos($f2));
#P newex 259 308 102 196617 expr 100 * sin($f1);
#P newex 259 366 27 196617 + 0.;
#P newex 221 366 27 196617 + 0.;
#P newex 297 366 27 196617 + 1.;
#P comment 267 351 14 196617 y;
#P newex 259 208 104 196617 scale 0 600 1.5 -1.5;
#P newex 259 156 30 196617 t i i;
#P newex 221 156 33 196617 t i i;
#N vpatcher 435 44 733 372;
#P window setfont Geneva 9.;
#P window linecount 1;
#P hidden newex 31 47 56 196617 t 200 300;
#P hidden newex 31 26 48 196617 loadbang;
#P newex 14 126 48 196617 pack 0 0;
#P newex 52 103 27 196617 i;
#P newex 14 103 27 196617 i;
#P newex 14 73 32 196617 sel 1;
#P inlet 14 48 15 0;
#P newex 111 199 60 196617 pack 1 300;
#P newex 89 231 72 196617 pack 798 300;
#P newex 111 170 32 196617 sel 1;
#P inlet 89 48 15 0;
#P window linecount 2;
#P message 89 271 96 196617 ; max pupdate $1 $2;
#P window linecount 1;
#P newex 111 147 42 196617 >= 799;
#P newex 89 125 32 196617 sel 0;
#P newex 89 103 158 196617 if $i1 < = 0 || $i1 >= 799 then $i1;
#P inlet 251 48 15 0;
#P window linecount 2;
#P comment 114 36 122 196617 pointer loops between 0 and 800 horizontal pixels;
#P connect 10 0 11 0;
#P connect 11 0 12 0;
#P connect 12 0 14 0;
#P hidden connect 15 0 16 0;
#P connect 6 0 12 1;
#P hidden connect 16 0 12 1;
#P fasten 11 0 13 0 19 96 57 96;
#P connect 13 0 14 1;
#P connect 1 0 13 1;
#P hidden connect 16 1 13 1;
#P connect 6 0 2 0;
#P connect 2 0 3 0;
#P connect 3 0 8 0;
#P fasten 14 0 5 0 19 264 94 264;
#P fasten 9 0 5 0 116 258 94 258;
#P connect 8 0 5 0;
#P connect 3 1 4 0;
#P connect 4 0 7 0;
#P connect 7 0 9 0;
#P fasten 1 0 8 1 256 223 156 223;
#P fasten 1 0 9 1 256 188 166 188;
#P pop;
#P newobj 209 185 80 196617 p pupdate;
#B color 12;
#P outlet 43 489 15 0;
#P newex 221 237 164 196617 scale 0 800 -3.141593 3.141593;
#P comment 229 351 14 196617 x;
#P newex 183 108 165 196617 mousestate;
#P newex 183 452 125 196617 pak lookat 0. 0. 1.;
#P newex 26 416 119 196617 pak camera 0. 0. 1.;
#P comment 303 351 13 196617 z;
#P window linecount 2;
#P comment 348 50 127 196617 ‘k’ turns on/off navigation with mouse and keyboard;
#P user panel 178 279 287 197;
#X brgb 116 118 230;
#X frgb 0 0 0;
#X border 0;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 204 181 90 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 360 23 97 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 58 304 89 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P comment 366 200 101 196617 < -- not quite looking straight up and down;
#P user panel 22 226 59 25;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P user panel 67 440 49 24;
#X brgb 255 255 255;
#X frgb 0 0 0;
#X border 1;
#X rounded 0;
#X shadow 0;
#X done;
#P window setfont Geneva 10.;
#P window linecount 1;
#P comment 335 486 87 196618 Zachary Seldess;
#P user panel 332 481 133 41;
#X brgb 74 43 255;
#X frgb 0 0 0;
#X border 0;
#X rounded 0;
#X shadow 0;
#X done;
#P fasten 41 0 39 0 31 468 16 468 16 222 31 222;
#P connect 11 0 41 0;
#P fasten 12 0 16 0 188 480 48 480;
#P connect 41 1 16 0;
#P connect 42 0 16 0;
#P fasten 15 0 31 0 226 260 67 260;
#P lcolor 15;
#P connect 31 0 11 1;
#P lcolor 7;
#P connect 45 0 40 0;
#P connect 40 0 39 1;
#P connect 31 2 11 2;
#P fasten 20 0 31 1 264 232 137 232;
#P connect 31 1 11 3;
#P lcolor 14;
#P connect 29 0 37 0;
#P connect 37 0 33 0;
#P connect 33 0 32 0;
#P connect 32 0 13 0;
#P connect 37 1 17 0;
#P connect 13 1 18 0;
#P connect 18 0 15 0;
#P lcolor 15;
#P connect 15 0 27 0;
#P lcolor 15;
#P connect 27 0 23 0;
#P connect 23 0 34 0;
#P connect 34 0 12 1;
#P fasten 31 0 23 1 67 357 243 357;
#P lcolor 7;
#P connect 18 1 17 1;
#P connect 13 2 38 0;
#P connect 38 0 19 0;
#P connect 19 0 20 0;
#P connect 20 0 25 0;
#P connect 25 0 24 0;
#P connect 24 0 35 0;
#P connect 35 0 12 2;
#P fasten 31 2 24 1 137 345 281 345;
#P lcolor 6;
#P connect 19 1 17 2;
#P fasten 15 0 26 0 226 260 302 260;
#P lcolor 15;
#P connect 26 0 22 0;
#P connect 22 0 36 0;
#P connect 36 0 12 3;
#P fasten 31 1 22 1 102 351 319 351;
#P lcolor 14;
#P fasten 20 0 27 1 264 228 380 228;
#P fasten 20 0 26 1 264 228 454 228;
#P pop;


August 13, 2007 | 6:44 pm

nice patch.

my one suggestion would be to make the forward/backward/up/down/left/right key controls move the camera based on it’s current orientation, rather than based on world orientation.

so if the the camera has been rotated by the mouse to look straight up, pressing ‘w’ will make the camera move up, or forward relative to the direction it’s looking, rather than forward based on the absolute world orientation.

-rob


August 13, 2007 | 7:04 pm

Zachary, these are very nice! The abstraction approach makes it very
easy to just drop it into an old patch that you might want to explore,
without having to fiddle about too much.

One thing I would recommend is to add a bit of smoothing to the mouse
movements, since it does appear slighly jerky? And another suggestion
would be to let the key-controlled movements accelerate a bit over time.

Brilliant work, Z.

Andreas.


August 13, 2007 | 8:22 pm

Andreas and Rob, thanks for the input and suggestions. It will be a few days before I am able to make changes as my laptop firewire port died and is currently being replaced (along with the whole damn logic board).

Andreas -

I like your idea to smooth out the mouse movements. I’ve just been adjusting the mouse/trackpad pointer speed to get a slower, smoother feel. The only problem with adding a smoothing process is that the user may already have a very slow pointer speed. So either I let people adjust it in their system preferences, or I tell people to set there pointer speeds at a medium to fast speed and do the smoothing myself. What do you think? Is there another way?

Accelerating over time is a nice idea too, I might try that. Thanks.

Rob –

"pressing ‘w’ will make the camera… move forward relative to the direction it’s looking, rather than forward based on the absolute world orientation."

There are two versions of this patch. The second one does this. When you press ‘w’ you go "forward", which means wherever you are looking. When you press ‘s’ you go "backward, which means away from wherever you are looking.

The first one also does this in reference to the x-z plane. It’s more like walking on the ground, as opposed to flying around. In the first version, if I look "forward and a little up" when I press ‘w’ I go forward along the "ground" – that is the x-z plane, while looking up – as if I were looking at the sky while walking along the ground. Up and down are not controlled by your "eyes". When I press ‘r’ or ‘e’ I go straight up or down. along the z axis. You can still combine vertical and horizontal movements in this version with key combinations. The approach in this first version of the patch was to allow you to look at something while moving around it.

Here’s a question: In the second version, when you strafe right or left, your lookat point affects your movement along the z axis. So in other words, if I go left while looking a little up, I will move left and a little up. I’m not sure this is best, maybe strafing should always be parallel to the x-z plane. What do you think?


August 13, 2007 | 8:37 pm

Zachary Seldess skrev:
> Here’s a question: In the second version, when you strafe right or left, your lookat point affects your movement along the z axis. So in other words, if I go left while looking a little up, I will move left and a little up. I’m not sure this is best, maybe strafing should always be parallel to the x-z plane. What do you think?
I like the second and newest way – moving the mouse while strafing
affects the direction – makes the most sense when navigation, I feel.

Andreas.


August 13, 2007 | 10:04 pm


August 13, 2007 | 10:29 pm

Jose,

What?

Zachary


August 14, 2007 | 7:35 am

First of all, please start a new thread by creating a new email,
rather than replying to one and changing the subject line. Otherwise,
stuff gets filed in the wrong place, is hard to find and you don’t
get the help you are looking for.

Second, I’ll need some system information before I’m able to look at
this. If you’re on OSX, I’d like a Crashlog as well.

Thanks
Jeremy

Am 14.08.2007 um 00:04 schrieb jose manuel berenguer:

> I maxmsp-jitter always crashes some 60 secons after activating the
> bang to select the slxml.xml file to upload…
>
> jmb


August 14, 2007 | 5:36 pm

I changed the flying navigator (v2) so that when you strafe left or right your lookat coordinate controls translation on the x and z axes but not on the y (vertical). If you strafe AND go foward/backward though, your lookat will affect translation on the y axis. This is the most intuitive setup, in my opinion. And it allows for you to orbit around an object while looking down or up at it. I’ve attached both walking and flying navigators.

I also added a smoothing process (via javascript) to both versions of the patch. If you want it even smoother, just change the argument for the easing.js objects inside p mousestate.

I’ve attached both versions in a zip file along with example patches and readme files.


August 18, 2007 | 2:15 am

One more update – fixed a slight glitch in the navigation. Attached.

Question:
I’d like to add a target – something to make navigating more accurate. I’ve experimented with simply placing a transparent sphere or circle at a perpetually equal distance form the "front" of the camera, and it works, but it’s not preferable.

Is there any way to overlay a HUD in a jitter window, that does not need to be translated and rotated based on camera position in gl space. It will just always be mounted "on the surface" of the window"? This is typical in 3D games, and I’ve done it with the Torque Game Engine, but haven’t been able to figure out how to do it in jitter.


August 18, 2007 | 8:48 am

Have you tried the @transform_reset 2 attribute? It will create
normalized coordinates from [-1, 1] across both x and y of the screen
for hud-like behavior.

wes

On 8/17/07, Zachary Seldess wrote:
> One more update – fixed a slight glitch in the navigation. Attached.
>
>
> Question:
> I’d like to add a target – something to make navigating more accurate. I’ve experimented with simply placing a transparent sphere or circle at a perpetually equal distance form the "front" of the camera, and it works, but it’s not preferable.
>
> Is there any way to overlay a HUD in a jitter window, that does not need to be translated and rotated based on camera position in gl space. It will just always be mounted "on the surface" of the window"? This is typical in 3D games, and I’ve done it with the Torque Game Engine, but haven’t been able to figure out how to do it in jitter.
>
>
> –
> http://www.zacharyseldess.com
>
>
>
>
>


August 18, 2007 | 3:32 pm

Thanks Wes. That was exactly what I was looking for.

Is there a way, aside from using the layer attribute, to ensure that an object will always stay at the bottom of the rendering stack, so that it will be perpetually transparent?

zach


August 19, 2007 | 2:57 pm

To be more specific, if I don’t want to use jit.gl.sketch or write a shader – i want to stay with the jit.gl.gridshape object – is there any way other than the layer attribute to ensure that the object will always remain transparent (given the alpha value is set as such).

In the case of the above patch it is important because it is likely that a person will drop the abstraction into a previously made patch causing the gridshape in my abstraction to be added last to the render context and thus loose it’s transparency while rendering "in front" of the objects in the parent patch. Using the layer attribute is still risky, there’s a good chance that the parent patch has objects at different layers as well, and if there is an object at the same layer as the object in my abstraction, the latter will again be added to the render context after the former, causing it to loose transparency, I think.

I’ve fooled around with the blend_mode attribute a bit and read the docs but I don’t really understand what’s happening there. Is there a blend_mode configuration that I can set my object to to cause permanent transparency? Or some other way?

Thanks for the help!


August 24, 2007 | 4:59 am

Here’s another update. Now both abstractions have HUD-like bullseyes and they display camera coordinates in the jitter window. They’re both turned off by default.

When you instantiate the abstraction give it a 1st argument of your render context name, and a second argument of the highest unused layer. After attaching it to you jit.gl.render object, you can press ‘k’ to move look and move around.

press ‘z’ to zoom you view in
press ‘c’ to toggle coordinate display on/off
press ‘b’ to toggle bullseye display on/off

If anyone has anymore suggested improvements, let me know.

It’s all attached with sample patches.


August 28, 2007 | 6:39 am

Quote: Zachary Seldess wrote on Thu, 23 August 2007 22:59
—————————————————-
> Here’s another update. Now both abstractions have HUD-like bullseyes and they display camera coordinates in the jitter window. They’re both turned off by default.
>
> When you instantiate the abstraction give it a 1st argument of your render context name, and a second argument of the highest unused layer. After attaching it to you jit.gl.render object, you can press ‘k’ to move look and move around.
>
> press ‘z’ to zoom you view in
> press ‘c’ to toggle coordinate display on/off
> press ‘b’ to toggle bullseye display on/off
>
> If anyone has anymore suggested improvements, let me know.
>
> It’s all attached with sample patches.
—————————————————-

Hi,

This is a very nice patch. It is very good to see this kind of package and really save user a lot of time.

thanks

CK


September 13, 2007 | 2:40 pm

Here’s another update. Now you can manually reset camera and lookat coords in the the right two inlets (list: x y z for both). So you don’t have to take the time to fly somewhere far away…
New example patches are included.

Zachary


September 13, 2007 | 10:30 pm

Aaaahh, found one little glitch. Fixed it. Sorry for the redundancy.


September 24, 2007 | 9:25 am

thank you Zachary, real helpful patching

On 9/13/07, Zachary Seldess wrote:
>
> Aaaahh, found one little glitch. Fixed it. Sorry for the redundancy.
> –
> http://www.zacharyseldess.com
>
>
>
>
>


September 24, 2007 | 6:50 pm

Thanks Yair, glad you find it useful. If you have any suggested improvements, please post them.


September 25, 2007 | 2:53 pm

great stuff, would be cool to have one patch where you can key switch between modes.


September 25, 2007 | 5:03 pm

That’s a good idea – I’ve been meaning to do something like it. It will happen eventually… Thanks for the suggestion.


Viewing 23 posts - 1 through 23 (of 23 total)