Few tiny cleanups
[SugarCubes.git] / _Internals.pde
index 0ee146de75d4740455d1965209cb2d9ed6764475..b593f3ef07b9c4aa7db088430348d3da9c653ae7 100644 (file)
@@ -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;