import processing.opengl.*; import processing.serial.*; Serial myPort; int[] room_size = new int[]{550, 450, 800}; light_box[] boxes; ball[] orbs; int lit_orb = -1; boolean zeroing = false; void setup(){ size(room_size[0], room_size[1], P3D); //smooth(); noStroke(); sphereDetail(4); //framerate(34); //----------- light boxes -------------------------------- boxes = new light_box[3]; boxes[0] = new light_box(100, room_size[1] - 26, -room_size[2]/4, -90, 0, new int[]{69, 70, 68}); boxes[1] = new light_box(room_size[0]/2, room_size[1] - 26, (-room_size[2]/2) + 120, 180, 1, new int[]{73, 67, 71}); boxes[2] = new light_box(room_size[0] - 100, room_size[1] - 26, -room_size[2]/4, 90, 2, new int[]{66, 72, 65}); // ------------------------------------------------------------------------ // ------------ light orbs ---------------------------------------------- orbs = new ball[9]; for(int i = 0; i < 9; i++){ orbs[i] = new ball(i%3, i); } //list all the available serial ports: //println(Serial.list()); // myPort = new Serial(this, Serial.list()[3], 9600); //for(int i = 64; i < 73; i++){ // myPort.write(i); //} } void draw(){ background(50); ambientLight(20,20,20); for(int i = 0; i < boxes.length; i++){ boxes[i].render(); } for(int i = 0; i < orbs.length; i++){ orbs[i].render(); } emissive(0,0,0); draw_room(); } void draw_room(){ fill(255); pushMatrix(); translate(0,0, -room_size[2]/2); rect(0,0,room_size[0], room_size[1]); rotateX(radians(90)); rect(0,0,room_size[0], room_size[2]); translate(0,0, -room_size[1]); rect(0,0,room_size[0], room_size[2]); rotateY(radians(-90)); rect(0,0,room_size[1], room_size[2]); translate(0,0,-room_size[0]); rect(0,0,room_size[1], room_size[2]); //box(room_size[0], room_size[1], room_size[2]); popMatrix(); } void mousePressed(){ if(zeroing) return; boolean got_sphere = false; boolean got_box = false; for(int i = 0; i < boxes.length; i++){ got_box = boxes[i].click(); if(got_box) break; } if(!got_box){ for(int i = 0; i < orbs.length; i++){ if(!got_sphere){ got_sphere = orbs[i].click(); }else{ orbs[i].deselect(); } } } if(!got_sphere && !got_box) lit_orb = -1; }