/* * keyvar.cpp generalised cushioned keyboard controller */ #include "keyVar.h" void keyVar::set(char _keyInc,char _keyDec,float _val,float _speed,float _accel,float _accelTime){ keyInc=_keyInc; keyDec=_keyDec; val=_val; //initial value speed=_speed; accel=_accel; accelTime=_accelTime; state=0; timePressed=timeCalc=0; } void keyVar::keyPressed(char _key){ //need to deal with key repeat: OSX anyway if (_key==keyInc&&state!=1) { state=1; timePressed=timeCalc=ofGetElapsedTimef(); printf("pressed %i\n",_key); } if (_key==keyDec&&state!=-1) { state=-1; timePressed=timeCalc=ofGetElapsedTimef(); printf("pressed %i\n",_key); } } void keyVar::keyReleased(char _key){ if (_key==keyInc&&state==1) { state=0; printf("released %i\n",_key); } if (_key==keyDec&&state==-1) { state=0; printf("released %i\n",_key); } } float keyVar::getVal(){ float segment = min(1.0f,(ofGetElapsedTimef()-timePressed)/accelTime); if (state) val+=pow(segment,accel)*(ofGetElapsedTimef()-timeCalc)*speed*state; timeCalc=ofGetElapsedTimef(); return val; }