class Cursor { Position p = new Position(); Position s = new Position(); color c = shapeColor; boolean kill = false, down = false; int fade = 0, fadeSteps = 10; Cursor() {} void be() { if (down && !kill) { resize(); draw(); } else if (down && kill) { fade(); } } void draw() { noStroke(); fill(c); rectMode(CORNERS); rect(p.x, p.y, s.x, s.y); } void set(float x, float y) { down = true; p.set(x,y); } void resize() { if (mousePressed) { s.set(mouseX, mouseY); } } void kill() { kill = true; } void fade() { float alfa = 255 - ((float)fade/(float)fadeSteps*255); c = color(red(c), green(c), blue(c), alfa); noStroke(); fill(c); rectMode(CENTER); rect((s.x + p.x)/2, (s.y + p.y)/2, (s.x - p.x) - (s.x - p.x)*((float)fade/(float)fadeSteps), (s.y - p.y) - (s.y - p.y)*((float)fade/(float)fadeSteps)); fade++; if (fade > fadeSteps) { fade = 0; c = shapeColor; kill = false; down = false; } } } void cursor_controller() { if (!mousePressed && numSelected < 2 && myCursor.down) { myCursor.kill(); } myCursor.be(); }