/**
* ControlP5 plugTo
*
* This example demonstrate how to use the plugTo method to
* connect a controller to a field or method of a particular object.
*
*
* find a list of public methods available for the ControlP5 Controller
* at the bottom of this sketch.
*
* by Andreas Schlegel, 2011
* www.sojamo.de/libraries/controlp5
*
*/
import controlP5.*;
import processing.opengl.*;
ControlP5 controlP5;
Test[] testarray;
Test test;
Button b;
int cnt;
void setup() {
size(600,400);
smooth();
test = new Test(50);
testarray = new Test[10];
for(int i=0;i<10;i++) {
testarray[i] = new Test(200 + i*20);
}
controlP5 = new ControlP5(this);
controlP5.begin(100,20);
b = controlP5.addButton("trigger",1);
b.setColorBackground(ControlP5.RED);
controlP5.addButton("plug",2);
controlP5.addButton("unplug",3);
// b is a button previously added to controlP5 with name 'trigger'
// controlP5 no tries to find a field or method inside object test
// in order to connect controller 'trigger' with test.trigger()
b.plugTo(test);
controlP5.end();
}
// connects controller 'trigger' with objects of type Test contained
// inside arrat testarray
void plug(int theValue) {
b.plugTo(testarray);
b.setColorBackground(ControlP5.GREEN);
println("plugging controller b1 to array 'testarray' and variable 'test'.");
}
// disconnects controller 'trigger' from objects of type Test stored
// inside array testarray
void unplug(int theValue) {
b.unplugFrom(testarray);
b.setColorBackground(ControlP5.RED);
println("removing array 'testarray' and variable 'test' from controller b1.");
}
void draw() {
background(0);
fill(255);
for(int i=0;i<10;i++) {
testarray[i].display();
}
test.display();
cnt++;
if(cnt%30 == 0) {
controlP5.getController("trigger").update();
}
}
class Test {
float n0 = 0;
float n1 = 1;
float x;
Test(float theX) {
x = theX;
}
void trigger(int theValue) {
n1 = random(100);
}
void display() {
n0 += (n1-n0) * 0.1;
rect(x,200,10,n0);
}
void controlEvent(ControlEvent theEvent) {
//println("\t\t b1 event sub \n\n");
}
}