00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __OBJ_Handle__
00021 #define __OBJ_Handle__
00022
00023 #include "OBJ_API.h"
00024 #include "OBJ_Geometry.h"
00025
00026 class OBJ_Bone;
00027
00028 enum OBJ_HandleIndex
00029 {
00030 I_TARGET = I_N_GEO_INDICES,
00031 I_WEIGHT,
00032 I_TWISTONLY,
00033 I_FALLOFF,
00034
00035 I_DORXLIMIT,
00036 I_LIMRX,
00037 I_DORYLIMIT,
00038 I_LIMRY,
00039 I_DORZLIMIT,
00040 I_LIMRZ,
00041 I_N_HANDLE_INDICES
00042 };
00043
00044
00045 #define FLOAT_PARM(name, idx, vi, t) \
00046 return evalFloat(name, &getIndirect()[idx], vi, t);
00047 #define INT_PARM(name, idx, vi, t) \
00048 return evalInt(name, &getIndirect()[idx], vi, t);
00049 #define STR_PARM(name, idx, vi, t) \
00050 evalString(str, name, &getIndirect()[idx], vi, (float)t);
00051
00052 class OBJ_API OBJ_Handle : public OBJ_Geometry
00053 {
00054 public:
00055 OBJ_Handle(OP_Network *net,
00056 const char *name,
00057 OP_Operator *op);
00058 virtual ~OBJ_Handle();
00059
00060 static OP_Node *myConstructor(OP_Network *net,
00061 const char *name,
00062 OP_Operator *entry);
00063
00064 static PRM_Template *getObsolete();
00065 void resolveObsoleteParms(PRM_ParmList *obsolete);
00066
00067 virtual OBJ_OBJECT_TYPE getObjectType() const;
00068
00069
00070 OBJ_Node *getTarget();
00071
00072 float WEIGHT(float t)
00073 { FLOAT_PARM("weight", I_WEIGHT, 0, t); }
00074 float FALLOFF(float t)
00075 { FLOAT_PARM("falloff", I_FALLOFF, 0, t); }
00076
00077 int TWIST_ONLY()
00078 { INT_PARM("twistonly", I_TWISTONLY, 0, 0); }
00079
00080 int DORXLIMIT()
00081 { INT_PARM("dorxlimit", I_DORXLIMIT, 0, 0); }
00082
00083 int DORYLIMIT()
00084 { INT_PARM("dorylimit", I_DORYLIMIT, 0, 0); }
00085
00086 int DORZLIMIT()
00087 { INT_PARM("dorzlimit", I_DORZLIMIT, 0, 0); }
00088
00089 float MINRX(float t)
00090 { FLOAT_PARM("lrx", I_LIMRX, 0, t); }
00091 float MAXRX(float t)
00092 { FLOAT_PARM("lrx", I_LIMRX, 1, t); }
00093
00094 float MINRY(float t)
00095 { FLOAT_PARM("lry", I_LIMRY, 0, t); }
00096 float MAXRY(float t)
00097 { FLOAT_PARM("lry", I_LIMRY, 1, t); }
00098
00099 float MINRZ(float t)
00100 { FLOAT_PARM("lrz", I_LIMRZ, 0, t); }
00101 float MAXRZ(float t)
00102 { FLOAT_PARM("lrz", I_LIMRZ, 1, t); }
00103
00104 void TARGET(UT_String &str)
00105 { STR_PARM ("obj_targetpath", I_TARGET, 0, 0); }
00106
00107 virtual unsigned disableParms();
00108
00109 static PRM_Template *getTemplateList();
00110
00111 virtual OBJ_Handle *castToOBJHandle() { return this; }
00112
00113 protected:
00114
00115 virtual int *getIndirect() const
00116 { return handleIndirect; }
00117
00118 virtual int isObjectRenderable() const;
00119
00120 private:
00121 static int *handleIndirect;
00122 };
00123
00124 #undef FLOAT_PARM
00125 #undef STR_PARM
00126 #undef INT_PARM
00127
00128 #endif