vec flowField[][]; float flowSpacing=50; float buffer=0; float flowX; float flowY; float flowTransfer=.022; float flowDecay=.852; float flowMultuiplier=.8; float flowCap=6; boolean useFF=true; void manageFlowField() {//to be called by draw() if(useFF) { updateFlowField(); if(displayUI) drawFlowField(); if(mousePressed) { vec vf=findFlowVec(nv(mouseX,mouseY)); vec pm=new vec(pmouseX,pmouseY); vec mp=new vec(mouseX,mouseY); vec mv=new vec(pm,mp); // flowField[int(vf.x)][int(vf.y)].add(mv); } } } void updateFlowField() { for(int fy=0;fy0) { v=new vec(flowField[fx][fy-1].x*flowTransfer,flowField[fx][fy-1].y*flowTransfer); flowField[fx][fy].add(v); // flowField[fx][fy-1].sub(v); } if(fx>0) { v=new vec(flowField[fx-1][fy].x*flowTransfer,flowField[fx-1][fy].y*flowTransfer); flowField[fx][fy].add(v); // flowField[fx-1][fy].sub(v); } if(fy1) { v=new vec(flowField[fx][fy-2].x*flowTransfer,flowField[fx][fy-2].y*flowTransfer*.7); flowField[fx][fy].add(v); } if(fx>1) { v=new vec(flowField[fx-2][fy].x*flowTransfer,flowField[fx-2][fy].y*flowTransfer*.7); flowField[fx][fy].add(v); } if(fy