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));
}