Jelajahi Sumber

kollabs as submodule

import kollabs
rename kof_win to kpofwin
deleted unused files
Etienne Landon 8 tahun lalu
induk
melakukan
2dcb8d9ecf
8 mengubah file dengan 19 tambahan dan 373 penghapusan
  1. 3 0
      .gitmodules
  2. 15 16
      kof_media.pd
  3. 0 182
      kof_sphere.pd
  4. 1 0
      kollabs
  5. 0 0
      kpofwin.pd
  6. 0 110
      slave_quad.pd
  7. 0 27
      slave_quad_dyn.pd
  8. 0 38
      slave_quad_pi.pd

+ 3 - 0
.gitmodules

@@ -0,0 +1,3 @@
+[submodule "kollabs"]
+	path = kollabs
+	url = ssh://git@madology.myds.me:1022/titi/kollabs.git

+ 15 - 16
kof_media.pd

@@ -1,4 +1,4 @@
-#N canvas 469 209 965 433 10;
+#N canvas 467 208 965 433 10;
 #X obj 61 72 cnv 15 198 31 empty empty empty 20 12 0 14 -233017 -66577
 0;
 #X obj 65 76 tgl 15 1 /kof/\$1/state /kof/\$1/state on/off 17 7 0 10
@@ -6,12 +6,9 @@
 #X msg 158 121 vis 1;
 #X obj 158 76 bng 15 250 50 0 empty empty settings 17 7 0 10 -159808
 -1 -1;
-#N canvas 668 163 768 540 storage_&_osc 0;
-#X obj 39 11 ds_reg \$2 /kof/\$1/corner/top/left/x;
+#N canvas 666 162 768 540 storage_&_osc 0;
 #X obj 369 11 osc_bi \$2 /kof/\$1/corner/top/left/x;
-#X obj 39 31 ds_reg \$2 /kof/\$1/corner/top/left/y;
 #X obj 369 31 osc_bi \$2 /kof/\$1/corner/top/left/y;
-#X obj 39 51 ds_reg \$2 /kof/\$1/corner/top/right/x;
 #X obj 39 71 ds_reg \$2 /kof/\$1/corner/top/right/y;
 #X obj 39 91 ds_reg \$2 /kof/\$1/corner/bottom/right/x;
 #X obj 39 111 ds_reg \$2 /kof/\$1/corner/bottom/right/y;
@@ -35,6 +32,9 @@
 #X obj 369 281 osc_bi \$2 /kof/\$1/alpha/1;
 #X obj 39 301 ds_reg \$2 /kof/\$1/alpha/2;
 #X obj 369 301 osc_bi \$2 /kof/\$1/alpha/2;
+#X obj 39 11 kollabs/ds_reg \$2 /kof/\$1/corner/top/left/x;
+#X obj 39 31 kollabs/ds_reg \$2 /kof/\$1/corner/top/left/y;
+#X obj 39 51 kollabs/ds_reg \$2 /kof/\$1/corner/top/right/x;
 #X restore 27 149 pd storage_&_osc;
 #X obj 14 242 cnv 15 360 60 empty empty creation_arguments: 3 8 0 12
 -191407 -1 0;
@@ -89,22 +89,21 @@ domain;
 #X obj 2 2 cnv 15 170 145 empty empty QUAD 20 12 0 14 -233017 -66577
 0;
 #X obj 21 92 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/top/left/x /kof/\$1/corner/top/left/x
-x -10 7 0 10 -261234 -1 -1 -200 256;
+x -10 7 0 10 -261234 -1 -1 0 256;
 #X obj 21 108 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/top/left/y
-/kof/\$1/corner/top/left/y y -10 7 0 10 -261234 -1 -1 200 256;
+/kof/\$1/corner/top/left/y y -10 7 0 10 -261234 -1 -1 0 256;
 #X obj 98 92 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/top/right/x
-/kof/\$1/corner/top/right/x x -10 7 0 10 -261234 -1 -1 200 256;
+/kof/\$1/corner/top/right/x x -10 7 0 10 -261234 -1 -1 0 256;
 #X obj 98 108 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/top/right/y
-/kof/\$1/corner/top/right/y y -10 7 0 10 -261234 -1 -1 200 256;
+/kof/\$1/corner/top/right/y y -10 7 0 10 -261234 -1 -1 0 256;
 #X obj 21 56 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/bottom/left/x
-/kof/\$1/corner/bottom/left/x x -10 7 0 10 -261234 -1 -1 -200 256;
+/kof/\$1/corner/bottom/left/x x -10 7 0 10 -261234 -1 -1 0 256;
 #X obj 21 72 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/bottom/left/y
-/kof/\$1/corner/bottom/left/y y -10 7 0 10 -261234 -1 -1 -200 256;
+/kof/\$1/corner/bottom/left/y y -10 7 0 10 -261234 -1 -1 0 256;
 #X obj 98 56 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/bottom/right/x
-/kof/\$1/corner/bottom/right/x x -10 7 0 10 -261234 -1 -1 200 256;
+/kof/\$1/corner/bottom/right/x x -10 7 0 10 -261234 -1 -1 0 256;
 #X obj 98 72 nbx 5 14 -10000 10000 0 0 /kof/\$1/corner/bottom/right/y
-/kof/\$1/corner/bottom/right/y y -10 7 0 10 -261234 -1 -1 -200 256
-;
+/kof/\$1/corner/bottom/right/y y -10 7 0 10 -261234 -1 -1 0 256;
 #X text 14 32 corners position;
 #X obj 179 2 cnv 15 190 145 empty empty MEDIA&MIX 20 12 0 14 -233017
 -66577 0;
@@ -113,9 +112,9 @@ x -10 7 0 10 -261234 -1 -1 -200 256;
 #X obj 268 36 bng 15 250 50 0 /kof/\$1/media/2/openpanel empty player_2
 17 7 0 10 -262144 -1 -1;
 #X obj 197 80 vsl 15 60 0 1 0 0 /kof/\$1/alpha/1 /kof/\$1/alpha/1 alpha1
--10 -9 0 10 -262144 -1 -1 2950 0;
+-10 -9 0 10 -262144 -1 -1 0 0;
 #X obj 247 80 vsl 15 60 0 1 0 0 /kof/\$1/alpha/2 /kof/\$1/alpha/2 alpha2
--10 -9 0 10 -262144 -1 -1 2950 0;
+-10 -9 0 10 -262144 -1 -1 0 0;
 #X obj 297 80 vsl 15 60 0 2000 0 0 /kof/\$1/fadetime /kof/\$1/fadetime
 time -10 -9 0 10 -262144 -1 -1 0 0;
 #X obj 332 85 vradio 15 1 0 3 /kof/\$1/fademode /kof/\$1/fademode mode

+ 0 - 182
kof_sphere.pd

@@ -1,182 +0,0 @@
-#N canvas 46 74 965 545 10;
-#X obj 61 72 cnv 15 198 31 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 65 76 tgl 15 1 /kof/\$1/state /kof/\$1/state on/off 17 7 0 10
--4034 -1 -1 1 1;
-#N canvas 983 163 618 355 storage_&_osc 0;
-#X obj 39 221 ds_reg \$2 /kof/\$1/fadetime;
-#X obj 369 221 osc_bi \$2 /kof/\$1/fadetime;
-#X obj 39 251 ds_reg \$2 /kof/\$1/state;
-#X obj 369 251 osc_bi \$2 /kof/\$1/state;
-#X obj 39 201 ds_reg \$2 /kof/\$1/media;
-#X obj 369 201 osc_bi \$2 /kof/\$1/media;
-#X obj 39 111 ds_reg \$2 /kof/\$1/pitch;
-#X obj 369 111 osc_bi \$2 /kof/\$1/pitch;
-#X obj 39 131 ds_reg \$2 /kof/\$1/yaw;
-#X obj 369 131 osc_bi \$2 /kof/\$1/yaw;
-#X obj 39 151 ds_reg \$2 /kof/\$1/fov;
-#X obj 369 151 osc_bi \$2 /kof/\$1/fov;
-#X obj 39 281 ds_reg \$2 /kof/\$1/alpha;
-#X obj 369 281 osc_bi \$2 /kof/\$1/alpha;
-#X restore 278 77 pd storage_&_osc;
-#X obj 14 282 cnv 15 360 60 empty empty creation_arguments: 3 8 0 12
--191407 -1 0;
-#X text 19 301 1st: module ID \, needs to be unique \; 2nd: storage
-domain;
-#N canvas 769 181 450 300 init 0;
-#X obj 98 76 loadbang;
-#X obj 98 98 list append \$1;
-#X obj 173 74 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
--1;
-#X msg 98 121 \; /kof/\$1/yaw 0 \; /kof/\$1/pitch 0 \; /kof/\$1/fov
-200 \; /kof/\$1/fadetime 0 \; /kof/\$1/alpha 0.5 \; /kof/\$1/state
-1;
-#X connect 0 0 1 0;
-#X connect 1 0 3 0;
-#X connect 2 0 1 0;
-#X restore 278 56 pd init;
-#X text 34 356 TODO;
-#X text 30 379 inversion corners top/bottom;
-#X text 34 394 gestion film/image;
-#X text 34 410 liste medias Cream;
-#X floatatom 561 347 5 0 0 0 - - -, f 5;
-#X obj 477 96 pofvisible 1;
-#X floatatom 608 230 5 0 0 0 - - -, f 5;
-#X obj 477 498 pofsphere 600 50;
-#X floatatom 556 391 5 0 0 0 - - -, f 5;
-#X obj 477 349 pofrotate x;
-#X obj 477 389 pofrotate y;
-#X obj 542 66 r /kof/\$1/state;
-#N canvas 5 75 450 300 alpha 0;
-#X obj 139 159 line;
-#X obj 139 135 pack f f;
-#X obj 192 115 r /kof/\$1/fadetime;
-#X obj 139 181 outlet;
-#X obj 139 80 r /kof/\$1/alpha;
-#X connect 0 0 3 0;
-#X connect 1 0 0 0;
-#X connect 2 0 1 1;
-#X connect 4 0 1 0;
-#X restore 570 154 pd alpha;
-#X obj 540 258 r /kof/\$1/pitch;
-#X obj 632 320 r /kof/\$1/yaw;
-#X obj 594 182 r /kof/\$1/fov;
-#X obj 62 106 cnv 15 50 95 empty empty empty 20 12 0 14 -233017 -66577
-0;
-#X obj 160 80 bng 15 250 50 0 /kof/\$1/media/openpanel empty open 17
-7 0 10 -262144 -1 -1;
-#X obj 77 131 vsl 15 60 0 1 0 0 /kof/\$1/alpha /kof/\$1/alpha alpha1
--10 -9 0 10 -262144 -1 -1 2950 0;
-#X obj 137 131 vsl 15 60 -50 90 0 0 /kof/\$1/pitch /kof/\$1/pitch pitch
--10 -9 0 10 -262144 -1 -1 2107 0;
-#X obj 183 131 vsl 15 60 -180 180 0 0 /kof/\$1/yaw /kof/\$1/yaw yaw
--10 -9 0 10 -262144 -1 -1 2950 0;
-#X obj 227 131 vsl 15 60 0 1000 0 0 /kof/\$1/fov /kof/\$1/fov fov -10
--9 0 10 -262144 -1 -1 1180 0;
-#X obj 477 232 poftranslate 0 0 200;
-#X obj 750 258 pofimage /home/titi/work/media/textures/spherical/courtyard-lowres.jpg
-tex;
-#X obj 477 177 pofcolor 1 1 1 1;
-#X obj 477 64 inlet;
-#X obj 660 100 openpanel;
-#X obj 660 80 symbol;
-#X obj 793 211 symbol;
-#X msg 793 233 set \$1;
-#X obj 660 60 r /kof/\$1/media/openpanel;
-#X obj 660 145 s /kof/\$1/media;
-#X obj 795 182 r /kof/\$1/media;
-#X obj 540 301 +;
-#X obj 568 302 t b f;
-#X obj 632 365 +;
-#X obj 660 366 t b f;
-#X obj 594 206 Line1 100;
-#X obj 540 325 Line1 100;
-#X obj 632 386 Line1 100;
-#N canvas 10 75 433 416 get_relative_path 0;
-#X obj 155 67 pofutil;
-#X msg 155 43 dirbaseext \$1;
-#X obj 155 87 route dirbaseext;
-#X obj 155 115 list split 1;
-#X obj 155 210 pofutil;
-#X obj 155 230 route dirbaseext;
-#X obj 155 255 unpack s s s;
-#X msg 155 186 dirbaseext \$1;
-#N canvas 490 325 450 300 strip_last_slash 0;
-#X obj 89 36 inlet;
-#X obj 89 214 outlet;
-#X obj 89 68 list fromsymbol;
-#X obj 89 95 t a a;
-#X obj 89 169 list split;
-#X obj 116 118 list length;
-#X obj 116 138 - 1;
-#X obj 89 190 list tosymbol;
-#X connect 0 0 2 0;
-#X connect 2 0 3 0;
-#X connect 3 0 4 0;
-#X connect 3 1 5 0;
-#X connect 4 0 7 0;
-#X connect 5 0 6 0;
-#X connect 6 0 4 1;
-#X connect 7 0 1 0;
-#X restore 155 155 pd strip_last_slash;
-#X obj 189 309 pack s s s;
-#X obj 214 285 unpack s s;
-#X obj 155 21 inlet fullpath;
-#X msg 189 331 list \$1/\$2.\$3;
-#X obj 189 354 outlet dir/base.name;
-#X connect 0 0 2 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X connect 3 0 8 0;
-#X connect 3 1 10 0;
-#X connect 4 0 5 0;
-#X connect 5 0 6 0;
-#X connect 6 1 9 0;
-#X connect 7 0 4 0;
-#X connect 8 0 7 0;
-#X connect 9 0 12 0;
-#X connect 10 0 9 1;
-#X connect 10 1 9 2;
-#X connect 11 0 1 0;
-#X connect 12 0 13 0;
-#X restore 660 122 pd get_relative_path;
-#X obj 477 443 kof_source;
-#X obj 534 422 r /kof/\$1/media;
-#X obj 534 468 pofsphere 600 50;
-#X obj 661 343 r /kof/\$1/yaw;
-#X obj 568 279 r /kof/\$2/pitch;
-#X connect 10 0 15 1;
-#X connect 11 0 30 0;
-#X connect 12 0 28 3;
-#X connect 14 0 16 1;
-#X connect 15 0 16 0;
-#X connect 16 0 47 0;
-#X connect 17 0 11 0;
-#X connect 18 0 30 4;
-#X connect 19 0 39 0;
-#X connect 20 0 41 0;
-#X connect 21 0 43 0;
-#X connect 28 0 15 0;
-#X connect 30 0 28 0;
-#X connect 31 0 11 0;
-#X connect 32 0 46 0;
-#X connect 33 0 32 0;
-#X connect 34 0 35 0;
-#X connect 35 0 29 0;
-#X connect 36 0 33 0;
-#X connect 39 0 44 0;
-#X connect 40 0 39 0;
-#X connect 40 1 39 1;
-#X connect 41 0 45 0;
-#X connect 42 0 41 0;
-#X connect 42 1 41 1;
-#X connect 43 0 28 3;
-#X connect 44 0 15 1;
-#X connect 45 0 16 1;
-#X connect 46 0 37 0;
-#X connect 47 0 13 0;
-#X connect 47 1 49 0;
-#X connect 48 0 47 1;
-#X connect 50 0 42 0;
-#X connect 51 0 40 0;
-#X coords 0 -1 1 1 200 150 1 60 55;

+ 1 - 0
kollabs

@@ -0,0 +1 @@
+Subproject commit 48a88d4d76ce27d148cbb229cdc912a270ea325b

kof_win.pd → kpofwin.pd


+ 0 - 110
slave_quad.pd

@@ -1,110 +0,0 @@
-#N canvas 155 460 1155 606 10;
-#X obj 83 -22 pofhead;
-#X obj 106 22 s /pofhead/slave;
-#X obj 131 152 pofrotate x;
-#X floatatom 206 32 5 0 0 0 - - -, f 5;
-#X floatatom 208 135 5 0 0 0 - - -, f 5;
-#X obj 147 72 r /slave_quad/base_rot/pitch;
-#X obj 152 93 r /slave_quad/base_rot/yaw;
-#X obj 361 27 ds_reg \$2 /kof/\$1/pitch;
-#X obj 530 27 osc_bi \$2 /kof/\$1/pitch;
-#X obj 361 47 ds_reg \$2 /kof/\$1/yaw;
-#X obj 530 47 osc_bi \$2 /kof/\$1/yaw;
-#X obj 337 310 ds_gui \$1;
-#X msg 535 101 1;
-#X obj 460 180 pipe 500;
-#X msg 460 202 \; /ds/\$1/recall 0;
-#X obj 583 227 t f f;
-#X msg 650 204 1;
-#X obj 583 289 pipe 500;
-#X obj 583 175 r /save;
-#X msg 616 247 \; /ds/\$1/store;
-#X obj 460 118 t f f f;
-#X obj 583 197 f \$1;
-#X msg 583 311 \; /ds/\$1/resave bang;
-#X obj 509 361 bng 25 250 50 0 /save empty SAVE 28 12 0 10 -262144
--1 -1;
-#X obj 460 99 pipe 2000;
-#X obj 460 77 r /init/delayed;
-#X obj 229 318 vsl 15 60 -50 90 0 0 /kof/\$1/pitch /kof/\$1/pitch pitch
--10 -9 0 10 -262144 -1 -1 0 0;
-#X obj 275 318 vsl 15 60 -180 180 0 0 /kof/\$1/yaw /kof/\$1/yaw yaw
--10 -9 0 10 -262144 -1 -1 0 0;
-#X text 162 333 base;
-#X text 157 351 rotation;
-#X obj 251 341 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X msg 252 262 0;
-#X msg 493 138 \; /ds/\$1/loadfile ../presets/screen\$1;
-#X obj 332 442 kof_win 0 \$1;
-#X obj 216 192 oscparse;
-#X obj 131 174 pofrotate y;
-#X obj 335 83 r /init/delayed;
-#X msg 335 103 1;
-#X obj 296 204 route /\$1;
-#X obj 296 256 s /osc/0/in;
-#X obj 334 123 ../PdClient NET E1;
-#X obj 296 181 r NET-fromserver;
-#X obj 16 124 r NET-fromserver;
-#X obj 705 359 r NET-fromserver;
-#X obj 705 382 route /loadpreset;
-#X obj 661 460 ds_gui 0;
-#X obj 115 389 kof_sphere SPHERE 0;
-#X text 838 360 reception changement de scene;
-#X obj 661 440 ds_logic 0;
-#X obj 821 440 ds_transition 0;
-#X obj 821 460 ds_transition_gui 0;
-#X text 843 421 ajout domaine 0 + passage quad et sphere;
-#X text 954 435 a domaine 0;
-#X obj 16 146 print fromserver;
-#X obj 870 397 print;
-#X obj 705 404 s /ds/0/scene/current;
-#X obj 837 262 r /init/delayed;
-#X obj 953 228 r /reloadfile;
-#X msg 837 284 \; /ds/0/loadfile ../presets/preset-test;
-#X msg 953 249 \; /ds/0/reload bang;
-#X text 876 207 (re)chargement fichier preset;
-#X obj 346 227 s /osc/0/in;
-#X obj 114 544 kof_media QUAD\$1 0;
-#X obj 83 0 t a a a;
-#X obj 86 42 s /pofhead/mask;
-#X obj 447 256 ds_logic \$1;
-#X obj 802 51 r /pofhead/mask;
-#X obj 802 82 kof_quadmask MASK \$1;
-#X connect 0 0 63 0;
-#X connect 2 0 35 0;
-#X connect 3 0 2 1;
-#X connect 4 0 35 1;
-#X connect 5 0 2 1;
-#X connect 6 0 35 1;
-#X connect 12 0 20 0;
-#X connect 13 0 14 0;
-#X connect 15 0 17 0;
-#X connect 15 1 19 0;
-#X connect 16 0 15 0;
-#X connect 17 0 22 0;
-#X connect 18 0 21 0;
-#X connect 20 0 13 0;
-#X connect 20 1 32 0;
-#X connect 21 0 15 0;
-#X connect 24 0 20 0;
-#X connect 25 0 24 0;
-#X connect 30 0 31 0;
-#X connect 31 0 26 0;
-#X connect 31 0 27 0;
-#X connect 36 0 37 0;
-#X connect 37 0 40 0;
-#X connect 38 0 39 0;
-#X connect 38 1 61 0;
-#X connect 41 0 38 0;
-#X connect 42 0 53 0;
-#X connect 43 0 44 0;
-#X connect 44 0 54 0;
-#X connect 44 0 55 0;
-#X connect 56 0 58 0;
-#X connect 57 0 59 0;
-#X connect 63 0 64 0;
-#X connect 63 1 1 0;
-#X connect 63 2 46 0;
-#X connect 66 0 67 0;
-#X coords 0 -1 1 1 500 300 1 100 300;

+ 0 - 27
slave_quad_dyn.pd

@@ -1,27 +0,0 @@
-#N canvas 268 425 558 446 10;
-#X declare -lib pof;
-#X declare -path ../kollabs;
-#X obj 16 88 s pd-slave_quad_pool;
-#N canvas 596 665 545 371 slave_quad_pool 0;
-#X obj 20 20 slave_quad 1;
-#X coords 0 -1 1 1 520 320 2 10 10;
-#X restore 16 107 pd slave_quad_pool;
-#X obj 16 -26 r /init;
-#X msg 178 40 clear;
-#X obj 302 26 declare -lib pof;
-#X obj 474 21 loadbang;
-#X msg 474 43 \; pd dsp 1;
-#X msg 16 66 clear \, obj 20 20 slave_quad \$1;
-#X obj 16 -4 t f f;
-#X obj 47 17 pipe 1000;
-#X obj 47 39 s /init/delayed;
-#X obj 179 16 loadbang;
-#X obj 301 46 declare -path ../kollabs;
-#X connect 2 0 8 0;
-#X connect 3 0 0 0;
-#X connect 5 0 6 0;
-#X connect 7 0 0 0;
-#X connect 8 0 7 0;
-#X connect 8 1 9 0;
-#X connect 9 0 10 0;
-#X connect 11 0 3 0;

+ 0 - 38
slave_quad_pi.pd

@@ -1,38 +0,0 @@
-#N canvas 451 100 644 623 10;
-#X declare -path ../kollabs;
-#X obj 20 18 slave_quad PI;
-#X obj 23 331 declare -path ../kollabs;
-#X obj 251 325 r NET-fromserver;
-#X obj 398 495 s /kof/PI/pitch;
-#X obj 242 459 s /kof/PI/yaw;
-#X floatatom 173 419 5 0 0 0 - - -, f 5;
-#X floatatom 210 421 5 0 0 0 - - -, f 5;
-#X obj 379 575 s NET-toserver;
-#X msg 376 549 TALK _all_ /kof/PI/pitch \$1;
-#X floatatom 421 533 5 0 0 0 - - -, f 5;
-#X obj 251 355 route Lyre /kof/PI/pitch;
-#X floatatom 424 391 5 0 0 0 - - -, f 5;
-#X floatatom 310 418 5 0 0 0 - - -, f 5;
-#X obj 252 381 route X Y setX setY;
-#X floatatom 406 436 5 0 0 0 - - -, f 5;
-#X msg 168 517 TALK _all_ Lyre setY \$1;
-#X obj 175 490 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
--1 -1 3746 1;
-#X obj 398 469 motorlimit2 0.05 0.005 0.08 0.04;
-#X floatatom 335 509 5 0 0 0 - - -, f 5;
-#X obj 253 407 / 200;
-#X obj 253 431 * 360;
-#X connect 2 0 10 0;
-#X connect 6 0 4 0;
-#X connect 8 0 7 0;
-#X connect 9 0 8 0;
-#X connect 10 0 13 0;
-#X connect 13 0 19 0;
-#X connect 13 3 17 0;
-#X connect 14 0 17 0;
-#X connect 15 0 7 0;
-#X connect 16 0 15 0;
-#X connect 17 0 3 0;
-#X connect 17 0 18 0;
-#X connect 19 0 20 0;
-#X connect 20 0 4 0;