|
| 1 | +class Vortex_Effect extends Effect |
| 2 | +{ |
| 3 | + String getName() |
| 4 | + { |
| 5 | + return "Spinner"; |
| 6 | + } |
| 7 | + |
| 8 | + char triggeredByKey() { |
| 9 | + return '9'; |
| 10 | + } |
| 11 | + int currentPulseValue, maxSize; |
| 12 | + float offset, gap; |
| 13 | + boolean swap; |
| 14 | + Toggle bwToggle, dualColourToggle, swapColourToggle, pulseToggle; |
| 15 | + Slider weightSlider, sizeSlider, gapSlider, hueSlider, hue2Slider, speedSlider; |
| 16 | + |
| 17 | + Vortex_Effect(MusicBeam controller, int y) |
| 18 | + { |
| 19 | + super(controller, y); |
| 20 | + swap=false; |
| 21 | + int maxWeight =20; |
| 22 | + maxSize = min(stg.width, stg.height) - maxWeight; |
| 23 | + currentPulseValue=0; |
| 24 | + weightSlider = cp5.addSlider("weight"+getName()).setPosition(0, 5).setSize(395, 45).setRange(1, 100).setGroup(controlGroup); |
| 25 | + weightSlider.getCaptionLabel().set("Weight").align(ControlP5.RIGHT, ControlP5.CENTER); |
| 26 | + weightSlider.setValue(20); |
| 27 | + |
| 28 | + sizeSlider = cp5.addSlider("size"+getName()).setPosition(0, 55).setSize(395, 45).setRange(200, maxSize).setGroup(controlGroup); |
| 29 | + sizeSlider.getCaptionLabel().set("Size").align(ControlP5.RIGHT, ControlP5.CENTER); |
| 30 | + sizeSlider.setValue(maxSize/4*3); |
| 31 | + |
| 32 | + speedSlider = cp5.addSlider("speed"+getName()).setPosition(0, 105).setSize(395, 45).setRange(-45, 45).setGroup(controlGroup); |
| 33 | + speedSlider.getCaptionLabel().set("Speed").align(ControlP5.RIGHT, ControlP5.CENTER); |
| 34 | + speedSlider.setValue(7.5); |
| 35 | + |
| 36 | + gapSlider = cp5.addSlider("gap"+getName()).setPosition(0, 155).setSize(395, 45).setRange(0, 180).setGroup(controlGroup); |
| 37 | + gapSlider.getCaptionLabel().set("gap").align(ControlP5.RIGHT, ControlP5.CENTER); |
| 38 | + gapSlider.setValue(90); |
| 39 | + |
| 40 | + hueSlider = cp5.addSlider("hue"+getName()).setPosition(0, 205).setSize(395, 45).setRange(0, 360).setGroup(controlGroup); |
| 41 | + hueSlider.getCaptionLabel().set("hue").align(ControlP5.RIGHT, ControlP5.CENTER); |
| 42 | + hueSlider.setValue(50); |
| 43 | + |
| 44 | + hue2Slider = cp5.addSlider("hue2"+getName()).setPosition(0, 255).setSize(395, 45).setRange(0, 360).setGroup(controlGroup); |
| 45 | + hue2Slider.getCaptionLabel().set("hue2").align(ControlP5.RIGHT, ControlP5.CENTER); |
| 46 | + hue2Slider.setValue(300); |
| 47 | + |
| 48 | + bwToggle = ctrl.cp5.addToggle("bw"+getName()).setPosition(0, 305).setSize(45, 45).setGroup(controlGroup); |
| 49 | + bwToggle.getCaptionLabel().set("BW").align(ControlP5.CENTER, ControlP5.CENTER); |
| 50 | + bwToggle.setState(false); |
| 51 | + |
| 52 | + dualColourToggle = ctrl.cp5.addToggle("link"+getName()).setPosition(50, 305).setSize(110, 45).setGroup(controlGroup); |
| 53 | + dualColourToggle.getCaptionLabel().set("Dual Colours").align(ControlP5.CENTER, ControlP5.CENTER); |
| 54 | + dualColourToggle.setState(true); |
| 55 | + |
| 56 | + swapColourToggle = ctrl.cp5.addToggle("swapclolour"+getName()).setPosition(165, 305).setSize(110, 45).setGroup(controlGroup); |
| 57 | + swapColourToggle.getCaptionLabel().set("Swap Colours").align(ControlP5.CENTER, ControlP5.CENTER); |
| 58 | + swapColourToggle.setState(false); |
| 59 | + |
| 60 | + pulseToggle = ctrl.cp5.addToggle("pulse"+getName()).setPosition(280, 305).setSize(115, 45).setGroup(controlGroup); |
| 61 | + pulseToggle.getCaptionLabel().set("pulse").align(ControlP5.CENTER, ControlP5.CENTER); |
| 62 | + pulseToggle.setState(false); |
| 63 | + } |
| 64 | + |
| 65 | + int weight, circleSize, hue, hue2; |
| 66 | + |
| 67 | + void draw() { |
| 68 | + stg.noFill(); |
| 69 | + stg.strokeWeight(weight); |
| 70 | + offset += speedSlider.getValue(); |
| 71 | + offset = getDegree(offset); |
| 72 | + gap = 180 - gapSlider.getValue(); |
| 73 | + weight = int(weightSlider.getValue()); |
| 74 | + circleSize = int(sizeSlider.getValue()); |
| 75 | + hue = int(hueSlider.getValue()); |
| 76 | + hue2 = int(dualColourToggle.getState()?hue2Slider.getValue():hue); |
| 77 | + |
| 78 | + if (isKick()) { |
| 79 | + currentPulseValue = maxSize - circleSize; |
| 80 | + } |
| 81 | + if (currentPulseValue > 0) { |
| 82 | + currentPulseValue -= sqrt(currentPulseValue); |
| 83 | + } |
| 84 | + |
| 85 | + if (pulseToggle.getState()) { |
| 86 | + circleSize += currentPulseValue; |
| 87 | + } |
| 88 | + |
| 89 | + |
| 90 | + if (dualColourToggle.getState() && swapColourToggle.getState()) { |
| 91 | + if (isHat()) { |
| 92 | + swap=!swap; |
| 93 | + } |
| 94 | + if (swap) { |
| 95 | + int tmp=hue; |
| 96 | + hue=hue2; |
| 97 | + hue2=tmp; |
| 98 | + } |
| 99 | + } |
| 100 | + |
| 101 | + stg.stroke(hue%360, bwToggle.getState()?0:100, 100); |
| 102 | + stg.arc(0, 0, circleSize, circleSize, radians(offset), radians(getDegree(offset+gap))); |
| 103 | + stg.stroke(hue2%360, bwToggle.getState()?0:100, 100); |
| 104 | + stg.arc(0, 0, circleSize, circleSize, radians(getDegree(offset + 180)), radians(getDegree(offset + gap + 180))); |
| 105 | + } |
| 106 | + |
| 107 | + void keyPressed(char key, int keyCode) |
| 108 | + { |
| 109 | + super.keyPressed(key, keyCode); |
| 110 | + if (key == CODED) { |
| 111 | + if (keyCode == LEFT) |
| 112 | + sizeSlider.setValue(sizeSlider.getValue() - maxSize/20); |
| 113 | + else if (keyCode == RIGHT) |
| 114 | + sizeSlider.setValue(sizeSlider.getValue() + maxSize/20); |
| 115 | + else if (keyCode == DOWN) |
| 116 | + speedSlider.setValue(speedSlider.getValue()-1); |
| 117 | + else if (keyCode == UP) |
| 118 | + speedSlider.setValue(speedSlider.getValue()+1); |
| 119 | + else if (keyCode == CONTROL) |
| 120 | + bwToggle.setValue(!bwToggle.getState()); |
| 121 | + } |
| 122 | + } |
| 123 | + float getDegree(float in) { |
| 124 | + if (in<0) { |
| 125 | + return in+360; |
| 126 | + } |
| 127 | + if (offset>=360) { |
| 128 | + return in-360; |
| 129 | + } |
| 130 | + return in; |
| 131 | + } |
| 132 | +} |
0 commit comments