/********************************************************************** *< FILE: istdplug.h DESCRIPTION: Interfaces into some of the standard plug-ins that ship with MAX CREATED BY: Rolf Berteig HISTORY: created 20 January 1996 *> Copyright (c) 1994, All Rights Reserved. **********************************************************************/ #ifndef __ISTDPLUG__ #define __ISTDPLUG__ #include "iFnPub.h" //---------------------------------------------------------------- // The following are parameter block IDs for procedural objects // Arc #define ARC_RADIUS 0 #define ARC_FROM 1 #define ARC_TO 2 #define ARC_PIE 3 #define ARC_REVERSE 4 // Box object #define BOXOBJ_LENGTH 0 #define BOXOBJ_WIDTH 1 #define BOXOBJ_HEIGHT 2 #define BOXOBJ_WSEGS 3 #define BOXOBJ_LSEGS 4 #define BOXOBJ_HSEGS 5 #define BOXOBJ_GENUVS 6 // Circle #define CIRCLE_RADIUS 0 // Cone #define CONE_RADIUS1 0 #define CONE_RADIUS2 1 #define CONE_HEIGHT 2 #define CONE_SEGMENTS 3 #define CONE_CAPSEGMENTS 4 #define CONE_SIDES 5 #define CONE_SMOOTH 6 #define CONE_SLICEON 7 #define CONE_PIESLICE1 8 #define CONE_PIESLICE2 9 #define CONE_GENUVS 10 // Cylinder #define CYLINDER_RADIUS 0 #define CYLINDER_HEIGHT 1 #define CYLINDER_SEGMENTS 2 #define CYLINDER_CAPSEGMENTS 3 #define CYLINDER_SIDES 4 #define CYLINDER_SMOOTH 5 #define CYLINDER_SLICEON 6 #define CYLINDER_PIESLICE1 7 #define CYLINDER_PIESLICE2 8 #define CYLINDER_GENUVS 9 // Donut #define DONUT_RADIUS1 0 #define DONUT_RADIUS2 1 // Ellipse #define ELLIPSE_LENGTH 0 #define ELLIPSE_WIDTH 1 // Hedra #define HEDRA_RADIUS 0 #define HEDRA_FAMILY 1 #define HEDRA_P 2 #define HEDRA_Q 3 #define HEDRA_SCALEP 4 #define HEDRA_SCALEQ 5 #define HEDRA_SCALER 6 #define HEDRA_VERTS 7 #define HEDRA_GENUVS 8 // Helix #define HELIX_RADIUS1 0 #define HELIX_RADIUS2 1 #define HELIX_HEIGHT 2 #define HELIX_TURNS 3 #define HELIX_BIAS 4 #define HELIX_DIRECTION 5 // NGon #define NGON_RADIUS 0 #define NGON_SIDES 1 #define NGON_CIRCULAR 2 // PatchGrid #define PATCHGRID_LENGTH 0 #define PATCHGRID_WIDTH 1 #define PATCHGRID_WSEGS 2 #define PATCHGRID_LSEGS 3 #define PATCHGRID_TEXTURE 4 // Rain/snow #define RSPART_VPTPARTICLES 0 #define RSPART_RNDPARTICLES 1 #define RSPART_DROPSIZE 2 #define RSPART_SPEED 3 #define RSPART_VARIATION 4 #define RSPART_DISPTYPE 5 #define RSPART_STARTTIME 6 #define RSPART_LIFETIME 7 #define RSPART_EMITTERWIDTH 8 #define RSPART_EMITTERHEIGHT 9 #define RSPART_HIDEEMITTER 10 #define RSPART_BIRTHRATE 11 #define RSPART_CONSTANT 12 #define RSPART_RENDER 13 #define RSPART_TUMBLE 14 #define RSPART_SCALE 15 // Rectangle #define RECTANGLE_LENGTH 0 #define RECTANGLE_WIDTH 1 #define RECTANGLE_FILLET 2 // Sphere #define SPHERE_RADIUS 0 #define SPHERE_SEGS 1 #define SPHERE_SMOOTH 2 #define SPHERE_HEMI 3 #define SPHERE_SQUASH 4 #define SPHERE_RECENTER 5 #define SPHERE_GENUVS 6 // Star #define START_RADIUS1 0 #define START_RADIUS2 1 #define START_POINTS 2 #define START_DISTORT 3 #define START_FILLET1 4 #define START_FILLET2 5 // Tea Pot #define TEAPOT_RADIUS 0 #define TEAPOT_SEGS 1 #define TEAPOT_SMOOTH 2 #define TEAPOT_TEAPART 3 #define TEAPOT_BODY 4 #define TEAPOT_HANDLE 5 #define TEAPOT_SPOUT 6 #define TEAPOT_LID 7 #define TEAPOT_GENUVS 8 // Text #define TEXT_SIZE 0 #define TEXT_KERNING 1 #define TEXT_LEADING 2 // torus #define TORUS_RADIUS 0 #define TORUS_RADIUS2 1 #define TORUS_ROTATION 2 #define TORUS_TWIST 3 #define TORUS_SEGMENTS 4 #define TORUS_SIDES 5 #define TORUS_SMOOTH 6 #define TORUS_SLICEON 7 #define TORUS_PIESLICE1 8 #define TORUS_PIESLICE2 9 #define TORUS_GENUVS 10 // Tube #define TUBE_RADIUS 0 #define TUBE_RADIUS2 1 #define TUBE_HEIGHT 2 #define TUBE_SEGMENTS 3 #define TUBE_CAPSEGMENTS 4 #define TUBE_SIDES 5 #define TUBE_SMOOTH 6 #define TUBE_SLICEON 7 #define TUBE_PIESLICE1 8 #define TUBE_PIESLICE2 9 #define TUBE_GENUVS 10 // Grid #define GRIDHELP_LENGTH 0 #define GRIDHELP_WIDTH 1 #define GRIDHELP_GRID 2 //---------------------------------------------------------------- // The following are parameter block IDs for modifiers // Bend #define BEND_ANGLE 0 #define BEND_DIR 1 #define BEND_AXIS 2 #define BEND_DOREGION 3 #define BEND_FROM 4 #define BEND_TO 5 // Bomb #define BOMB_STRENGTH 0 #define BOMB_GRAVITY 1 #define BOMB_CHAOS 2 #define BOMB_DETONATION 3 // Deflector #define DEFLECTOR_BOUNCE 0 #define DEFLECTOR_WIDTH 1 #define DEFLECTOR_HEIGHT 2 // Displace (modifier and space warp object) #define DISPLACE_MAPTYPE 0 #define DISPLACE_UTILE 1 #define DISPLACE_VTILE 2 #define DISPLACE_WTILE 3 #define DISPLACE_BLUR 4 #define DISPLACE_USEMAP 5 #define DISPLACE_APPLYMAP 6 #define DISPLACE_STRENGTH 7 #define DISPLACE_DECAY 8 #define DISPLACE_CENTERLUM 9 #define DISPLACE_UFLIP 10 #define DISPLACE_VFLIP 11 #define DISPLACE_WFLIP 12 #define DISPLACE_CENTERL 13 #define DISPLACE_CAP 14 #define DISPLACE_LENGTH 15 #define DISPLACE_WIDTH 16 #define DISPLACE_HEIGHT 17 #define DISPLACE_AXIS 18 // Extrude #define EXTRUDE_AMOUNT 0 #define EXTRUDE_SEGS 1 #define EXTRUDE_CAPSTART 2 #define EXTRUDE_CAPEND 3 #define EXTRUDE_CAPTYPE 4 #define EXTRUDE_OUTPUT 5 #define EXTRUDE_MAPPING 6 #define EXTRUDE_GEN_MATIDS 7 #define EXTRUDE_USE_SHAPEIDS 8 #define EXTRUDE_SMOOTH 9 // Gravity #define GRAVITY_STRENGTH 0 #define GRAVITY_DECAY 1 #define GRAVITY_TYPE 2 #define GRAVITY_DISPLENGTH 3 // Wind #define WIND_STRENGTH 0 #define WIND_DECAY 1 #define WIND_TYPE 2 #define WIND_DISPLENGTH 3 #define WIND_TURBULENCE 4 #define WIND_FREQUENCY 5 #define WIND_SCALE 6 // UVW map #define UVWMAP_MAPTYPE 0 #define UVWMAP_UTILE 1 #define UVWMAP_VTILE 2 #define UVWMAP_WTILE 3 #define UVWMAP_UFLIP 4 #define UVWMAP_VFLIP 5 #define UVWMAP_WFLIP 6 #define UVWMAP_CAP 7 #define UVWMAP_CHANNEL 8 #define UVWMAP_LENGTH 9 #define UVWMAP_WIDTH 10 #define UVWMAP_HEIGHT 11 #define UVWMAP_AXIS 12 // Noise mod #define NOISEMOD_SEED 0 #define NOISEMOD_SCALE 1 #define NOISEMOD_FRACTAL 2 #define NOISEMOD_ROUGH 3 #define NOISEMOD_ITERATIONS 4 #define NOISEMOD_ANIMATE 5 #define NOISEMOD_FREQ 6 #define NOISEMOD_PHASE 7 #define NOISEMOD_STRENGTH 8 // Optimize #define OPTMOD_RENDER 0 #define OPTMOD_VIEWS 1 #define OPTMOD_FACETHRESH1 2 #define OPTMOD_EDGETHRESH1 3 #define OPTMOD_BIAS1 4 #define OPTMOD_PRESERVEMAT1 5 #define OPTMOD_PRESERVESMOOTH1 6 #define OPTMOD_MAXEDGE1 7 #define OPTMOD_FACETHRESH2 8 #define OPTMOD_EDGETHRESH2 9 #define OPTMOD_BIAS2 10 #define OPTMOD_PRESERVEMAT2 11 #define OPTMOD_PRESERVESMOOTH2 12 #define OPTMOD_MAXEDGE2 13 #define OPTMOD_AUTOEDGE 14 #define OPTMOD_MANUPDATE 15 // Volume selection modifier #define VOLSEL_LEVEL 0 #define VOLSEL_METHOD 1 #define VOLSEL_TYPE 2 #define VOLSEL_VOLUME 3 #define VOLSEL_INVERT 4 // Ripple/Wave space warp object and object space modifier #define RWAVE_AMPLITUDE 0 #define RWAVE_AMPLITUDE2 1 #define RWAVE_WAVELEN 2 #define RWAVE_PHASE 3 #define RWAVE_DECAY 4 #define RWAVE_CIRCLES 5 // These last three are only valid for space warp objects #define RWAVE_SEGMENTS 6 #define RWAVE_DIVISIONS 7 // Ripple/Wave binding (modifier) #define RWAVE_FLEX 0 // Skew #define SKEW_AMOUNT 0 #define SKEW_DIR 1 #define SKEW_AXIS 2 #define SKEW_DOREGION 3 #define SKEW_FROM 4 #define SKEW_TO 5 // Material modifier #define MATMOD_MATID 0 // Smoothing group modifier #define SMOOTHMOD_AUTOSMOOTH 0 #define SMOOTHMOD_THRESHOLD 1 #define SMOOTHMOD_SMOOTHBITS 2 // Normal modifier #define NORMMOD_UNIFY 0 #define NORMMOD_FLIP 1 // SurfRev (Lathe) modifier #define SURFREV_DEGREES 0 #define SURFREV_SEGS 1 #define SURFREV_CAPSTART 2 #define SURFREV_CAPEND 3 #define SURFREV_CAPTYPE 4 #define SURFREV_WELDCORE 5 #define SURFREV_OUTPUT 6 #define SURFREV_MAPPING 7 // Taper #define TAPER_AMT 0 #define TAPER_CRV 1 #define TAPER_AXIS 2 #define TAPER_EFFECTAXIS 3 #define TAPER_SYMMETRY 4 #define TAPER_DOREGION 5 #define TAPER_FROM 6 #define TAPER_TO 7 // Twist #define TWIST_ANGLE 0 #define TWIST_BIAS 1 #define TWIST_AXIS 2 #define TWIST_DOREGION 3 #define TWIST_FROM 4 #define TWIST_TO 5 // Material mod #define MATMOD_MATID 0 // Smooth mod #define SMOOTH_AUTOSMOOTH 0 #define SMOOTH_THRESHOLD 1 #define SMOOTH_SMOOTHBITS 2 // Normal mod #define NORMALMOD_UNIFY 0 #define NORMALMOD_FLIP 1 // Tessellation mod #define TESSMOD_TYPE 0 #define TESSMOD_TENSION 1 #define TESSMOD_ITERATIONS 2 #define TESSMOD_FACE_TYPE 3 // UVW xform #define UVWXFORM_UTILE 0 #define UVWXFORM_VTILE 1 #define UVWXFORM_WTILE 2 #define UVWXFORM_UOFFSET 3 #define UVWXFORM_VOFFSET 4 #define UVWXFORM_WOFFSET 5 #define UVWXFORM_UFLIP 6 #define UVWXFORM_VFLIP 7 #define UVWXFORM_WFLIP 8 #define UVWXFORM_CHANNEL 9 //-- Text shape object interface ------------------------- // Use GetTextObjectInterface() to get a pointer to an // ITextObject given a pointer to an Object. // Flags passed to ChangeFont() #define TEXTOBJ_ITALIC (1<<1) #define TEXTOBJ_UNDERLINE (1<<2) // Alignment types #define TEXTOBJ_LEFT 0 #define TEXTOBJ_CENTER 1 #define TEXTOBJ_RIGHT 2 #define TEXTOBJ_JUSTIFIED 3 class ITextObject { public: // Returns TRUE if string is changed. Can't change string if current font is not installed virtual BOOL ChangeText(TSTR string)=0; // Returns TRUE if font is successfully changed. virtual BOOL ChangeFont(TSTR name, DWORD flags)=0; // Get fount and string virtual TSTR GetFont()=0; virtual TSTR GetString()=0; // Get/Set styles virtual BOOL GetItalic()=0; virtual BOOL GetUnderline()=0; virtual void SetItalic(BOOL sw)=0; virtual void SetUnderline(BOOL sw)=0; // Get/Set alignment virtual BOOL SetAlignment(int type)=0; virtual int GetAlignment()=0; }; //-- Controller interfaces ------------------------------- // Base key class class IKey { public: TimeValue time; DWORD flags; IKey() {time=0;flags=0;} }; //--- TCB keys ------------- class ITCBKey : public IKey { public: float tens, cont, bias, easeIn, easeOut; }; class ITCBFloatKey : public ITCBKey { public: float val; }; class ITCBPoint3Key : public ITCBKey { public: Point3 val; }; class ITCBRotKey : public ITCBKey { public: AngAxis val; }; class ITCBScaleKey : public ITCBKey { public: ScaleValue val; }; //--- Bezier keys ------------- class IBezFloatKey : public IKey { public: float intan, outtan; float val; //watje horizontal handles //these are the length of the handles float inLength, outLength; }; class IBezPoint3Key : public IKey { public: Point3 intan, outtan; Point3 val; //watje horizontal handles //these are the length of the handles Point3 inLength, outLength; }; class IBezQuatKey : public IKey { public: Quat val; }; class IBezScaleKey : public IKey { public: Point3 intan, outtan; ScaleValue val; //watje horizontal handles //these are the length of the handles Point3 inLength, outLength; }; //--- Linear Keys -------------- class ILinFloatKey : public IKey { public: float val; }; class ILinPoint3Key : public IKey { public: Point3 val; }; class ILinRotKey : public IKey { public: Quat val; }; class ILinScaleKey : public IKey { public: ScaleValue val; }; // --- Flag bits for keys ------------------------------- // General flags #define IKEY_SELECTED (1<<0) #define IKEY_XSEL (1<<1) #define IKEY_YSEL (1<<2) #define IKEY_ZSEL (1<<3) #define IKEY_FLAGGED (1<<13) #define IKEY_TIME_LOCK (1<<14) // TCB specific key flags #define TCBKEY_QUATVALID (1<<4) // When this bit is set the angle/axis is derived from the quat instead of vice/versa // Bezier specific key flags #define BEZKEY_XBROKEN (1<<4) // Broken means not locked #define BEZKEY_YBROKEN (1<<5) #define BEZKEY_ZBROKEN (1<<6) // The in and out types are stored in bits 7-13 #define BEZKEY_NUMTYPEBITS 3 #define BEZKEY_INTYPESHIFT 7 #define BEZKEY_OUTTYPESHIFT (BEZKEY_INTYPESHIFT+BEZKEY_NUMTYPEBITS) #define BEZKEY_TYPEMASK 7 // Bezier tangent types #define BEZKEY_SMOOTH 0 #define BEZKEY_LINEAR 1 #define BEZKEY_STEP 2 #define BEZKEY_FAST 3 #define BEZKEY_SLOW 4 #define BEZKEY_USER 5 #define NUM_TANGENTTYPES 6 // This key is interpolated using arclength as the interpolation parameter #define BEZKEY_CONSTVELOCITY (1<<15) //watje determines whether a user handle is limited #define BEZKEY_UNCONSTRAINHANDLE (1<<20) #define TangentsLocked(f,j) (!(f&(BEZKEY_XBROKEN<>BEZKEY_INTYPESHIFT)&BEZKEY_TYPEMASK) #define GetOutTanType(f) int(((f)>>BEZKEY_OUTTYPESHIFT)&BEZKEY_TYPEMASK) #define SetInTanType(f,t) {(f) = ((f)&(~(BEZKEY_TYPEMASK<GetInterface(PATH_CONSTRAINT_INTERFACE) class IPathPosition : public Control, public FPMixinInterface { public: enum { get_num_targets, get_node, get_target_weight, set_target_weight, append_target, delete_target,}; // Function Map for Function Publish System //*********************************** BEGIN_FUNCTION_MAP FN_0(get_num_targets, TYPE_INT, GetNumTargets); FN_1(get_node, TYPE_INODE, GetNode, TYPE_INDEX); FN_1(get_target_weight, TYPE_FLOAT, GetTargetWeight, TYPE_INDEX); FN_2(set_target_weight, TYPE_BOOL, SetTargetWeight, TYPE_INDEX, TYPE_FLOAT); FN_2(append_target, TYPE_BOOL, AppendTarget, TYPE_INODE, TYPE_FLOAT); FN_1(delete_target, TYPE_BOOL, DeleteTarget, TYPE_INDEX); END_FUNCTION_MAP FPInterfaceDesc* GetDesc(); // <-- must implement //End of Function Publishing system code //*********************************** virtual int GetNumTargets()=0; virtual INode* GetNode(int targetNumber)=0; virtual float GetTargetWeight(int targetNumber)=0; virtual BOOL SetTargetWeight(int targetNumber, float weight)=0; virtual BOOL AppendTarget(INode *target, float weight=50.0)=0; virtual BOOL DeleteTarget(int selection)=0; virtual void SetFollow(BOOL f)=0; virtual BOOL GetFollow()=0; virtual void SetBankAmount(float a)=0; virtual float GetBankAmount()=0; virtual void SetBank(BOOL b)=0; virtual BOOL GetBank()=0; virtual void SetTracking(float t)=0; // smoothness virtual float GetTracking()=0; virtual void SetAllowFlip(BOOL f)=0; virtual BOOL GetAllowFlip()=0; virtual void SetConstVel(BOOL cv)=0; virtual BOOL GetConstVel()=0; virtual void SetFlip(BOOL onOff)=0; virtual BOOL GetFlip()=0; virtual void SetAxis(int axis)=0; virtual int GetAxis()=0; virtual void SetLoop(BOOL l)=0; // AG added virtual BOOL GetLoop()=0; // AG added virtual void SetRelative(BOOL rel)=0; // AG added virtual BOOL GetRelative()=0; }; // Bank and tracking are scaled in the UI. #define BANKSCALE 100.0f #define FromBankUI(a) ((a)*BANKSCALE) #define ToBankUI(a) ((a)/BANKSCALE) #define TRACKSCALE 0.04f #define FromTrackUI(a) ((a)*TRACKSCALE) #define ToTrackUI(a) ((a)/TRACKSCALE) // percent controller, path node and paramblock2 refs // #define PATHPOS_PERCENT_REF 0 // obsolete in Ed. 2, percent is an animatable in the ParamBlock #define PATHPOS_PATH_REF 1 #define PATHPOS_PBLOCK_REF 2 //------------------------------------------------------------- // // Access to Position Constraint controller's parameters. // Ambarish Goswami implemented April, 2000 //Function Publishing interface Added by Adam Felt (5-16-00) //*********************************************************** class IPosConstPosition; #define POS_CONSTRAINT_INTERFACE Interface_ID(0x32040779, 0x794a1278) #define GetIPosConstInterface(cd) \ (IPosConstPosition*)(cd)->GetInterface(POS_CONSTRAINT_INTERFACE) //*********************************************************** class IPosConstPosition : public Control, public FPMixinInterface { public: enum { get_num_targets, get_node, get_target_weight, set_target_weight, append_target, delete_target,}; // Function Map for Function Publish System //*********************************** BEGIN_FUNCTION_MAP FN_0(get_num_targets, TYPE_INT, GetNumTargets); FN_1(get_node, TYPE_INODE, GetNode, TYPE_INDEX); FN_1(get_target_weight, TYPE_FLOAT, GetTargetWeight, TYPE_INDEX); FN_2(set_target_weight, TYPE_BOOL, SetTargetWeight, TYPE_INDEX, TYPE_FLOAT); FN_2(append_target, TYPE_BOOL, AppendTarget, TYPE_INODE, TYPE_FLOAT); FN_1(delete_target, TYPE_BOOL, DeleteTarget, TYPE_INDEX); END_FUNCTION_MAP FPInterfaceDesc* GetDesc(); // <-- must implement //End of Function Publishing system code //*********************************** virtual int GetNumTargets()=0; virtual INode* GetNode(int targetNumber)=0; virtual float GetTargetWeight(int targetNumber)=0; virtual BOOL SetTargetWeight(int targetNumber, float weight)=0; virtual BOOL AppendTarget(INode *target, float weight=50.0)=0; virtual BOOL DeleteTarget(int selection)=0; }; #define POSPOS_PBLOCK_REF 0 //------------------------------------------------------------- // // Access to Orientation Constraint controller's parameters. // Ambarish Goswami implemented May, 2000 //Function Publishing interface Added by Ambarish Goswami 6/18/2000 adapted from Adam Felt (5-16-00) //************************************************************************************************** class IOrientConstRotation; #define ORIENT_CONSTRAINT_INTERFACE Interface_ID(0x71e2231b, 0x72522ab2) #define GetIOrientConstInterface(cd) \ (IOrientConstRotation*)(cd)->GetInterface(ORIENT_CONSTRAINT_INTERFACE) //*********************************************************** class IOrientConstRotation : public Control, public FPMixinInterface { public: enum { get_num_targets, get_node, get_target_weight, set_target_weight, append_target, delete_target,}; // Function Map for Function Publish System //*********************************** BEGIN_FUNCTION_MAP FN_0(get_num_targets, TYPE_INT, GetNumTargets); FN_1(get_node, TYPE_INODE, GetNode, TYPE_INDEX); FN_1(get_target_weight, TYPE_FLOAT, GetTargetWeight, TYPE_INDEX); FN_2(set_target_weight, TYPE_BOOL, SetTargetWeight, TYPE_INDEX, TYPE_FLOAT); FN_2(append_target, TYPE_BOOL, AppendTarget, TYPE_INODE, TYPE_FLOAT); FN_1(delete_target, TYPE_BOOL, DeleteTarget, TYPE_INDEX); END_FUNCTION_MAP FPInterfaceDesc* GetDesc(); // <-- must implement //End of Function Publishing system code //*********************************** virtual int GetNumTargets()=0; virtual INode* GetNode(int targetNumber)=0; virtual float GetTargetWeight(int targetNumber)=0; virtual BOOL SetTargetWeight(int targetNumber, float weight)=0; virtual BOOL AppendTarget(INode *target, float weight=50.0)=0; virtual BOOL DeleteTarget(int selection)=0; }; #define ORIENT_ROT_PBLOCK_REF 0 //------------------------------------------------------------- // // Access to LookAt Constraint controller's parameters. // Ambarish Goswami implemented May, 2000 //Function Publishing interface Added by Ambarish Goswami 5/24/2000 adapted from Adam Felt (5-16-00) //************************************************************************************************** class ILookAtConstRotation; #define LOOKAT_CONSTRAINT_INTERFACE Interface_ID(0x5dbe7ad8, 0x1d1b488b) #define GetILookAtConstInterface(cd) \ (ILookAtConstRotation*)(cd)->GetInterface(LOOKAT_CONSTRAINT_INTERFACE) //*********************************************************** class ILookAtConstRotation : public Control , public FPMixinInterface { public: enum { get_num_targets, get_node, get_target_weight, set_target_weight, append_target, delete_target,}; // FUNCTION_PUBLISHING // Function Map for Function Publish System //*********************************** BEGIN_FUNCTION_MAP FN_0(get_num_targets, TYPE_INT, GetNumTargets); FN_1(get_node, TYPE_INODE, GetNode, TYPE_INDEX); FN_1(get_target_weight, TYPE_FLOAT, GetTargetWeight, TYPE_INDEX); FN_2(set_target_weight, TYPE_BOOL, SetTargetWeight, TYPE_INDEX, TYPE_FLOAT); FN_2(append_target, TYPE_BOOL, AppendTarget, TYPE_INODE, TYPE_FLOAT); FN_1(delete_target, TYPE_BOOL, DeleteTarget, TYPE_INDEX); END_FUNCTION_MAP FPInterfaceDesc* GetDesc(); // <-- must implement //End of Function Publishing system code //*********************************** virtual int GetNumTargets()=0; virtual INode* GetNode(int targetNumber)=0; virtual float GetTargetWeight(int targetNumber)=0; virtual BOOL SetTargetWeight(int targetNumber, float weight)=0; virtual BOOL AppendTarget(INode *target, float weight=50.0)=0; virtual BOOL DeleteTarget(int selection)=0; virtual BOOL GetRelative()=0; virtual BOOL GetVLisAbs()=0; virtual BOOL GetUpnodeWorld()=0; virtual BOOL GetStoUPAxisFlip()=0; virtual BOOL GetTargetAxisFlip()=0; virtual BOOL Get_SetOrientation()=0; virtual int GetTargetAxis()=0; virtual int GetUpNodeAxis()=0; virtual int Get_StoUPAxis()=0; virtual int Get_upnode_control()=0; virtual void SetRelative(BOOL rel)=0; virtual void SetVLisAbs(BOOL rel)=0; virtual void SetUpnodeWorld(BOOL uw)=0; virtual void SetTargetAxisFlip(BOOL rel)=0; virtual void SetStoUPAxisFlip(BOOL rel)=0; virtual void Set_SetOrientation(BOOL rel)=0; virtual void Set_Reset_Orientation()=0; virtual void SetTargetAxis(int axis)=0; virtual void SetUpNodeAxis(int axis)=0; virtual void Set_StoUPAxis(int axis)=0; }; #define LOOKAT_ROT_PBLOCK_REF 0 //------------------------------------------------------------- // Access to noise controller's parameters. // All noise controllers are derived from this class // class INoiseControl : public StdControl { public: virtual void SetSeed(int seed)=0; virtual int GetSeed()=0; virtual void SetFrequency(float f)=0; virtual float GetFrequency()=0; virtual void SetFractal(BOOL f)=0; virtual BOOL GetFractal()=0; virtual void SetRoughness(float f)=0; virtual float GetRoughness()=0; virtual void SetRampIn(TimeValue in)=0; virtual TimeValue GetRampIn()=0; virtual void SetRampOut(TimeValue out)=0; virtual TimeValue GetRampOut()=0; virtual void SetPositiveOnly(int which,BOOL onOff)=0; virtual BOOL GetPositiveOnly(int which)=0; virtual Control *GetStrengthController()=0; virtual void SetStrengthController(Control *c)=0; }; //------------------------------------------------------------- // Access to SurfPosition controller // class ISurfPosition : public Control { public: virtual void SetSurface(INode *node)=0; virtual int GetAlign()=0; virtual void SetAlign(int a)=0; virtual BOOL GetFlip()=0; virtual void SetFlip(BOOL f)=0; }; // Surface controller references #define SURFCONT_U_REF 0 #define SURFCONT_V_REF 1 #define SURFCONT_SURFOBJ_REF 2 //------------------------------------------------------------- // Access to the LinkCtrl // class ILinkCtrl; #define LINK_CONSTRAINT_INTERFACE Interface_ID(0x32f03b37, 0x6700693a) #define GetLinkConstInterface(cd) \ (LinkConstTransform*)(cd)->GetInterface(LINK_CONSTRAINT_INTERFACE) class ILinkCtrl : public Control, public FPMixinInterface { public: enum { get_num_targets, get_node, set_node, get_frame_no, set_frame_no, add_target, delete_target,}; // FUNCTION_PUBLISHING // Function Map for Function Publish System //*********************************** BEGIN_FUNCTION_MAP FN_0(get_num_targets, TYPE_INT, GetNumTargets); FN_1(get_node, TYPE_INODE, GetNode, TYPE_INDEX); // FN_2(set_node, TYPE_BOOL, SetNode, TYPE_INODE, TYPE_INT); FN_1(get_frame_no, TYPE_INT, GetFrameNumber, TYPE_INDEX); FN_2(set_frame_no, TYPE_BOOL, SetFrameNumber, TYPE_INDEX, TYPE_INT); FN_2(add_target, TYPE_BOOL, AddTarget, TYPE_INODE, TYPE_INT); FN_1(delete_target, TYPE_BOOL, DeleteTarget, TYPE_INDEX); END_FUNCTION_MAP FPInterfaceDesc* GetDesc(); // <-- must implement //End of Function Publishing system code //***********************************{ // public: virtual int GetNumTargets()=0; virtual TimeValue GetLinkTime(int i)=0; virtual void SetLinkTime(int i,TimeValue t)=0; virtual void LinkTimeChanged()=0; // call after changing Link times virtual void AddNewLink(INode *node,TimeValue t)=0; virtual BOOL DeleteTarget(int frameNo)=0; virtual int GetFrameNumber(int targetNumber)=0; virtual BOOL SetFrameNumber(int targetNumber, int frameNumber)=0; // virtual BOOL SetNode(INode *target, int targetNumber)=0; virtual BOOL AddTarget(INode *target, int frameNo)=0; virtual INode* GetNode(int targetNumber)=0; }; // LinkCtrl references #define LINKCTRL_CONTROL_REF 0 // the TM controller #define LINKCTRL_FIRSTPARENT_REF 1 // parent nodes... refs 1-n #define LINKCTRL_PBLOCK_REF 2 // added for Paramblock implementation //------------------------------------------------------------- // Access to the OLD LookatControl // class ILookatControl : public Control { public: virtual void SetFlip(BOOL f)=0; virtual BOOL GetFlip()=0; virtual void SetAxis(int a)=0; virtual int GetAxis()=0; }; // References for the lookat controller #define LOOKAT_TARGET_REF 0 #define LOOKAT_POS_REF 1 #define LOOKAT_ROLL_REF 2 #define LOOKAT_SCL_REF 3 //------------------------------------------------------------- //Access to the List Controller // #define FLOATLIST_CONTROL_CLASS_ID 0x4b4b1000 #define POINT3LIST_CONTROL_CLASS_ID 0x4b4b1001 #define POSLIST_CONTROL_CLASS_ID 0x4b4b1002 #define ROTLIST_CONTROL_CLASS_ID 0x4b4b1003 #define SCALELIST_CONTROL_CLASS_ID 0x4b4b1004 #define DUMMY_CONTROL_CLASS_ID 0xeeefffff #define MASTERLIST_CONTROL_CLASS_ID 0x4b4b1015 class IListControl; #define LIST_CONTROLLER_INTERFACE Interface_ID(0x444e7687, 0x722e6e36) #define GetIListControlInterface(cd) \ (IListControl*)(cd)->GetInterface(LIST_CONTROLLER_INTERFACE) class IListControl : public Control, public FPMixinInterface { public: enum{ list_getNumItems, list_setActive, list_getActive, list_cutItem, list_pasteItem, list_deleteItem, list_count, list_setActive_prop, list_getActive_prop, list_getName, list_setName, }; // FUNCTION_PUBLISHING // Function Map for Function Publish System //*********************************** BEGIN_FUNCTION_MAP FN_0 (list_getNumItems, TYPE_INT, GetListCount ); VFN_1 (list_setActive, SetActive, TYPE_INDEX ); FN_0 (list_getActive, TYPE_INDEX, GetActive ); VFN_1 (list_deleteItem, DeleteItem, TYPE_INDEX ); VFN_1 (list_cutItem, CutItem, TYPE_INDEX ); VFN_1 (list_pasteItem, PasteItem, TYPE_INDEX ); FN_1 (list_getName, TYPE_TSTR_BV, GetName, TYPE_INDEX ); VFN_2 (list_setName, SetName, TYPE_INDEX, TYPE_STRING ); RO_PROP_FN (list_count, GetListCount, TYPE_INT ); PROP_FNS (list_getActive_prop, GetActive, list_setActive_prop, SetActive, TYPE_INDEX ); END_FUNCTION_MAP FPInterfaceDesc* GetDesc(); // <-- must implement //End of Function Publishing system code //*********************************** virtual int GetListCount()=0; virtual void SetActive(int index)=0; virtual int GetActive()=0; virtual void DeleteItem(int index)=0; virtual void CutItem(int index)=0; virtual void PasteItem(int index)=0; virtual void SetName(int index, TSTR name)=0; virtual TSTR GetName(int index)=0; }; //------------------------------------------------------------- // Access to FFD modifiers // // Can either be casted to IFFDMod or IFFDMod based on the ClassID template class IFFDMod : public T { public: virtual int NumPts()=0; // number of lattice control points virtual int NumPtConts()=0; // number of CP's having controllers virtual Control* GetPtCont(int i)=0; // get i'th CP controller virtual void SetPtCont(int i,Control *c)=0; // set i'th CP controller virtual Point3 GetPt(int i)=0; // get i'th CP virtual void SetPt(int i, Point3 p)=0; // set i'th CP virtual void SetGridDim(IPoint3 d) { } // set the lattice dimensions virtual IPoint3 GetGridDim() { return IPoint3(0,0,0); } // get the lattice dimensions virtual void AnimateAll() { } // assign controllers to all CP's virtual void Conform() { } // not valid for WSMObject's virtual void SelectPt(int i, BOOL sel, BOOL clearAll=FALSE) { } }; //------------------------------------------------------------- // Access to mesh selections in editable mesh and edit mesh mod // #include "namesel.h" // Selection levels: #define IMESHSEL_OBJECT 0 #define IMESHSEL_VERTEX 1 #define IMESHSEL_FACE 2 #define IMESHSEL_EDGE 3 class IMeshSelect { public: virtual DWORD GetSelLevel()=0; virtual void SetSelLevel(DWORD level)=0; virtual void LocalDataChanged()=0; virtual BOOL HasWeightedVertSel () { return FALSE; } virtual BOOL CanAssignWeightedVertSel () { return FALSE; } }; class IMeshSelectData { public: virtual BitArray GetVertSel()=0; virtual BitArray GetFaceSel()=0; virtual BitArray GetEdgeSel()=0; virtual void SetVertSel(BitArray &set, IMeshSelect *imod, TimeValue t)=0; virtual void SetFaceSel(BitArray &set, IMeshSelect *imod, TimeValue t)=0; virtual void SetEdgeSel(BitArray &set, IMeshSelect *imod, TimeValue t)=0; virtual GenericNamedSelSetList & GetNamedVertSelList ()=0; virtual GenericNamedSelSetList & GetNamedEdgeSelList ()=0; virtual GenericNamedSelSetList & GetNamedFaceSelList ()=0; virtual void GetWeightedVertSel (int nv, float *sel) {} virtual void SetWeightedVertSel (int nv, float *sel, IMeshSelect *imod, TimeValue t) {} }; //------------------------------------------------------------- // Access to spline selections and operations in SplineShape and EditSplineMod // // selection levels defined in splshape.h class ISplineSelect // accessed via GetInterface(I_SPLINESELECT) { public: virtual DWORD GetSelLevel()=0; virtual void SetSelLevel(DWORD level)=0; virtual void LocalDataChanged()=0; }; class ISplineSelectData // accessed via GetInterface(I_SPLINESELECTDATA) { public: // access spline sub-object selections, current & named virtual BitArray GetVertSel()=0; virtual BitArray GetSegmentSel()=0; virtual BitArray GetSplineSel()=0; virtual void SetVertSel(BitArray &set, ISplineSelect *imod, TimeValue t)=0; virtual void SetSegmentSel(BitArray &set, ISplineSelect *imod, TimeValue t)=0; virtual void SetSplineSel(BitArray &set, ISplineSelect *imod, TimeValue t)=0; virtual GenericNamedSelSetList & GetNamedVertSelList ()=0; virtual GenericNamedSelSetList & GetNamedSegmentSelList ()=0; virtual GenericNamedSelSetList & GetNamedSplineSelList ()=0; }; enum splineCommandMode { ScmCreateLine, ScmAttach, ScmInsert, ScmConnect, ScmRefine, ScmFillet, ScmChamfer, ScmBind, ScmRefineConnect, ScmOutline, ScmTrim, ScmExtend, ScmCrossInsert, ScmBreak, ScmUnion, ScmSubtract, }; enum splineButtonOp { SopHide, SopUnhideAll, SopDelete, SopDetach, SopDivide, SopCycle, SopUnbind, SopWeld, SopMakeFirst, SopAttachMultiple, SopExplode, SopReverse, SopClose, SopIntersect, SopMirrorHoriz, SopMirrorVert, SopMirrorBoth, SopSelectByID, SopFuse, }; // LAM: added 9/3/00 enum splineUIParam { }; class ISplineOps // accessed via GetInterface(I_SPLINEOPS) { public: // start up interactive command mode, uses mode enum above virtual void StartCommandMode(splineCommandMode mode)=0; // perform button op, uses op enum above virtual void ButtonOp(splineButtonOp opcode)=0; // LAM: added 9/3/00 // UI controls access virtual void GetUIParam (splineUIParam uiCode, int & ret) { } virtual void SetUIParam (splineUIParam uiCode, int val) { } virtual void GetUIParam (splineUIParam uiCode, float & ret) { } virtual void SetUIParam (splineUIParam uiCode, float val) { } }; //------------------------------------------------------------- // Access to spline selections and operations in PatchObject and EditPatchMod // // selection levels defined in patchobj.h class IPatchSelect // accessed via GetInterface(I_PATCHSELECT) { public: virtual DWORD GetSelLevel()=0; virtual void SetSelLevel(DWORD level)=0; virtual void LocalDataChanged()=0; }; class IPatchSelectData // accessed via GetInterface(I_PATCHSELECTDATA) { public: // access patch sub-object selections, current & named virtual BitArray GetVertSel()=0; virtual BitArray GetEdgeSel()=0; virtual BitArray GetPatchSel()=0; virtual void SetVertSel(BitArray &set, IPatchSelect *imod, TimeValue t)=0; virtual void SetEdgeSel(BitArray &set, IPatchSelect *imod, TimeValue t)=0; virtual void SetPatchSel(BitArray &set, IPatchSelect *imod, TimeValue t)=0; virtual GenericNamedSelSetList & GetNamedVertSelList ()=0; virtual GenericNamedSelSetList & GetNamedEdgeSelList ()=0; virtual GenericNamedSelSetList & GetNamedPatchSelList ()=0; }; enum patchCommandMode { PcmAttach, PcmExtrude, PcmBevel, PcmBind, PcmCreate, PcmWeldTarget, PcmFlipNormal }; enum patchButtonOp { PopUnbind, PopHide, PopUnhideAll, PopWeld, PopDelete, PopSubdivide, PopAddTri, PopAddQuad, PopDetach, PopSelectOpenEdges, PopBreak, PopCreateShapeFromEdges, PopFlipNormal, PopUnifyNormal, PopSelectByID, PopSelectBySG, PopClearAllSG }; // LAM: added 9/3/00 enum patchUIParam { }; class IPatchOps // accessed via GetInterface(I_PATCHOPS) { public: // start up interactive command mode, uses mode enum above virtual void StartCommandMode(patchCommandMode mode)=0; // perform button op, uses op enum above virtual void ButtonOp(patchButtonOp opcode)=0; // LAM: added 9/3/00 // UI controls access virtual void GetUIParam (patchUIParam uiCode, int & ret) { } virtual void SetUIParam (patchUIParam uiCode, int val) { } virtual void GetUIParam (patchUIParam uiCode, float & ret) { } virtual void SetUIParam (patchUIParam uiCode, float val) { } }; // Interface for the TimeSlider #define TIMESLIDER_INTERFACE Interface_ID(0x829e89e5, 0x878ef6e5) class ITimeSlider : public FPStaticInterface { public: virtual void SetVisible(BOOL bVisible, BOOL bPersistent = TRUE) = 0; virtual BOOL IsVisible() = 0; }; // Interface for the BMP I/O plug-in #define BMPIO_INTERFACE Interface_ID(0x374f288f, 0x19e460d6) // Valid types are, BMM_PALETTED, BMM_TRUE_24 and BMM_NO_TYPE (=BMM_TRUE_24) class IBitmapIO_Bmp : public FPStaticInterface { public: virtual int GetType() = 0; virtual void SetType(int type) = 0; }; // Interface for the JPeg I/O plug-in #define JPEGIO_INTERFACE Interface_ID(0x466c7964, 0x2db94ff2) class IBitmapIO_Jpeg : public FPStaticInterface { public: virtual int GetQuality() = 0; virtual void SetQuality(int quality) = 0; virtual int GetSmoothing() = 0; virtual void SetSmoothing(int smoothing) = 0; }; // Interface for the Png I/O plug-in #define PNGIO_INTERFACE Interface_ID(0x1d7c41db, 0x328c1142) class IBitmapIO_Png : public FPStaticInterface { public: // Valid type are: // BMM_PALETTED // BMM_TRUE_24 // BMM_TRUE_48 // BMM_GRAY_8 // BMM_GRAY_16 virtual int GetType() = 0; virtual void SetType(int type) = 0; virtual BOOL GetAlpha() = 0; virtual void SetAlpha(BOOL alpha) = 0; virtual BOOL GetInterlaced() = 0; virtual void SetInterlaced(BOOL interlaced) = 0; }; // Interface for the Targa I/O plug-in #define TGAIO_INTERFACE Interface_ID(0x21d673b7, 0x1d34198d) class IBitmapIO_Tga : public FPStaticInterface { public: // 16, 24, 32 virtual int GetColorDepth() = 0; virtual void SetColorDepth(int bpp) = 0; virtual BOOL GetCompressed() = 0; virtual void SetCompressed(BOOL compressed) = 0; virtual BOOL GetAlphaSplit() = 0; virtual void SetAlphaSplit(BOOL alphaSplit) = 0; virtual BOOL GetPreMultAlpha() = 0; virtual void SetPreMultAlpha(BOOL preMult) = 0; }; #endif //__ISTDPLUG__