|
|
@@ -47,7 +47,7 @@ public class SecondApplet extends PApplet { |
|
|
|
stroke(255); |
|
|
|
strokeWeight(1); |
|
|
|
line(0, height-120, width, height-120); |
|
|
|
totalBrickHeight = 0; |
|
|
|
totalBrickHeight = 0; |
|
|
|
for (int i = 0; i < shaderList.size(); i++) { |
|
|
|
bricks.get(i).update(); |
|
|
|
bricks.get(i).display(); |
|
|
@@ -75,6 +75,7 @@ public class SecondApplet extends PApplet { |
|
|
|
} |
|
|
|
|
|
|
|
class shaderManager { |
|
|
|
|
|
|
|
void addShader(Shader shader) { |
|
|
|
shaderList.add(shader); |
|
|
|
shader.pos = shaderList.size()-1; |
|
|
@@ -82,17 +83,29 @@ public class SecondApplet extends PApplet { |
|
|
|
refreshSurface(0); |
|
|
|
println("Added " + shader + " to fxList at spot. List length: " + shaderList.size()); |
|
|
|
} |
|
|
|
|
|
|
|
void swapShader(int pos1, int pos2) { |
|
|
|
if (pos1 >= 0 && pos2 < shaderList.size()) { |
|
|
|
Collections.swap(shaderList, pos1, pos2); |
|
|
|
Collections.swap(bricks, pos1, pos2); |
|
|
|
shaderList.get(pos1).pos = pos1; |
|
|
|
shaderList.get(pos2).pos = pos2; |
|
|
|
bricks.get(pos1).setPos(pos1); |
|
|
|
bricks.get(pos2).setPos(pos2); |
|
|
|
for (int i = 0; i < bricks.size(); i++) { |
|
|
|
bricks.get(i).updateSliderPos(); |
|
|
|
} |
|
|
|
//if (pos1 >= 0 && pos2 < shaderList.size()) { |
|
|
|
Collections.swap(shaderList, pos1, pos2); |
|
|
|
Collections.swap(bricks, pos1, pos2); |
|
|
|
shaderList.get(pos1).pos = pos1; |
|
|
|
shaderList.get(pos2).pos = pos2; |
|
|
|
bricks.get(pos1).setPos(pos1); |
|
|
|
bricks.get(pos2).setPos(pos2); |
|
|
|
for (int i = 0; i < bricks.size(); i++) { |
|
|
|
bricks.get(i).updateSliderPos(); |
|
|
|
} |
|
|
|
//} |
|
|
|
} |
|
|
|
|
|
|
|
void moveShader(int pos1, int pos2) { |
|
|
|
Shader s = shaderList.remove(pos1); |
|
|
|
Brick b = bricks.remove(pos1); |
|
|
|
|
|
|
|
shaderList.add(pos2, s); |
|
|
|
bricks.add(pos2, b); |
|
|
|
for (int i = 0; i < bricks.size(); i++) { |
|
|
|
bricks.get(i).updateSliderPos(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -102,8 +115,8 @@ public class SecondApplet extends PApplet { |
|
|
|
shaderList.remove(pos); |
|
|
|
bricks.remove(pos); |
|
|
|
for (int i = shaderList.size()-1; i > -1; i--) { |
|
|
|
//bricks.get(i).pos = i; |
|
|
|
bricks.get(i).setPos(i); |
|
|
|
bricks.get(i).updateSliderPos(); |
|
|
|
shaderList.get(i).pos = i; |
|
|
|
} |
|
|
|
} |
|
|
@@ -116,11 +129,12 @@ public class SecondApplet extends PApplet { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
int pressedBrick = -1; |
|
|
|
class Brick { |
|
|
|
ArrayList<Slider> slider = new ArrayList<Slider>(); |
|
|
|
ArrayList<Param> params = new ArrayList<Param>(); |
|
|
|
boolean dragging, dragHovering, hovering; |
|
|
|
boolean dragging, dragHovering, hovering, hoveringLineAbove, hoveringLineBelow; |
|
|
|
color brickBGcol; |
|
|
|
int pos; |
|
|
|
int h, y; |
|
|
@@ -166,10 +180,18 @@ public class SecondApplet extends PApplet { |
|
|
|
sliderHover = true; |
|
|
|
} |
|
|
|
|
|
|
|
if (mouseY > totalBrickHeight && mouseY < totalBrickHeight+h && !sliderHover) { |
|
|
|
hovering = true; |
|
|
|
if (mouseY > y-5 && mouseY < y+5 && pressedBrick != -1) { |
|
|
|
hoveringLineAbove = true; |
|
|
|
} else if (pos == bricks.size()-1 && mouseY > y+h-5 && mouseY < y+h+5 && pressedBrick != -1) { |
|
|
|
hoveringLineBelow = true; |
|
|
|
} else { |
|
|
|
hovering = false; |
|
|
|
hoveringLineBelow = false; |
|
|
|
hoveringLineAbove = false; |
|
|
|
if (mouseY > totalBrickHeight && mouseY < totalBrickHeight+h && !sliderHover) { |
|
|
|
hovering = true; |
|
|
|
} else { |
|
|
|
hovering = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for (int i = 0; i < slider.size(); i++) { |
|
|
@@ -186,7 +208,7 @@ public class SecondApplet extends PApplet { |
|
|
|
void display() { |
|
|
|
noStroke(); |
|
|
|
if (dragging) brickBGcol = color(51, 51, 51); |
|
|
|
else if (dragHovering) brickBGcol= color (105, 105, 105); |
|
|
|
else if (dragHovering && !hoveringLineBelow && !hoveringLineAbove) brickBGcol= color (105, 105, 105); |
|
|
|
else brickBGcol = color(85, 85, 85); |
|
|
|
fill(brickBGcol); |
|
|
|
rect(0, totalBrickHeight, width, h); |
|
|
@@ -201,6 +223,17 @@ public class SecondApplet extends PApplet { |
|
|
|
stroke(150); |
|
|
|
strokeWeight(1); |
|
|
|
line(0, totalBrickHeight+h-1, width, totalBrickHeight+h-1); |
|
|
|
|
|
|
|
if(hoveringLineAbove){ |
|
|
|
stroke(200); |
|
|
|
strokeWeight(5); |
|
|
|
line(0,y,width,y); |
|
|
|
} |
|
|
|
if(hoveringLineBelow){ |
|
|
|
stroke(200); |
|
|
|
strokeWeight(5); |
|
|
|
line(0,y+h,width,y+h); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -432,12 +465,26 @@ public class SecondApplet extends PApplet { |
|
|
|
void mouseReleased() { |
|
|
|
if (pressedBrick != -1) { |
|
|
|
bricks.get(pressedBrick).dragging = false; |
|
|
|
|
|
|
|
for (int i = 0; i < bricks.size(); i++) { |
|
|
|
bricks.get(i).dragHovering = false; |
|
|
|
if (pressedBrick != i && bricks.get(i).hovering) { |
|
|
|
if (pressedBrick != i && bricks.get(i).hovering && !bricks.get(i).hoveringLineAbove && !bricks.get(i).hoveringLineBelow) { |
|
|
|
shaderManager.swapShader(pressedBrick, i); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(pressedBrick != i && bricks.get(i).hoveringLineAbove){ |
|
|
|
shaderManager.moveShader(pressedBrick,i); |
|
|
|
} |
|
|
|
if(pressedBrick != i && bricks.get(i).hoveringLineBelow){ |
|
|
|
shaderManager.moveShader(pressedBrick,bricks.size()-1); //move to last |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (mouseX > binX && mouseX < binX+binS && mouseY > binY && mouseY < binY+binS) { |
|
|
|
println("removing"); |
|
|
|
shaderManager.removeShader(pressedBrick); |