class Cube{ float bx, by, bz, bw, x, y, z, w, xs, ys, zs; float fresh = 8; boolean picked; boolean selected = false; int gravity = 2; ArrayList cc; float s = 12; float s2 = 12; char letter = 'A'; boolean clickedOn; Cube(){ } Cube(float w){ this.bw = w; } void position(float x, float y, float z){ this.bx = x; this.by = y; this.bz = z; } void create(float parentX, float parentY, float parentZ, float parentW){ // draw cube pushMatrix(); translate(bx-bw/2, by-bw/2, bz-bw/2); update(parentX, parentY, parentZ, parentW); strokeWeight(0.01); // fill(123, 125, 230, 20); box(bw); popMatrix(); } void update(float parentX, float parentY, float parentZ, float parentW){ xs = screenX(0, 0, 0); ys = screenY(0, 0, 0); zs = screenZ(0, 0, 0); boolean picked = checkDist(xs, ys, zs, fresh); if((by-bw > parentY + parentW || by < parentY ) && !selected){ bz -=gravity; } float theDistM = dist(mouseX,mouseY,0,bx,by,bz); if (picked) { stroke(0,64,255,80); // white if mouse over selected = true; if(bw bw ){ fresh = bw; } } else if(theDistM > fresh){ stroke(22,255,120); // otherwise blue selected = false; } } char addLetter(Cube parentCube, char letter){ textSize(s); pushMatrix(); translate(parentCube.bx, parentCube.by, parentCube.bz-parentCube.w/1.5); pushMatrix(); rotateY(PI/2); rotateZ(PI/2); rotateY(PI); if(parentCube.selected == true){ fill(255); }else{ fill(150, 255, 255); } text(letter, 0, 0, 0); noFill(); popMatrix(); popMatrix(); return letter; } char addLetter2(Cube parentCube, char letter){ textSize(s2); pushMatrix(); translate(parentCube.bx, parentCube.by, parentCube.bz-parentCube.w/1.5); pushMatrix(); rotateY(PI/2); rotateZ(PI/2); rotateY(PI); if(parentCube.selected == true){ fill(255); }else{ fill(25, 164, 255, 80); } text(letter, 0, 0, 0); noFill(); popMatrix(); popMatrix(); return letter; } boolean clickedOn(){ if (bw > 75){ return true; }else{ return false; } } }