Browse Source

first steps for moveIn function in gui

master
Victor Giers 1 year ago
parent
commit
2e1986d398
1 changed files with 65 additions and 18 deletions
  1. 65
    18
      secondapplet.pde

+ 65
- 18
secondapplet.pde View File

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

Loading…
Cancel
Save