00001 #include "BufferedBool.h" 00002 00003 namespace luma 00004 { 00005 namespace numbers 00006 { 00007 00008 BufferedBool::BufferedBool(float bottomThreshold, float topThreshold, float increment): 00009 mBottomThreshold(bottomThreshold), 00010 mTopThreshold(topThreshold), 00011 mFloatValue(0.0f, 0.0f, 1.0f, increment), 00012 mBoolValue(false) 00013 { 00014 } 00015 00016 void BufferedBool::setValue(bool value, float ellapsedTime) 00017 { 00018 if(value) 00019 { 00020 mFloatValue.inc(ellapsedTime); 00021 00022 //above threshold - so switch 00023 if(mFloatValue > mTopThreshold) 00024 { 00025 mBoolValue = true; 00026 } 00027 } 00028 else 00029 { 00030 mFloatValue.dec(ellapsedTime); 00031 00032 //below threshold - so swith 00033 if(mFloatValue < mBottomThreshold) 00034 { 00035 mBoolValue = false; 00036 } 00037 } 00038 } 00039 00040 bool BufferedBool::getValue() const 00041 { 00042 return mBoolValue; 00043 } 00044 00045 void BufferedBool::forceValue(bool value) 00046 { 00047 mBoolValue = value; 00048 mFloatValue.setValue(value ? mFloatValue.max() : mFloatValue.min()); 00049 } 00050 00051 void BufferedBool::setIncrement(float increment) 00052 { 00053 mFloatValue.setIncrement(increment); 00054 } 00055 00056 float BufferedBool::getFloatValue() const 00057 { 00058 return mFloatValue.getValue(); 00059 } 00060 00061 }} //namespace