This commit is contained in:
parent
3d74ef38c3
commit
aeb95010d3
24 changed files with 7743 additions and 12 deletions
104
Utils/GinExp/ffd.h
Normal file
104
Utils/GinExp/ffd.h
Normal file
|
@ -0,0 +1,104 @@
|
|||
#ifndef FFD_H
|
||||
#define FFD_H
|
||||
|
||||
#include "iparamm.h"
|
||||
#include "istdplug.h"
|
||||
|
||||
// This is the FFD Modifier's class ID.
|
||||
#define FFD44_CLASS_ID Class_ID(0x21325596, 0x2cd10bd8)
|
||||
#define FFD33_CLASS_ID Class_ID(0x21325596, 0x2cd10bd9)
|
||||
#define FFD22_CLASS_ID Class_ID(0x21325596, 0x2cd10bd0)
|
||||
|
||||
class FFDMod : public Modifier {
|
||||
public:
|
||||
// An addition transformation from "Mod Space".
|
||||
// Let's the user move/rotate/scale the source box
|
||||
Control *tmControl;
|
||||
|
||||
// Parameter block to store parameters
|
||||
IParamBlock *pblock;
|
||||
|
||||
// This BitArray will be set to a length of 64. 1 bit for
|
||||
// each point indicating its selection state.
|
||||
BitArray sel;
|
||||
|
||||
// A cache of the input object's bounding box.
|
||||
Box3 lbox;
|
||||
|
||||
// Class variables -- these are only used by one instance
|
||||
// of this class at a time while it is being edited in
|
||||
// the command panel.
|
||||
static IObjParam *ip;
|
||||
static IParamMap *pmapParam;
|
||||
static MoveModBoxCMode *moveMode;
|
||||
static RotateModBoxCMode *rotMode;
|
||||
static UScaleModBoxCMode *uscaleMode;
|
||||
static NUScaleModBoxCMode *nuscaleMode;
|
||||
static SquashModBoxCMode *squashMode;
|
||||
static SelectModBoxCMode *selectMode;
|
||||
|
||||
FFDMod();
|
||||
~FFDMod();
|
||||
|
||||
// From Animatable
|
||||
void DeleteThis() {delete this;}
|
||||
void BeginEditParams(IObjParam *ip, ULONG flags,Animatable *prev);
|
||||
void EndEditParams(IObjParam *ip,ULONG flags,Animatable *next);
|
||||
CreateMouseCallBack* GetCreateMouseCallBack() {return NULL;}
|
||||
BOOL AssignController(Animatable *control,int subAnim);
|
||||
int SubNumToRefNum(int subNum);
|
||||
BOOL SelectSubAnim(int subNum);
|
||||
|
||||
// From BaseObject/Object
|
||||
int Display(TimeValue t, INode* inode, ViewExp *vpt, int flags, ModContext *mc);
|
||||
void GetWorldBoundBox(TimeValue t,INode* inode, ViewExp *vpt, Box3& box, ModContext *mc);
|
||||
int HitTest(TimeValue t, INode* inode, int type, int crossing, int flags, IPoint2 *p, ViewExp *vpt, ModContext* mc);
|
||||
void SelectSubComponent(HitRecord *hitRec, BOOL selected, BOOL all, BOOL invert=FALSE);
|
||||
void ClearSelection(int selLevel);
|
||||
void SelectAll(int selLevel);
|
||||
void InvertSelection(int selLevel);
|
||||
void ActivateSubobjSel(int level, XFormModes& modes);
|
||||
void Move(TimeValue t, Matrix3& partm, Matrix3& tmAxis, Point3& val, BOOL localOrigin);
|
||||
void Rotate(TimeValue t, Matrix3& partm, Matrix3& tmAxis, Quat& val, BOOL localOrigin);
|
||||
void Scale(TimeValue t, Matrix3& partm, Matrix3& tmAxis, Point3& val, BOOL localOrigin);
|
||||
void GetSubObjectCenters(SubObjAxisCallback *cb,TimeValue t,INode *node,ModContext *mc);
|
||||
void GetSubObjectTMs(SubObjAxisCallback *cb,TimeValue t,INode *node,ModContext *mc);
|
||||
void TransformStart(TimeValue t) {if (ip) ip->LockAxisTripods(TRUE);}
|
||||
void TransformFinish(TimeValue t) {if (ip) ip->LockAxisTripods(FALSE);}
|
||||
void TransformCancel(TimeValue t) {if (ip) ip->LockAxisTripods(FALSE);}
|
||||
|
||||
// From Modifier
|
||||
ChannelMask ChannelsUsed() {return PART_GEOM|PART_TOPO|PART_SELECT|PART_SUBSEL_TYPE;}
|
||||
ChannelMask ChannelsChanged() {return PART_GEOM;}
|
||||
Class_ID InputType() {return defObjectClassID;}
|
||||
Interval LocalValidity(TimeValue t);
|
||||
void ModifyObject(TimeValue t, ModContext &mc, ObjectState *os, INode *node);
|
||||
|
||||
// From ReferenceTarget/Maker
|
||||
int NumRefs() {return 66;}
|
||||
RefTargetHandle GetReference(int i);
|
||||
void SetReference(int i, RefTargetHandle rtarg);
|
||||
int NumSubs() {return 66;}
|
||||
Animatable* SubAnim(int i);
|
||||
TSTR SubAnimName(int i);
|
||||
|
||||
IOResult Load(ILoad *iload);
|
||||
IOResult Save(ISave *isave);
|
||||
|
||||
RefResult NotifyRefChanged(Interval changeInt, RefTargetHandle hTarget, PartID& partID, RefMessage message);
|
||||
|
||||
int DrawControlPoints(TimeValue t,ViewExp *vpt,GraphicsWindow *gw,Box3 box,BOOL ht=FALSE,INode *inode=NULL,ModContext *mc=NULL,int flags=0);
|
||||
Matrix3 CompTM(TimeValue t,INode *inode,ModContext *mc);
|
||||
void PlugControllers(TimeValue t);
|
||||
|
||||
virtual int NumCtrlPts()=0;
|
||||
virtual Control* GetPtCont(int i)=0;
|
||||
virtual void SetPtCont(int i,Control *c)=0;
|
||||
virtual Point3& GetPt(int i)=0;
|
||||
virtual Point3 *GetPtPtr()=0;
|
||||
virtual int GridWidth()=0;
|
||||
virtual int GridIndex(int i,int j,int k)=0;
|
||||
virtual Point3 GetControlPoint(TimeValue t, int i, int src=FALSE)=0;
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue