class muscle { boolean useMuscle=false; float curLength; float defLength; float minLength; float relaxRate=.2; float contractRate=.5; boolean relax=true; boolean relaxed=true; boolean contracting=false; muscle(float l) { curLength=defLength=l; minLength=defLength*.2; // minLength=constrain(minLength,8,100); } void update() { if(contracting&&!relax) { relaxed=false; curLength-=contractRate; if(curLengthdefLength) { curLength=defLength; relaxed=true; } } } void contract() { if(relaxed) { contracting=true; relax=false; } } }