X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_Internals.pde;h=b593f3ef07b9c4aa7db088430348d3da9c653ae7;hb=d3016df6068e182a317be0451674411937fd7e95;hp=0ee146de75d4740455d1965209cb2d9ed6764475;hpb=3f16fd027656eaca0ed62f9c90c4da56385bb3bf;p=SugarCubes.git diff --git a/_Internals.pde b/_Internals.pde index 0ee146d..b593f3e 100644 --- a/_Internals.pde +++ b/_Internals.pde @@ -13,7 +13,6 @@ * for general animation work. */ -import glucose.*; import heronarts.lx.*; import heronarts.lx.effect.*; import heronarts.lx.model.*; @@ -49,13 +48,13 @@ int targetFramerate = 60; int startMillis, lastMillis; // Core engine variables -GLucose glucose; LX lx; Model model; LXPattern[] patterns; LXTransition[] transitions; -DiscreteParameter activeTransition; Effects effects; +LXEffect[] effectsArr; +DiscreteParameter selectedEffect; MappingTool mappingTool; GrizzlyOutput[] grizzlies; PresetManager presetManager; @@ -116,7 +115,11 @@ LXEffect[] _effectsArray(Effects effects) { } catch (IllegalAccessException iax) {} } return effectList.toArray(new LXEffect[]{}); -} +} + +LXEffect getSelectedEffect() { + return effectsArr[selectedEffect.getValuei()]; +} void logTime(String evt) { int now = millis(); @@ -134,11 +137,14 @@ void setup() { // hint(ENABLE_OPENGL_4X_SMOOTH); // no discernable improvement? logTime("Created viewport"); - // Create the GLucose engine to run the cubes - glucose = new GLucose(this, model = buildModel()); - lx = glucose.lx; + // Create the model + model = buildModel(); + logTime("Built Model"); + + // LX engine + lx = new LX(this, model); lx.enableKeyboardTempo(); - logTime("Built GLucose engine"); + logTime("Built LX engine"); // Set the patterns LXEngine engine = lx.engine; @@ -148,17 +154,12 @@ void setup() { // Transitions transitions = transitions(lx); - activeTransition = new DiscreteParameter("TRANSITION", transitions.length); - activeTransition.addListener(new LXParameterListener() { - public void onParameterChanged(LXParameter parameter) { - lx.engine.getDeck(RIGHT_DECK).setFaderTransition(transitions[activeTransition.getValuei()]); - } - }); - lx.engine.getDeck(RIGHT_DECK).setFaderTransition(transitions[activeTransition.getValuei()]); + lx.engine.getDeck(RIGHT_DECK).setFaderTransition(transitions[0]); logTime("Built transitions"); // Effects - glucose.lx.addEffects(_effectsArray(effects = new Effects())); + lx.addEffects(effectsArr = _effectsArray(effects = new Effects())); + selectedEffect = new DiscreteParameter("EFFECT", effectsArr.length); logTime("Built effects"); // Preset manager @@ -180,9 +181,10 @@ void setup() { x.printStackTrace(); } logTime("Built Grizzly Outputs"); - - // Mapping tools + + // Mapping tool mappingTool = new MappingTool(lx); + logTime("Built Mapping Tool"); // Build overlay UI UILayer[] layers = new UILayer[] { @@ -192,14 +194,14 @@ void setup() { .setRadius(290).addComponent(new UICubesLayer()), // Left controls - uiPatternA = new UIPatternDeck(lx.ui, lx.engine.getDeck(GLucose.LEFT_DECK), "PATTERN A", 4, 4, 140, 324), + uiPatternA = new UIPatternDeck(lx.ui, lx.engine.getDeck(LEFT_DECK), "PATTERN A", 4, 4, 140, 324), new UIBlendMode(4, 332, 140, 86), new UIEffects(4, 422, 140, 144), new UITempo(4, 570, 140, 50), uiSpeed = new UISpeed(4, 624, 140, 50), // Right controls - new UIPatternDeck(lx.ui, lx.engine.getDeck(GLucose.RIGHT_DECK), "PATTERN B", width-144, 4, 140, 324), + new UIPatternDeck(lx.ui, lx.engine.getDeck(RIGHT_DECK), "PATTERN B", width-144, 4, 140, 324), uiMidi = new UIMidi(midiEngine, width-144, 332, 140, 158), new UIOutput(grizzlies, width-144, 494, 140, 106), @@ -230,7 +232,7 @@ public SCPattern getPattern() { /** * Subclass of LXPattern specific to sugar cubes. These patterns - * get access to the glucose state and geometry, and have some + * get access to the state and geometry, and have some * little helpers for interacting with the model. */ public static abstract class SCPattern extends LXPattern { @@ -322,7 +324,7 @@ void draw() { background(40); // Send colors - color[] sendColors = glucose.getColors(); + color[] sendColors = lx.getColors(); long gammaStart = System.nanoTime(); // Gamma correction here. Apply a cubic to the brightness // for better representation of dynamic range @@ -345,107 +347,6 @@ void draw() { } } -class UICubesLayer extends UICameraComponent { - void onDraw(UI ui) { - color[] simulationColors = glucose.getColors(); - String displayMode = uiCrossfader.getDisplayMode(); - if (displayMode == "A") { - simulationColors = lx.engine.getDeck(GLucose.LEFT_DECK).getColors(); - } else if (displayMode == "B") { - simulationColors = lx.engine.getDeck(GLucose.RIGHT_DECK).getColors(); - } - - long simulationStart = System.nanoTime(); - if (simulationOn) { - drawSimulation(simulationColors); - } - simulationNanos = System.nanoTime() - simulationStart; - - camera(); - javax.media.opengl.GL gl = ((PGraphicsOpenGL)g).beginGL(); - gl.glClear(javax.media.opengl.GL.GL_DEPTH_BUFFER_BIT); - ((PGraphicsOpenGL)g).endGL(); - strokeWeight(1); - } - - void drawSimulation(color[] simulationColors) { - translate(0, 30, 0); - - noStroke(); - fill(#141414); - drawBox(0, -TRAILER_HEIGHT, 0, 0, 0, 0, TRAILER_WIDTH, TRAILER_HEIGHT, TRAILER_DEPTH, TRAILER_HEIGHT/2.); - fill(#070707); - stroke(#222222); - beginShape(); - vertex(0, 0, 0); - vertex(TRAILER_WIDTH, 0, 0); - vertex(TRAILER_WIDTH, 0, TRAILER_DEPTH); - vertex(0, 0, TRAILER_DEPTH); - endShape(); - - // Draw the logo on the front of platform - pushMatrix(); - translate(0, 0, -1); - float s = .07; - scale(s, -s, s); - image(logo, TRAILER_WIDTH/2/s-logo.width/2, TRAILER_HEIGHT/2/s-logo.height/2-2/s); - popMatrix(); - - noStroke(); - for (Cube c : model.cubes) { - drawCube(c); - } - - noFill(); - strokeWeight(2); - beginShape(POINTS); - for (LXPoint p : model.points) { - stroke(simulationColors[p.index]); - vertex(p.x, p.y, p.z); - } - endShape(); - } - - 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 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); - rotate(rx / 180. * PI, -1, 0, 0); - rotate(ry / 180. * PI, 0, -1, 0); - rotate(rz / 180. * PI, 0, 0, -1); - for (int i = 0; i < 4; ++i) { - float wid = (i % 2 == 0) ? xd : zd; - - beginShape(); - vertex(0, 0); - vertex(wid, 0); - vertex(wid, yd); - vertex(wid - sw, yd); - vertex(wid - sw, sw); - vertex(0, sw); - endShape(); - beginShape(); - vertex(0, sw); - vertex(0, yd); - vertex(wid - sw, yd); - vertex(wid - sw, yd - sw); - vertex(sw, yd - sw); - vertex(sw, sw); - endShape(); - - translate(wid, 0, 0); - rotate(HALF_PI, 0, -1, 0); - } - popMatrix(); - } -} - void drawDiagnostics(long drawNanos, long simulationNanos, long uiNanos, long gammaNanos) { float ws = 4 / 1000000.; int thirtyfps = 1000000000 / 30;