00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __SOP_Circle_h__
00021 #define __SOP_Circle_h__
00022
00023 #include "SOP_API.h"
00024 #include <UT/UT_Math.h>
00025 #include "SOP_Node.h"
00026
00027 class SOP_Handle;
00028 class MSS_CircleState;
00029
00030 class SOP_API SOP_Circle : public SOP_Node
00031 {
00032 public:
00033 SOP_Circle(OP_Network *net, const char *name, OP_Operator *entry);
00034 virtual ~SOP_Circle();
00035
00036 virtual unsigned disableParms();
00037
00038 static OP_Node *myConstructor(OP_Network *net, const char *name, OP_Operator *entry);
00039 static PRM_Template myTemplateList[];
00040
00041 virtual int getSopHandleCount();
00042 virtual SOP_Handle *getSopHandle(int index);
00043 virtual const GU_Detail *getHandleDetailPtr(int index);
00044
00045 int TYPE(void) { return evalInt(0, 0, 0); }
00046 void SET_TYPE(int i) { setInt(0, 0, 0, i); }
00047
00048 float CENTERX(float t) { return evalFloat(3, 0, t); }
00049 void SET_CENTERX(float t)
00050 { setFloat(3, 0, 0, t); }
00051
00052 float CENTERY(float t) { return evalFloat(3, 1, t); }
00053 void SET_CENTERY(float t)
00054 { setFloat(3, 1, 0, t); }
00055
00056 float CENTERZ(float t) { return evalFloat(3, 2, t); }
00057 void SET_CENTERZ(float t)
00058 { setFloat(3, 2, 0, t); }
00059
00060 void SET_RADIUSX(float t)
00061 { setFloat(2, 0, 0, t); }
00062
00063 void SET_RADIUSY(float t)
00064 { setFloat(2, 1, 0, t); }
00065
00066 protected:
00067 virtual OP_ERROR cookMySop(OP_Context &context);
00068
00069 private:
00070 GU_OrientationType ORIENTTYPE(void)
00071 {
00072 return (GU_OrientationType)evalInt(1, 0, 0);
00073 }
00074 float RADIUSX(float t) { return evalFloat(2, 0, t); }
00075 float RADIUSY(float t) { return evalFloat(2, 1, t); }
00076
00077
00078 int ORDER(float t) { return evalInt(4, 0, t); }
00079
00080 int DIVS(float t) { return evalInt(5, 0, t); }
00081 GU_CircleType ARCTYPE(void) { return (GU_CircleType)evalInt(6,0,0);}
00082 float BANGLE(float t) { return UTdegToRad(evalFloat(7,0,t));}
00083 float EANGLE(float t) { return UTdegToRad(evalFloat(7,1,t));}
00084
00085 int IMPERFECT(void) { return evalInt(8, 0, 0); }
00086
00087 SOP_Handle *myHandleSopPtr;
00088 GU_Detail *myHandleDetailPtr;
00089
00090 friend class MSS_CircleState;
00091 };
00092
00093 #endif