00001 // Author: Justin Kinney 00002 // Date: Sep 2008 00003 00004 #ifndef GAIN_SCHEDULE_H 00005 #define GAIN_SCHEDULE_H 1 00006 00007 #include "meshmorph.h" 00008 00009 class Gain_Schedule 00010 { 00011 private: 00012 float max_gain; // maximum allowed gain 00013 // float ref_gain; // reference gain 00014 float gain; // active gain, all the time 00015 float step; // gain change increment 00016 // int period; // used to schedule gain changes 00017 static Gain_Schedule * only_one; 00018 Gain_Schedule (void); 00019 Gain_Schedule (Gain_Schedule const &); 00020 Gain_Schedule & operator = (Gain_Schedule const &); 00021 ~Gain_Schedule (void); 00022 public: 00023 static Gain_Schedule & instance (void); 00024 void updateMaxGain (void); 00025 // void updateGain (void); 00026 00031 double getMaxGain (void) const 00032 { 00033 return max_gain; 00034 } 00035 00040 double getGain (void) const 00041 { 00042 return gain; 00043 } 00044 00045 // /** Get reference gain. 00046 // * \return Reference gain. 00047 // */ 00048 // 00049 // double getRefGain (void) const 00050 // { 00051 // return ref_gain; 00052 // } 00053 00054 // /** Reset gain to reference value. 00058 void resetGain (void) 00059 { 00060 //gain = ref_gain; 00061 gain = max_gain; 00062 } 00063 00067 void halveGain (void) 00068 { 00069 gain = gain/2.0; 00070 } 00071 00072 // /** Initialize reference gain. 00073 // */ 00074 // 00075 // void initGain (void) 00076 // { 00077 // // initialize reference gain 00078 // ref_gain = gain; 00079 // } 00080 00081 // /** Update decrement time until next gain change. 00082 // */ 00083 // 00084 // void updateGainPeriod (void) 00085 // { 00086 // // update period 00087 // if (period>0){period--;} 00088 // } 00089 00090 }; 00091 00092 #endif