NVidia Gameworks
  • Main Page
  • Classes
  • Files
  • File List
  • File Members

NvTweakVar.h

Go to the documentation of this file.
00001 // TAGRELEASE: PUBLIC
00002 
00003 #ifndef NV_TWEAKVAR_H
00004 #define NV_TWEAKVAR_H
00005 
00006 #include <NvFoundation.h>
00007 
00019 struct NvTweakVarBase {
00020 protected:
00021     const char* mName; 
00022     const char* mDesc; 
00023     uint32_t mActionCode; 
00031         NvTweakVarBase(const char* name, const char *description=NULL)
00032     : mName(name)
00033     , mDesc(description)
00034     , mActionCode(0)
00035         {
00036         /*no-op*/
00037     }
00038 
00039 public:
00043         virtual void increment() = 0;
00044         virtual void decrement() = 0;
00045         virtual void reset() = 0;
00049     const char *getName() { return mName; }
00051     const char *getDesc() { return mDesc; }
00052 
00054     void setActionCode(uint32_t code) { mActionCode = code; }
00056     uint32_t getActionCode() { return mActionCode; }
00057 };
00058 
00059 
00061 template<class T>
00062 struct NvTweakVar : public NvTweakVarBase {
00063 private:   
00064         NvTweakVar() {}
00065         NvTweakVar& operator=( const NvTweakVar& v) {}
00066         NvTweakVar( const NvTweakVar& v){}
00067 
00068 protected:   
00069         T& mValRef; 
00070     T mValInitial; 
00072     T mValSelf; 
00074         T mValMin; 
00075         T mValMax; 
00076         T mValStep; 
00078         bool mValClamped; 
00079     bool mValLoop; 
00081 public:
00083         operator T&() { return mValRef;}
00085         operator const T&() const { return mValRef;}
00087         const NvTweakVar& operator=( T val) { mValRef = val; return *this; }
00088 
00090         NvTweakVar( T& refVal, const char* name, T minVal, T maxVal, T step, char *description=NULL)
00091     : NvTweakVarBase(name, description)
00092     , mValRef(refVal)
00093     , mValInitial(refVal)
00094     , mValMin(minVal)
00095     , mValMax(maxVal)
00096     , mValStep((step==0)?1:step)
00097     , mValClamped(true)
00098     , mValLoop(false)
00099     {
00100         /* no-op */
00101     }
00102 
00104         NvTweakVar(const char* name, T minVal, T maxVal, T step, char *description=NULL)
00105     : NvTweakVarBase(name, description)
00106     , mValRef(mValSelf)
00107     , mValInitial(0)
00108     , mValSelf(0)
00109     , mValMin(minVal)
00110     , mValMax(maxVal)
00111     , mValStep((step==0)?1:step)
00112     , mValClamped(true)
00113     , mValLoop(false)
00114     {
00115         /* no-op */
00116     }
00117 
00119         NvTweakVar( T& refVal, const char* name, const char *description=NULL)
00120     : NvTweakVarBase(name, description)
00121     , mValRef(refVal)
00122     , mValInitial(refVal)
00123     , mValMin((T)0)
00124     , mValMax((T)0)
00125     , mValStep((T)1)
00126     , mValClamped(false)
00127     , mValLoop(false)
00128     {
00129         /* no-op */
00130     }
00131 
00133         NvTweakVar(const char* name, const char *description=NULL)
00134     : NvTweakVarBase(name, description)
00135     , mValRef(mValSelf)
00136     , mValInitial(0)
00137     , mValSelf(0)
00138     , mValMin((T)0)
00139     , mValMax((T)0)
00140     , mValStep((T)1)
00141     , mValClamped(false)
00142     , mValLoop(false)
00143     {
00144         /* no-op */
00145     }
00146     
00148     void setValLoop(bool loop) { mValLoop = loop; }
00149 
00151     virtual void increment();
00153     virtual void decrement();
00154 
00156         virtual void reset() {
00157         mValRef = mValInitial;
00158     }
00159 };
00160 
00162 struct NvTweakCmd {
00163     enum Enum {
00164         NONE = 0, 
00165         RESET, 
00166         INCREMENT, 
00167         DECREMENT, 
00168     };
00169 };
00170 
00172 struct NvTweakBind {
00173     NvTweakCmd::Enum mCmd;
00174     NvTweakVarBase *mVar;
00175 
00176     NvTweakBind()
00177         : mCmd(NvTweakCmd::NONE), mVar(NULL) { /* no-op */ };
00178     NvTweakBind(NvTweakCmd::Enum cmd, NvTweakVarBase *var)
00179         : mCmd(cmd), mVar(var) { /* no-op */ };
00180 };
00181 
00182 #endif //NV_TWEAKVAR_H
Generated on Sat Mar 8 14:58:35 2014 for NVIDIA GameWorks OpenGL App Framework and Libraries by Doxygen
©2014 NVIDIA Corporation.