123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /**********************************************************************
- *<
- FILE: simpmod.h
- DESCRIPTION: Simple modifier base class
- CREATED BY: Dan Silva & Rolf Berteig
- HISTORY: created 30 Jauary, 1995
- *> Copyright (c) 1994, All Rights Reserved.
- **********************************************************************/
- #ifndef __SIMPMOD__
- #define __SIMPMOD__
- //--- SimpleMod -----------------------------------------------------------
- class SimpleMod: public Modifier {
- public:
- Control *tmControl;
- Control *posControl;
- IParamBlock *pblock;
-
- CoreExport static IObjParam *ip;
- static MoveModBoxCMode *moveMode;
- static RotateModBoxCMode *rotMode;
- static UScaleModBoxCMode *uscaleMode;
- static NUScaleModBoxCMode *nuscaleMode;
- static SquashModBoxCMode *squashMode;
- static SimpleMod *editMod;
-
- CoreExport SimpleMod();
- CoreExport virtual ~SimpleMod();
- ChannelMask ChannelsUsed() { return PART_GEOM|PART_TOPO|SELECT_CHANNEL|SUBSEL_TYPE_CHANNEL; }
- ChannelMask ChannelsChanged() { return PART_GEOM; }
- CoreExport void ModifyObject(TimeValue t, ModContext &mc, ObjectState *os, INode *node);
- Class_ID InputType() {return defObjectClassID;}
- CoreExport Interval LocalValidity(TimeValue t);
- CoreExport Matrix3 CompMatrix(TimeValue t, ModContext& mc, Matrix3& ntm,
- Interval& valid, BOOL needOffset);
- CoreExport void CompOffset( TimeValue t, Matrix3& offset, Matrix3& invoffset);
- // From BaseObject
- CoreExport int HitTest(TimeValue t, INode* inode, int type, int crossing, int flags, IPoint2 *p, ViewExp *vpt, ModContext* mc);
- CoreExport int Display(TimeValue t, INode* inode, ViewExp *vpt, int flagst, ModContext *mc);
- CoreExport void GetWorldBoundBox(TimeValue t,INode* inode, ViewExp *vpt, Box3& box, ModContext *mc);
-
- CoreExport void GetSubObjectCenters(SubObjAxisCallback *cb,TimeValue t,INode *node,ModContext *mc);
- CoreExport void GetSubObjectTMs(SubObjAxisCallback *cb,TimeValue t,INode *node,ModContext *mc);
- BOOL ChangeTopology() {return FALSE;}
- CoreExport IParamArray *GetParamBlock();
- CoreExport int GetParamBlockIndex(int id);
- // Affine transform methods
- CoreExport void Move( TimeValue t, Matrix3& partm, Matrix3& tmAxis, Point3& val, BOOL localOrigin=FALSE );
- CoreExport void Rotate( TimeValue t, Matrix3& partm, Matrix3& tmAxis, Quat& val, BOOL localOrigin=FALSE );
- CoreExport void Scale( TimeValue t, Matrix3& partm, Matrix3& tmAxis, Point3& val, BOOL localOrigin=FALSE );
-
- int NumRefs() {return 3;}
- CoreExport RefTargetHandle GetReference(int i);
- CoreExport void SetReference(int i, RefTargetHandle rtarg);
- int NumSubs() {return 3;}
- CoreExport Animatable* SubAnim(int i);
- CoreExport TSTR SubAnimName(int i);
- CoreExport RefResult NotifyRefChanged( Interval changeInt,RefTargetHandle hTarget,
- PartID& partID, RefMessage message);
- CreateMouseCallBack* GetCreateMouseCallBack() {return NULL;}
- CoreExport void ActivateSubobjSel(int level, XFormModes& modes);
- // When clients are cloning themselves, they should call this
- // method on the clone to copy SimpleMod's data.
- CoreExport void SimpleModClone(SimpleMod *smodSource);
- // Clients of simpmod probably want to override these. If they do
- // the should call these from within thier methods.
- CoreExport void BeginEditParams(IObjParam *ip, ULONG flags,Animatable *prev);
- CoreExport void EndEditParams(IObjParam *ip, ULONG flags,Animatable *next);
- // Clients of simpmod need to implement this method
- virtual Deformer& GetDeformer(TimeValue t,ModContext &mc,Matrix3& mat,Matrix3& invmat)=0;
- virtual void InvalidateUI() {}
- virtual Interval GetValidity(TimeValue t) {return FOREVER;}
- virtual ParamDimension *GetParameterDim(int pbIndex) {return defaultDim;}
- virtual TSTR GetParameterName(int pbIndex) {return TSTR(_T("Parameter"));}
- virtual BOOL GetModLimits(TimeValue t,float &zmin, float &zmax, int &axis) {return FALSE;}
- };
- // This is the ref ID of the parameter block
- #define SIMPMOD_PBLOCKREF 2
- //--- SimpleWSMMod -----------------------------------------------------------
- class SimpleWSMMod: public Modifier {
- public:
- WSMObject *obRef;
- INode *nodeRef;
- IParamBlock *pblock;
-
- CoreExport static IObjParam *ip;
- static SimpleWSMMod *editMod;
-
- CoreExport SimpleWSMMod();
- CoreExport virtual ~SimpleWSMMod();
- ChannelMask ChannelsUsed() { return PART_GEOM|PART_TOPO; }
- ChannelMask ChannelsChanged() { return PART_GEOM; }
- CoreExport void ModifyObject(TimeValue t, ModContext &mc, ObjectState *os, INode *node);
- Class_ID InputType() {return defObjectClassID;}
- CoreExport Interval LocalValidity(TimeValue t);
- BOOL ChangeTopology() {return FALSE;}
- CreateMouseCallBack* GetCreateMouseCallBack() {return NULL;}
- int NumRefs() {return 3;}
- CoreExport RefTargetHandle GetReference(int i);
- CoreExport void SetReference(int i, RefTargetHandle rtarg);
- int NumSubs() {return 1;}
- CoreExport Animatable* SubAnim(int i);
- CoreExport TSTR SubAnimName(int i);
- CoreExport RefResult NotifyRefChanged( Interval changeInt,RefTargetHandle hTarget,
- PartID& partID, RefMessage message);
-
- CoreExport IParamArray *GetParamBlock();
- CoreExport int GetParamBlockIndex(int id);
- // Evaluates the node reference and returns the WSM object.
- CoreExport WSMObject *GetWSMObject(TimeValue t);
-
- // When clients are cloning themselves, they should call this
- // method on the clone to copy SimpleMod's data.
- CoreExport void SimpleWSMModClone(SimpleWSMMod *smodSource);
- // Clients of simpmod probably want to override these. If they do
- // the should call these from within thier methods.
- CoreExport void BeginEditParams(IObjParam *ip, ULONG flags,Animatable *prev);
- CoreExport void EndEditParams(IObjParam *ip, ULONG flags,Animatable *next);
- // Clients of simpmod need to implement this method
- virtual Deformer& GetDeformer(TimeValue t,ModContext &mc,Matrix3& mat,Matrix3& invmat)=0;
- virtual void InvalidateUI() {}
- virtual Interval GetValidity(TimeValue t) {return FOREVER;}
- virtual ParamDimension *GetParameterDim(int pbIndex) {return defaultDim;}
- virtual TSTR GetParameterName(int pbIndex) {return TSTR(_T("Parameter"));}
- virtual void InvalidateParamMap() {}
- };
- #define SIMPWSMMOD_OBREF 0
- #define SIMPWSMMOD_NODEREF 1
- #define SIMPWSMMOD_PBLOCKREF 2
- #endif
|