614ControlP5, PeasyCam and HUD in Processing

A slight development of an ControlP5 example. I needed to have the controls over the PeasyCam, wasn't too hard to achieve. Nice one, Processing.

Here's the applet.

/**
 * ControlP5 with PeasyCam support. 
 * Tested with Processing 1.2.1, PeasyCam 0.8.3 and ControlP5 0.5.0
 *
 * original by
 * by jeffg 2009
 * http://processing.org/discourse/yabb2/YaBB.pl?num=1234988194/30#30
 *
 * modified by trembl 2010
 */

import peasy.*;
import controlP5.*;
import processing.opengl.*;

PeasyCam cam;
ControlP5 controlP5;
PMatrix3D currCameraMatrix;
PGraphics3D g3; 

int buttonValue = 1;

int myColor = color(255,0,0);
Slider r,gr,b;
void setup() {
  size(400,400,OPENGL);
  g3 = (PGraphics3D)g;
  cam = new PeasyCam(this, 100);
  cam.setMinimumDistance(-100);
  cam.setMaximumDistance(200);

  controlP5 = new ControlP5(this);
  //controlP5.addButton("button",10,10,10,80,20).setId(1);
  //controlP5.addButton("buttonValue",4,10,40,80,20).setId(2);

  r = controlP5.addSlider("redSlider",0,255,128,10,10,200,20);
  r.setColorActive(color(128,0,0));
  r.setColorBackground( color(127,100) );
  r.setColorForeground(color(255,0,0));
  r.setColorLabel(color(0,255,255,127));
  r.setColorValue(color(0,255,255,127));
  r.setLabel("");
  r.setLabelVisible(true);

  gr = controlP5.addSlider("greenSlider",0,255,128,10,40,200,20);
  gr.setColorActive(color(0,128,0));
  gr.setColorBackground( color(127,100) );
  gr.setColorForeground(color(0,255,0));
  gr.setColorLabel(color(0,255,255,127));
  gr.setColorValue(color(0,255,255,127));
  gr.setLabel("");
  gr.setLabelVisible(true);

  b = controlP5.addSlider("blueSlider",0,255,128,10,70,200,20);
  b.setColorActive(color(0,0,128));
  b.setColorBackground( color(127,100) );
  b.setColorForeground(color(0,0,128));
  b.setColorLabel(color(0,255,255,127));
  b.setColorValue(color(0,255,255,127));
  b.setLabel("");
  b.setLabelVisible(true);

  controlP5.setAutoDraw(false);
}
void draw() {

  background(0);
  fill(myColor);
  box(30);
  pushMatrix();
  translate(0,0,20);
  fill(0,0,255);
  box(5);
  popMatrix();

  cam.beginHUD();
  gui();
  cam.endHUD();

  cam.setMouseControlled(true);
  if(r.isInside() || gr.isInside() || b.isInside() ) {
    cam.setMouseControlled(false);
  } 
}

void gui() {
  currCameraMatrix = new PMatrix3D(g3.camera);
  camera();
  controlP5.draw();
  g3.camera = currCameraMatrix;
}

void redSlider(float v) {
  myColor = color( v, green(myColor), blue(myColor) );
  r.setColorActive(color(v,0,0));
}

void greenSlider(float v) {
  myColor = color(red(myColor), v, blue(myColor) );
  gr.setColorActive(color(0,v,0));
}

void blueSlider(float v) {
  myColor = color(red(myColor), green(myColor), v );
  b.setColorActive(color(0,0,v));
}