Parcourir la source

added brick/shader swapping function to gui

master
Victor Giers il y a 1 an
Parent
révision
8ed7825aa4
2 fichiers modifiés avec 104 ajouts et 17 suppressions
  1. 1
    1
      data/saves.sav
  2. 103
    16
      secondapplet.pde

+ 1
- 1
data/saves.sav Voir le fichier

//globals //globals
uptime = 116631667
uptime = 116632721

+ 103
- 16
secondapplet.pde Voir le fichier



PImage bin; PImage bin;



public class SecondApplet extends PApplet { public class SecondApplet extends PApplet {
ControlP5 cp5; ControlP5 cp5;
shaderManager shaderManager = new shaderManager(); shaderManager shaderManager = new shaderManager();
ArrayList<Shader> shaderList = new ArrayList<Shader>(); ArrayList<Shader> shaderList = new ArrayList<Shader>();
ArrayList<Brick> bricks = new ArrayList<Brick>(); ArrayList<Brick> bricks = new ArrayList<Brick>();
ArrayList<Slider> slider = new ArrayList<Slider>(); //brick ArrayList<Slider> slider = new ArrayList<Slider>(); //brick
int binX, binY, binS;
public void settings() { public void settings() {
size(275, 120); size(275, 120);
} }
.setPosition(100, height-50) .setPosition(100, height-50)
.setSize(20, 20) .setSize(20, 20)
.plugTo(this, "CP5_recordAction"); .plugTo(this, "CP5_recordAction");

binX = width-55;
binY = height-85;
binS = 40;
} }


void CP5_recordAction() { void CP5_recordAction() {
int totalBrickHeight; int totalBrickHeight;
public void draw() { public void draw() {
background(68, 68, 68); background(68, 68, 68);
image(bin, width-55, height-85, 40, 40);
image(bin, binX, binY, binS, binS);
stroke(255); stroke(255);
strokeWeight(1); strokeWeight(1);
line(0, height-120, width, height-120); line(0, height-120, width, height-120);
for (int i = 0; i < shaderList.size(); i++) { for (int i = 0; i < shaderList.size(); i++) {
bricks.get(i).update(); bricks.get(i).update();
bricks.get(i).display(); bricks.get(i).display();
bricks.get(i).y = totalBrickHeight;
totalBrickHeight+= bricks.get(i).h; totalBrickHeight+= bricks.get(i).h;
} }
if (pressedBrick != -1) {
fill(255);
noStroke();
rect(mouseX, mouseY, 35, 15);
}
} }




void refreshSurface() {
surface.setSize(width, height+bricks.get(shaderList.size()-1).h);
void refreshSurface(int mode) {
if (shaderList.size() > 0) {
if (mode == 0) surface.setSize(width, height+bricks.get(shaderList.size()-1).h);
else if (mode == 1) surface.setSize(width, height-bricks.get(pressedBrick).h);
} else {
surface.setSize(width, 120);
}

cp5.setPosition(0, height-120); cp5.setPosition(0, height-120);
binY = height-85;
} }


class shaderManager { class shaderManager {
shaderList.add(shader); shaderList.add(shader);
shader.pos = shaderList.size()-1; shader.pos = shaderList.size()-1;
bricks.add(new Brick(shaderList.size()-1, shaderList.get(shaderList.size()-1).params, shader.name)); bricks.add(new Brick(shaderList.size()-1, shaderList.get(shaderList.size()-1).params, shader.name));
refreshSurface();
refreshSurface(0);
println("Added " + shader + " to fxList at spot. List length: " + shaderList.size()); println("Added " + shader + " to fxList at spot. List length: " + shaderList.size());
} }
void swapShader(int pos1, int pos2) { void swapShader(int pos1, int pos2) {
Collections.swap(bricks, pos1, pos2); Collections.swap(bricks, pos1, pos2);
shaderList.get(pos1).pos = pos1; shaderList.get(pos1).pos = pos1;
shaderList.get(pos2).pos = pos2; shaderList.get(pos2).pos = pos2;
bricks.get(pos1).pos = pos1;
bricks.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 removeShader(int pos) { void removeShader(int pos) {
if (pos >= 0 && shaderList.size() > pos) { if (pos >= 0 && shaderList.size() > pos) {
refreshSurface(1);
shaderList.remove(pos); shaderList.remove(pos);
bricks.remove(pos); bricks.remove(pos);
for (int i = shaderList.size()-1; i > -1; i--) { for (int i = shaderList.size()-1; i > -1; i--) {
bricks.get(i).pos = i;
//bricks.get(i).pos = i;
bricks.get(i).setPos(i);
shaderList.get(i).pos = i; shaderList.get(i).pos = i;
} }
refreshSurface();
} }
} }
void applyShader() { void applyShader() {
} }
} }
} }
int pressedBrick = -1;
class Brick { class Brick {
ArrayList<Slider> slider = new ArrayList<Slider>(); ArrayList<Slider> slider = new ArrayList<Slider>();
ArrayList<Param> params = new ArrayList<Param>(); ArrayList<Param> params = new ArrayList<Param>();
boolean dragHovered;
boolean dragging, dragHovering, hovering;
color brickBGcol; color brickBGcol;
int pos; int pos;
int h;
int h, y;
String name; String name;


Brick(int pos_, ArrayList params_, String name_) { Brick(int pos_, ArrayList params_, String name_) {
name = name_; name = name_;
pos = pos_; pos = pos_;
params = params_; params = params_;
y = totalBrickHeight;
h = 20 + params.size() * 20; h = 20 + params.size() * 20;
for (int i = 0; i < params.size(); i++) { for (int i = 0; i < params.size(); i++) {
slider.add(new Slider(10, 20+(20*i)+totalBrickHeight, 230, 12, params.get(i).minValue, params.get(i).maxValue, params.get(i).name, params.get(i).type, params.get(i).osciModes)); //add possible waves to slider
slider.add(new Slider(10, 20+(20*i)+y, 230, 12, params.get(i).minValue, params.get(i).maxValue, params.get(i).name, params.get(i).type, params.get(i).osciModes)); //add possible waves to slider
} }
println(totalBrickHeight + " " + h); println(totalBrickHeight + " " + h);
} }


void setPos(int pos_) {
pos = pos_;
}

void updateSliderPos() {
y = 0;
for (int i = 0; i < pos; i++) {
y += bricks.get(i).h;
}
for (int i = 0; i < slider.size(); i++) {
slider.get(i).y = 20+(20*i)+y;
}
}

void exchangeSlider(int sliderNo, Param param) { void exchangeSlider(int sliderNo, Param param) {
slider.get(sliderNo).setMinMax(param.minValue, param.maxValue); slider.get(sliderNo).setMinMax(param.minValue, param.maxValue);
slider.get(sliderNo).setMode(param.type); slider.get(sliderNo).setMode(param.type);




void update() { void update() {
boolean sliderHover = false;
for (int i = 0; i < slider.size(); i++) {
if (slider.get(i).hovering || slider.get(i).hovering_anim_btn)
sliderHover = true;
}

if (mouseY > totalBrickHeight && mouseY < totalBrickHeight+h && !sliderHover) {
hovering = true;
} else {
hovering = false;
}

for (int i = 0; i < slider.size(); i++) { for (int i = 0; i < slider.size(); i++) {
slider.get(i).update(); slider.get(i).update();
params.get(i).value = slider.get(i).value; params.get(i).value = slider.get(i).value;
brickBGcol = color(85, 85, 85); brickBGcol = color(85, 85, 85);
} }


void press() {
pressedBrick = pos;
}

void display() { void display() {
noStroke(); noStroke();
if (dragging) brickBGcol = color(51, 51, 51);
else if (dragHovering) brickBGcol= color (105, 105, 105);
else brickBGcol = color(85, 85, 85);
fill(brickBGcol); fill(brickBGcol);
rect(0, totalBrickHeight, width, h); rect(0, totalBrickHeight, width, h);


} }


stroke(150); stroke(150);
strokeWeight(1+int(dragHovered)*2);
strokeWeight(1);
line(0, totalBrickHeight+h-1, width, totalBrickHeight+h-1); line(0, totalBrickHeight+h-1, width, totalBrickHeight+h-1);
} }
} }
void display() { void display() {


stroke(255); stroke(255);
strokeWeight(1);
fill(100+(40*int(hovering))); fill(100+(40*int(hovering)));
rect(x, y, w, h); rect(x, y, w, h);
fill(185+(40*int(hovering))); fill(185+(40*int(hovering)));
} }


void mousePressed() { void mousePressed() {
for (int i = slider.size()-1; i >= 0; i--) {
for (int i = slider.size()-1; i >= 0; i--) {
Slider s = slider.get(i); Slider s = slider.get(i);
if (s.hovering) s.press(i); if (s.hovering) s.press(i);
if (s.hovering_anim_btn) s.animated = !s.animated; if (s.hovering_anim_btn) s.animated = !s.animated;
} }
for (int i = bricks.size()-1; i >= 0; i--) {
if (bricks.get(i).hovering) {
bricks.get(i).press();
}
}
} }
void mouseDragged() { void mouseDragged() {
if (pressedSlider != -1) { if (pressedSlider != -1) {
Slider s = slider.get(pressedSlider); Slider s = slider.get(pressedSlider);
s.setValue(map(mouseX, s.x, s.x+s.w, s.minVal, s.maxVal)); s.setValue(map(mouseX, s.x, s.x+s.w, s.minVal, s.maxVal));
} }
if (pressedBrick != -1) {
bricks.get(pressedBrick).dragging = true;

for (int i = 0; i < bricks.size(); i++) {
if (pressedBrick != i && bricks.get(i).hovering) {
bricks.get(i).dragHovering = true;
} else {
bricks.get(i).dragHovering = false;
}
}
}
} }


void mouseReleased() { 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) {
shaderManager.swapShader(pressedBrick, i);
}
}
if (mouseX > binX && mouseX < binX+binS && mouseY > binY && mouseY < binY+binS) {
println("removing");
shaderManager.removeShader(pressedBrick);
}
}
pressedSlider = -1; pressedSlider = -1;
pressedBrick = -1;
} }
} }

Chargement…
Annuler
Enregistrer