summaryrefslogtreecommitdiff
path: root/basedProject/src/keyVar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'basedProject/src/keyVar.cpp')
-rw-r--r--basedProject/src/keyVar.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/basedProject/src/keyVar.cpp b/basedProject/src/keyVar.cpp
new file mode 100644
index 0000000..1bf562a
--- /dev/null
+++ b/basedProject/src/keyVar.cpp
@@ -0,0 +1,63 @@
+/*
+ * keyvar.cpp
+
+ generalised cushioned keyboard controller
+ //todo time based rather than onoff to get around keyrepeat issue
+ */
+
+#include "keyVar.h"
+#define DEBUG 0
+
+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;
+ inc=0;
+
+}
+void keyVar::keyPressed(char _key){
+ //need to deal with key repeat: OSX anyway
+ if (_key==keyInc&&state!=1) {
+ state=1;
+ timePressed=timeCalc=ofGetElapsedTimef();
+ if (DEBUG) printf("pressed %i:%i\n",_key,ofGetElapsedTimeMillis());
+ }
+ if (_key==keyDec&&state!=-1) {
+ state=-1;
+ timePressed=timeCalc=ofGetElapsedTimef();
+ if (DEBUG) printf("pressed %i:%i\n",_key,ofGetElapsedTimeMillis());
+ }
+}
+void keyVar::keyReleased(char _key){
+ if (_key==keyInc&&state==1) {
+ state=0;
+ if (DEBUG) printf("released %i:%i\n",_key,ofGetElapsedTimeMillis());
+ }
+ if (_key==keyDec&&state==-1) {
+ state=0;
+ if (DEBUG) printf("released %i:%i\n",_key,ofGetElapsedTimeMillis());
+ }
+}
+float keyVar::getVal(){
+ float segment = min(1.0f,(ofGetElapsedTimef()-timePressed)/accelTime);
+ //if (state)
+ val+=pow(segment,accel)*speed*state; //(ofGetElapsedTimef()-timeCalc)*
+ inc=pow(segment,accel)*speed*state;
+ timeCalc=ofGetElapsedTimef();
+ return val;
+}
+float keyVar::readVal(){
+ return val;
+}
+float keyVar::getInc(){
+ float segment = min(1.0f,(ofGetElapsedTimef()-timePressed)/accelTime);
+ return pow(segment,accel)*speed*state;
+}
+void keyVar::setVal(float _val){
+ val=_val;
+}