00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __CHOP_Stair__
00029 #define __CHOP_Stair__
00030
00031 #include <UT/UT_ExpandArray.h>
00032
00033 namespace HDK_Sample {
00034
00035 #define ARG_STAIR_NUMBER "number"
00036 #define ARG_STAIR_HEIGHT "height"
00037 #define ARG_STAIR_OFFSET "offset"
00038 #define ARG_STAIR_DIRECTION "direction"
00039
00040 #define ARG_STAIR_NAME "channelname"
00041 #define ARG_STAIR_START "start"
00042 #define ARG_STAIR_END "end"
00043 #define ARG_STAIR_RATE CHOP_SampleRateName.getToken()
00044 #define ARG_STAIR_LEFT CHOP_ExtendLeftName.getToken()
00045 #define ARG_STAIR_RIGHT CHOP_ExtendRightName.getToken()
00046 #define ARG_STAIR_DEFAULT CHOP_DefaultValueName.getToken()
00047
00048 class CHOP_Stair : public CHOP_Node
00049 {
00050 public:
00051
00052
00053 static OP_Node *myConstructor(OP_Network*, const char *,
00054 OP_Operator *);
00055 static OP_TemplatePair myTemplatePair;
00056 static OP_VariablePair myVariablePair;
00057 static PRM_Template myTemplateList[];
00058 static CH_LocalVariable myVariableList[];
00059
00060
00061 OP_ERROR cookMyChop(OP_Context &context);
00062
00063
00064 void cookMyHandles(OP_Context &context);
00065
00066 virtual unsigned disableParms();
00067
00068
00069 virtual float handleChanged(CHOP_Handle *handle,
00070 CHOP_HandleData *hdata);
00071
00072 virtual float shiftStart(float new_offset, float t);
00073
00074 protected:
00075
00076 CHOP_Stair(OP_Network *net,
00077 const char *name, OP_Operator *op);
00078 virtual ~CHOP_Stair();
00079
00080
00081 virtual int usesUnits() { return 1; }
00082
00083
00084 virtual int usesScope() const { return 0; }
00085
00086
00087 virtual float getVariableValue(int index, int thread);
00088
00089 private:
00090
00091
00092
00093 int NUMBER(float t)
00094 { return evalInt(ARG_STAIR_NUMBER, 0, t); }
00095
00096 void SET_NUMBER(float t, int v)
00097 { setInt(ARG_STAIR_NUMBER, 0, t, v); }
00098
00099 float HEIGHT(float t)
00100 { return evalFloat(ARG_STAIR_HEIGHT, 0, t); }
00101
00102 void SET_HEIGHT(float t, float v)
00103 { setFloat(ARG_STAIR_HEIGHT, 0, t, v); }
00104
00105 float OFFSET(float t)
00106 { return evalFloat(ARG_STAIR_OFFSET, 0, t); }
00107
00108 void SET_OFFSET(float t, float v)
00109 { setFloat(ARG_STAIR_OFFSET, 0, t, v); }
00110
00111 int DIRECTION()
00112 { return evalInt(ARG_STAIR_DIRECTION, 0, 0); }
00113
00114 void CHAN_NAME(UT_String &label, float t)
00115 { evalString(label, ARG_STAIR_NAME, 0, t); }
00116
00117 float START(float t)
00118 { return toSample(evalFloat(ARG_STAIR_START,0,t)); }
00119
00120 void SET_START(float t, float f)
00121 { setFloat(ARG_STAIR_START, 0, t, toUnit(f)); }
00122
00123 float END(float t)
00124 { return toSample(evalFloat(ARG_STAIR_END,0,t), UNITS(), 1); }
00125
00126 void SET_END(float t, float f)
00127 { setFloat(ARG_STAIR_END, 0, t, toUnit(f, UNITS(), 1)); }
00128
00129 float RATE(float t) { return evalFloat(ARG_STAIR_RATE, 0, t); }
00130
00131 void SET_RATE(float t, float v)
00132 { setFloat(ARG_STAIR_RATE, 0, t, v); }
00133
00134 int LEXTEND() { return evalInt(ARG_STAIR_LEFT, 0, 0); }
00135 int REXTEND() { return evalInt(ARG_STAIR_RIGHT, 0, 0); }
00136 float DEFAULT(float t) { return evalFloat(ARG_STAIR_DEFAULT,0,t); }
00137
00138
00139 void getInterval(float t, float *start, float *end);
00140
00141
00142 int my_C;
00143
00144 int my_NC;
00145
00146 UT_ExpandArray myExpandArray;
00147 };
00148
00149 }
00150
00151 #endif
00152