+ float TrailTime = 3000;
+ int numCursors = 50;
+ ArrayList<dCursor> cur = new ArrayList<dCursor>(30);
+
+ private GraphicEQ eq = null;
+
+ private BasicParameter pBeat = new BasicParameter("BEAT", 0);
+ private BasicParameter pSpeed = new BasicParameter("FAST", .2);
+ private BasicParameter pBlur = new BasicParameter("BLUR", .3);
+ private BasicParameter pWorms = new BasicParameter("WRMS", .3);
+ private BasicParameter pConfusion = new BasicParameter("CONF", .1);
+ private BasicParameter pEQ = new BasicParameter("EQ" , 0);
+ private BasicParameter pSpawn = new BasicParameter("DIR" , 0);
+
+ // versions of worms
+ // 5. slow worms branching out like a tree
+
+ int zMidLat = 82;
+ float nConfusion;
+ private final Click moveChase = new Click(1000);
+
+ xyz middle;
+ int AnimNum() { return floor(pSpawn.getValuef()*(3-.01)); }
+ float randX() { return random(model.xMax-model.xMin)+model.xMin; }
+ float randY() { return random(model.yMax-model.yMin)+model.yMin; }
+ xyz randEdge() {
+ return random(2) < 1 ? new xyz(random(2)<1 ? model.xMin:model.xMax, randY(), zMidLat) :
+ new xyz(randX(), random(2)<1 ? model.yMin:model.yMax, zMidLat) ;
+ }
+
+ Worms(GLucose glucose) {
+ super(glucose);
+ addModulator(moveChase).start();
+ addParameter(pBeat); addParameter(pSpeed);
+ addParameter(pBlur); addParameter(pWorms);
+ addParameter(pEQ); addParameter(pConfusion);
+ addParameter(pSpawn);
+ middle = new xyz(model.cx, model.cy, 71);
+ if (lattice == null) lattice = new dLattice();
+ for (int i=0; i<numCursors; i++) { dCursor c = new dCursor(); reset(c); cur.add(c); }
+ onParameterChanged(pEQ); setNewDest();
+ }
+
+ public void onParameterChanged(LXParameter parameter) {
+ nConfusion = 1-pConfusion.getValuef();
+ for (int i=0; i<numCursors; i++) {
+ if (parameter==pSpawn) reset(cur.get(i));
+ cur.get(i).destSpeed = nConfusion;
+ }
+ }