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 __POP_RadialBirth_h__
00029 #define __POP_RadialBirth_h__
00030
00031 #include <POP/POP_Node.h>
00032
00033 namespace HDK_Sample {
00034
00035 enum POP_RadialBirthIndex
00036 {
00037 IRB_ACTIVATE,
00038 IRB_CENTER,
00039 IRB_DISTANCE,
00040 IRB_SPEED,
00041 IRB_BIRTHRATE,
00042 IRB_GROUP,
00043 IRB_LIFE,
00044 IRB_LIFEVAR,
00045 IRB_ORIGININDEX
00046 };
00047
00048 class POP_RadialBirth : public POP_Node
00049 {
00050 public:
00051
00052 static OP_Node* myConstructor (OP_Network* net, const char* name,
00053 OP_Operator* entry);
00054
00055 static PRM_Template myTemplateList[];
00056
00057 protected:
00058 POP_RadialBirth (OP_Network* net, const char* name,
00059 OP_Operator* entry);
00060 virtual ~POP_RadialBirth (void);
00061
00062 virtual unsigned disableParms (void);
00063 virtual OP_ERROR cookPop (OP_Context &context);
00064 virtual void addAttrib (void* userdata);
00065
00066 private:
00067
00068 float ACTIVATE (float t) { FLOAT_PARM("activate", IRB_ACTIVATE, 0, t) };
00069 float CENTERX (float t) { FLOAT_PARM("center", IRB_CENTER, 0, t) };
00070 float CENTERY (float t) { FLOAT_PARM("center", IRB_CENTER, 1, t) };
00071 float CENTERZ (float t) { FLOAT_PARM("center", IRB_CENTER, 2, t) };
00072 float DISTANCEMIN (float t) { FLOAT_PARM("distance", IRB_DISTANCE, 0, t) };
00073 float DISTANCEMAX (float t) { FLOAT_PARM("distance", IRB_DISTANCE, 1, t) };
00074 float SPEEDMIN (float t) { FLOAT_PARM("speed", IRB_SPEED, 0, t) };
00075 float SPEEDMAX (float t) { FLOAT_PARM("speed", IRB_SPEED, 1, t) };
00076 int BIRTHRATE (float t) { INT_PARM("birthrate", IRB_BIRTHRATE, 0, t) };
00077 void GROUP (UT_String &s) { STR_PARM("group", IRB_GROUP, 0, 0) };
00078 float LIFE (float t) { FLOAT_PARM("life", IRB_LIFE, 0, t) };
00079 float LIFEVAR (float t) { FLOAT_PARM("lifevar", IRB_LIFEVAR, 0, t) };
00080 int ORIGININDEX (void)
00081 { INT_PARM("originindex", IRB_ORIGININDEX, 0, 0) };
00082
00083 static int* myIndirect;
00084
00085 float getLifetime (POP_ContextData* data);
00086 int getOriginIndex (POP_ContextData* data);
00087
00088 void setAttrib (POP_ContextData* data, GEO_Point* ppt,
00089 UT_Vector3* vel, void* userdata);
00090
00091 float myLife;
00092 float myLifeVar;
00093 int myOriginIndex;
00094 UT_Vector3 myCenter;
00095 float mySpeedMin;
00096 float mySpeedMax;
00097 };
00098
00099 }
00100
00101 #endif