+
+ // Send colors
+ color[] sendColors = glucose.getColors();
+ long gammaStart = System.nanoTime();
+ // Gamma correction here. Apply a cubic to the brightness
+ // for better representation of dynamic range
+ for (int i = 0; i < sendColors.length; ++i) {
+ lx.RGBtoHSB(sendColors[i], hsb);
+ float b = hsb[2];
+ sendColors[i] = lx.hsb(360.*hsb[0], 100.*hsb[1], 100.*(b*b*b));
+ }
+ long gammaNanos = System.nanoTime() - gammaStart;
+
+ // Always draw FPS meter
+ drawFPS();
+
+ // TODO(mcslee): fix
+ long drawNanos = System.nanoTime() - drawStart;
+
+ long simulationNanos = 0, uiNanos = 0;
+ if (diagnosticsOn) {
+ drawDiagnostics(drawNanos, simulationNanos, uiNanos, gammaNanos);
+ }
+}
+
+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();
+ }