- class PatternScrollItem extends AbstractScrollItem {
-
- private LXPattern pattern;
- private String label;
-
- PatternScrollItem(LXPattern pattern) {
- this.pattern = pattern;
- label = className(pattern, "Pattern");
- }
-
- public String getLabel() {
- return label;
- }
-
- public boolean isSelected() {
- return deck.getActivePattern() == pattern;
- }
-
- public boolean isPending() {
- return deck.getNextPattern() == pattern;
- }
-
- public void onMousePressed() {
- deck.goPattern(pattern);
+ pgl = beginPGL();
+ pgl.genBuffers(1, vboName);
+ pgl.bindBuffer(PGL.ARRAY_BUFFER, vboName.get(0));
+ pgl.bufferData(PGL.ARRAY_BUFFER, nvert * 7 * SIZEOF_FLOAT, vertData, PGL.DYNAMIC_DRAW);
+ pgl.bindBuffer(PGL.ARRAY_BUFFER, 0);
+ endPGL();
+}
+
+IntBuffer allocateDirectIntBuffer(int n) {
+ return ByteBuffer.allocateDirect(n * SIZEOF_INT).order(ByteOrder.nativeOrder()).asIntBuffer();
+}
+
+FloatBuffer allocateDirectFloatBuffer(int n) {
+ return ByteBuffer.allocateDirect(n * SIZEOF_FLOAT).order(ByteOrder.nativeOrder()).asFloatBuffer();
+}
+
+ 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);