00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __OBJ_Microphone__
00021 #define __OBJ_Microphone__
00022
00023 #include "OBJ_API.h"
00024 #include "OBJ_Geometry.h"
00025
00026 enum OBJ_MicrophoneIndex
00027 {
00028 I_MIC_ACTIVE = I_N_GEO_INDICES,
00029 I_MIC_SENSITIVITY,
00030 I_MIC_TYPE,
00031 I_MIC_CONE,
00032 I_MIC_OUTER_CONE,
00033 I_MIC_DROPOFF,
00034 I_MIC_DROPOFF_RATE,
00035 I_MIC_OUTER_SENSITIVITY,
00036 I_MIC_CHOP_FILTERPATH,
00037 I_N_MIC_INDICES
00038 };
00039
00040
00041 #define FLOAT_PARM(name, idx, vi, t) \
00042 return evalFloat(name, &handleIndirect[idx], vi, t);
00043 #define INT_PARM(name, idx, vi, t) \
00044 return evalInt(name, &handleIndirect[idx], vi, t);
00045 #define STR_PARM(name, idx, vi, t) \
00046 evalString(str, name, &handleIndirect[idx], vi, (float)t);
00047
00048 class OBJ_API OBJ_Microphone : public OBJ_Geometry
00049 {
00050 public:
00051 OBJ_Microphone(OP_Network *net,
00052 const char *name,
00053 OP_Operator *op);
00054 virtual ~OBJ_Microphone();
00055
00056 static OP_Node *myConstructor(OP_Network *net,
00057 const char *name,
00058 OP_Operator *entry);
00059
00060 virtual OBJ_OBJECT_TYPE getObjectType() const;
00061
00062 virtual unsigned disableParms();
00063
00064 void getMicFilter(UT_String &choppath, fpreal now);
00065
00066 int isDirectional();
00067 int getRolloffType();
00068 void getMicParms(int &active,
00069 float &volume, float &volume2,
00070 float &angle1, float &angle2,
00071 float &rolloff,float t);
00072
00073 virtual void resolveObsoleteParms(PRM_ParmList *obsolete);
00074 static PRM_Template *getObsolete();
00075 static PRM_Template *getTemplateList();
00076 protected:
00077
00078 virtual OP_ERROR cookMyObj(OP_Context &context);
00079
00080 virtual int *getIndirect() const
00081 { return handleIndirect; }
00082
00083 private:
00084 int ACTIVE(float t)
00085 { INT_PARM("micactive", I_MIC_ACTIVE, 0, t); }
00086
00087 float SENSITIVITY(float t)
00088 { FLOAT_PARM("sensitive", I_MIC_SENSITIVITY, 0, t); }
00089
00090 int MIC_TYPE()
00091 { INT_PARM("direct", I_MIC_TYPE, 0, 0); }
00092
00093 float RECORD_CONE(float t)
00094 { FLOAT_PARM("reccone", I_MIC_CONE, 0, t); }
00095
00096 float OUTER_CONE(float t)
00097 { FLOAT_PARM("outcone", I_MIC_OUTER_CONE, 0, t); }
00098
00099 int DROPOFF()
00100 { INT_PARM("dropoff", I_MIC_DROPOFF, 0, 0); }
00101
00102 float DROPOFF_RATE(float t)
00103 { FLOAT_PARM("droprate", I_MIC_DROPOFF_RATE, 0, t); }
00104
00105 float OUTER_SENSITIVITY(float t)
00106 { FLOAT_PARM("outsensitive", I_MIC_OUTER_SENSITIVITY, 0, t); }
00107 private:
00108
00109 virtual int isObjectRenderable() const;
00110
00111 static int *handleIndirect;
00112 };
00113
00114 #undef FLOAT_PARM
00115 #undef STR_PARM
00116 #undef INT_PARM
00117
00118 #endif