#ifndef __POP_RadialBirth_h__
#define __POP_RadialBirth_h__
#include <POP/POP_Node.h>
namespace HDK_Sample {
enum POP_RadialBirthIndex
{
IRB_ACTIVATE,
IRB_CENTER,
IRB_DISTANCE,
IRB_SPEED,
IRB_BIRTHRATE,
IRB_GROUP,
IRB_LIFE,
IRB_LIFEVAR,
IRB_ORIGININDEX
};
class POP_RadialBirth : public POP_Node
{
public:
static OP_Node* myConstructor (OP_Network* net, const char* name,
OP_Operator* entry);
static PRM_Template myTemplateList[];
protected:
POP_RadialBirth (OP_Network* net, const char* name,
OP_Operator* entry);
virtual ~POP_RadialBirth (void);
virtual unsigned disableParms (void);
virtual OP_ERROR cookPop (OP_Context &context);
virtual void addAttrib (void* userdata);
private:
fpreal ACTIVATE(fpreal t)
{ FLOAT_PARM("activate", IRB_ACTIVATE, 0, t) };
fpreal CENTERX(fpreal t)
{ FLOAT_PARM("center", IRB_CENTER, 0, t) };
fpreal CENTERY(fpreal t)
{ FLOAT_PARM("center", IRB_CENTER, 1, t) };
fpreal CENTERZ(fpreal t)
{ FLOAT_PARM("center", IRB_CENTER, 2, t) };
fpreal DISTANCEMIN(fpreal t)
{ FLOAT_PARM("distance", IRB_DISTANCE, 0, t) };
fpreal DISTANCEMAX(fpreal t)
{ FLOAT_PARM("distance", IRB_DISTANCE, 1, t) };
fpreal SPEEDMIN(fpreal t)
{ FLOAT_PARM("speed", IRB_SPEED, 0, t) };
fpreal SPEEDMAX(fpreal t)
{ FLOAT_PARM("speed", IRB_SPEED, 1, t) };
int BIRTHRATE(fpreal t)
{ INT_PARM("birthrate", IRB_BIRTHRATE, 0, t) };
void GROUP(UT_String &s)
{ STR_PARM("group", IRB_GROUP, 0, 0) };
fpreal LIFE(fpreal t)
{ FLOAT_PARM("life", IRB_LIFE, 0, t) };
fpreal LIFEVAR(fpreal t)
{ FLOAT_PARM("lifevar", IRB_LIFEVAR, 0, t) };
int ORIGININDEX()
{ INT_PARM("originindex", IRB_ORIGININDEX, 0, 0) };
static int* myIndirect;
float getLifetime (POP_ContextData* data);
int getOriginIndex (POP_ContextData* data);
void setAttrib (POP_ContextData* data, GEO_Point* ppt,
UT_Vector3* vel, void* userdata);
float myLife;
float myLifeVar;
int myOriginIndex;
UT_Vector3 myCenter;
float mySpeedMin;
float mySpeedMax;
};
}
#endif