X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_Internals.pde;h=fbe7435ef00912e005cc54fa3189f20dc20184c3;hb=cfc57fca840a0cdd820ec1a1e820aedea663d589;hp=5753ef810f3c2e2c5d4bd4abac3a9f722d3aa974;hpb=186bc4d32747d985dccfde843992bb0b5bf428e6;p=SugarCubes.git diff --git a/_Internals.pde b/_Internals.pde index 5753ef8..fbe7435 100644 --- a/_Internals.pde +++ b/_Internals.pde @@ -34,16 +34,11 @@ import rwmidi.*; final int VIEWPORT_WIDTH = 900; final int VIEWPORT_HEIGHT = 700; +// The trailer is measured from the outside of the black metal (but not including the higher welded part on the front) final float TRAILER_WIDTH = 240; final float TRAILER_DEPTH = 97; final float TRAILER_HEIGHT = 33; -final float BASS_WIDTH = 124; -final float BASS_HEIGHT = 31.5; -final float BASS_DEPTH = 66; -final float BASS_X = (TRAILER_WIDTH - BASS_WIDTH) / 2.; -final float BASS_Z = (TRAILER_DEPTH - BASS_DEPTH) / 2.; - int targetFramerate = 60; int startMillis, lastMillis; @@ -181,8 +176,10 @@ void draw() { endShape(); noStroke(); - fill(#292929); - drawBox(BASS_X, 0, BASS_Z, 0, 0, 0, BASS_WIDTH, BASS_HEIGHT, BASS_DEPTH, Cube.CHANNEL_WIDTH); + drawBassBox(glucose.model.bassBox); + for (Speaker s : glucose.model.speakers) { + drawSpeaker(s); + } for (Cube c : glucose.model.cubes) { drawCube(c); } @@ -193,7 +190,6 @@ void draw() { for (Point p : glucose.model.points) { stroke(colors[p.index]); vertex(p.fx, p.fy, p.fz); - // println(p.fx + ":" + p.fy + ":" + p.fz); } endShape(); @@ -215,11 +211,68 @@ void draw() { } } +void drawBassBox(BassBox b) { + float in = .15; + + noStroke(); + fill(#191919); + pushMatrix(); + translate(b.x + BassBox.EDGE_WIDTH/2., b.y + BassBox.EDGE_HEIGHT/2, b.z + BassBox.EDGE_DEPTH/2.); + box(BassBox.EDGE_WIDTH-20*in, BassBox.EDGE_HEIGHT-20*in, BassBox.EDGE_DEPTH-20*in); + popMatrix(); + + noStroke(); + fill(#393939); + drawBox(b.x+in, b.y+in, b.z+in, 0, 0, 0, BassBox.EDGE_WIDTH-in*2, BassBox.EDGE_HEIGHT-in*2, BassBox.EDGE_DEPTH-in*2, Cube.CHANNEL_WIDTH-in); + + pushMatrix(); + translate(b.x + (Cube.CHANNEL_WIDTH-in)/2., b.y + BassBox.EDGE_HEIGHT/2., b.z + in); + for (int j = 0; j < 2; ++j) { + pushMatrix(); + for (int i = 0; i < BassBox.NUM_FRONT_STRUTS; ++i) { + translate(BassBox.FRONT_STRUT_SPACING, 0, 0); + box(Cube.CHANNEL_WIDTH-in, BassBox.EDGE_HEIGHT - in*2, 0); + } + popMatrix(); + translate(0, 0, BassBox.EDGE_DEPTH - 2*in); + } + popMatrix(); + + pushMatrix(); + translate(b.x + in, b.y + BassBox.EDGE_HEIGHT/2., b.z + BassBox.SIDE_STRUT_SPACING + (Cube.CHANNEL_WIDTH-in)/2.); + box(0, BassBox.EDGE_HEIGHT - in*2, Cube.CHANNEL_WIDTH-in); + translate(BassBox.EDGE_WIDTH-2*in, 0, 0); + box(0, BassBox.EDGE_HEIGHT - in*2, Cube.CHANNEL_WIDTH-in); + popMatrix(); + +} + void drawCube(Cube c) { float in = .15; + noStroke(); + fill(#393939); drawBox(c.x+in, c.y+in, c.z+in, c.rx, c.ry, c.rz, Cube.EDGE_WIDTH-in*2, Cube.EDGE_HEIGHT-in*2, Cube.EDGE_WIDTH-in*2, Cube.CHANNEL_WIDTH-in); } +void drawSpeaker(Speaker s) { + float in = .15; + + noStroke(); + fill(#191919); + pushMatrix(); + translate(s.x, s.y, s.z); + rotate(s.ry / 180. * PI, 0, -1, 0); + translate(Speaker.EDGE_WIDTH/2., Speaker.EDGE_HEIGHT/2., Speaker.EDGE_DEPTH/2.); + box(Speaker.EDGE_WIDTH-20*in, Speaker.EDGE_HEIGHT-20*in, Speaker.EDGE_DEPTH-20*in); + popMatrix(); + + + noStroke(); + fill(#393939); + drawBox(s.x+in, s.y+in, s.z+in, 0, s.ry, 0, Speaker.EDGE_WIDTH-in*2, Speaker.EDGE_HEIGHT-in*2, Speaker.EDGE_DEPTH-in*2, Cube.CHANNEL_WIDTH-in); +} + + void drawBox(float x, float y, float z, float rx, float ry, float rz, float xd, float yd, float zd, float sw) { pushMatrix(); translate(x, y, z);