#ifndef __POP_LocalForce_h__
#define __POP_LocalForce_h__
#include <POP/POP_LocalVar.h>
namespace HDK_Sample {
enum POP_LocalForceIndex
{
ILF_ACTIVATE,
ILF_SOURCE,
ILF_ORIGIN,
ILF_DIR,
ILF_RADIUS,
ILF_LENGTH,
ILF_STRENGTH,
ILF_IGNOREMASS,
ILF_OVERRIDEMASS,
ILF_MASS
};
class POP_LocalForce : public POP_LocalVar
{
public:
static OP_Node* myConstructor (OP_Network* net, const char* name,
OP_Operator* entry);
static PRM_Template myTemplateList[];
static OP_TemplatePair myTemplatePair;
static OP_VariablePair myVariablePair;
protected:
POP_LocalForce (OP_Network* net, const char* name,
OP_Operator* entry);
virtual ~POP_LocalForce (void);
virtual unsigned disableParms (void);
virtual OP_ERROR cookPop (OP_Context &context);
private:
float ACTIVATE (float t) { FLOAT_PARM("activate", ILF_ACTIVATE, 0, t) };
void SOURCE (UT_String &s) { STR_PARM("source", ILF_SOURCE, 0, 0) };
float ORIGINX (float t) { FLOAT_PARM("origin", ILF_ORIGIN, 0, t) };
float ORIGINY (float t) { FLOAT_PARM("origin", ILF_ORIGIN, 1, t) };
float ORIGINZ (float t) { FLOAT_PARM("origin", ILF_ORIGIN, 2, t) };
float DIRX (float t) { FLOAT_PARM("dir", ILF_DIR, 0, t) };
float DIRY (float t) { FLOAT_PARM("dir", ILF_DIR, 1, t) };
float DIRZ (float t) { FLOAT_PARM("dir", ILF_DIR, 2, t) };
float RADIUS (float t) { FLOAT_PARM("radius", ILF_RADIUS, 0, t) };
float LENGTH (float t) { FLOAT_PARM("length", ILF_LENGTH, 0, t) };
float STRENGTH (float t) { FLOAT_PARM("strength", ILF_STRENGTH, 0, t) };
int IGNOREMASS (void) { INT_PARM("ignoremass", ILF_IGNOREMASS, 0, 0) };
int OVERRIDEMASS (void)
{ INT_PARM("overridemass", ILF_OVERRIDEMASS, 0, 0) };
float MASS (float t) { FLOAT_PARM("mass", ILF_MASS, 0, t) };
POP_FPARM(myStrength, getStrength);
POP_FPARM(myMass, getMass);
static int* myIndirect;
void changePoint (GEO_Point* ppt, POP_ContextData* data, float t,
const UT_Vector3& origin, const UT_Vector3& dir,
float radius, float length,
POP_FParam strength,
const GB_AttributeRef &massOffset,
POP_FParam mass);
};
}
#endif