Initial commit
This commit is contained in:
646
Torque/SDK/lib/maxsdk40/objmode.h
Normal file
646
Torque/SDK/lib/maxsdk40/objmode.h
Normal file
@@ -0,0 +1,646 @@
|
||||
/**********************************************************************
|
||||
*<
|
||||
FILE: objmode.h
|
||||
|
||||
DESCRIPTION: Provides some standard modes for subobject manipulation
|
||||
|
||||
CREATED BY: Rolf Berteig
|
||||
|
||||
HISTORY: Created 3-14-95
|
||||
|
||||
*> Copyright (c) 1994, All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef __OBJMODE__
|
||||
#define __OBJMODE__
|
||||
|
||||
|
||||
class Transformer {
|
||||
protected:
|
||||
Matrix3 tmAxis;
|
||||
IObjParam *ip;
|
||||
IPoint2 mBase, mCur;
|
||||
|
||||
public:
|
||||
Transformer(IObjParam *i) { ip = i; }
|
||||
CoreExport virtual void BeginDrag( IPoint2& m, Matrix3& tmAxis );
|
||||
CoreExport virtual void EndDrag( IPoint2& m );
|
||||
CoreExport void SetMouse( IPoint2& m );
|
||||
#ifdef _OSNAP
|
||||
CoreExport virtual void SnapPreview(ViewExp *vpt, IPoint2 in, IPoint2 out, Matrix3 *m , DWORD flags){};
|
||||
#endif
|
||||
virtual void Accumulate() {mBase=mCur;}
|
||||
Matrix3& Axis() { return tmAxis; }
|
||||
IPoint2 Base() { return mBase; }
|
||||
};
|
||||
|
||||
class MoveTransformer : public Transformer {
|
||||
Point3 lastDelta;
|
||||
Point3 absSnapOrigin;
|
||||
BOOL selfSnap;
|
||||
public:
|
||||
void SetSelfSnap(BOOL ss) {selfSnap=ss;}
|
||||
BOOL GetSelfSnap() {return selfSnap;}
|
||||
CoreExport void BeginDrag( IPoint2& m, Matrix3& tmAxis );
|
||||
CoreExport Point3 Eval(ViewExp *vpt,BOOL status=TRUE);
|
||||
MoveTransformer(IObjParam *i,BOOL so=FALSE) : Transformer(i) {lastDelta = Point3(0,0,0); selfSnap=so;}
|
||||
CoreExport void Accumulate();
|
||||
#ifdef _OSNAP
|
||||
CoreExport void SnapPreview(ViewExp *vpt, IPoint2 in, IPoint2 out, Matrix3 *m , DWORD flags);
|
||||
#endif
|
||||
};
|
||||
|
||||
class RotateTransformer : public Transformer {
|
||||
Quat qPrev;
|
||||
public:
|
||||
CoreExport AngAxis Eval(ViewExp *vpt,BOOL status=TRUE);
|
||||
CoreExport void BeginDrag( IPoint2& m, Matrix3& tmAxis );
|
||||
RotateTransformer(IObjParam *i) : Transformer(i) {qPrev.Identity();}
|
||||
#ifdef _OSNAP
|
||||
CoreExport void SnapPreview(ViewExp *vpt, IPoint2 in, IPoint2 out, Matrix3 *m , DWORD flags);
|
||||
#endif
|
||||
};
|
||||
|
||||
class ScaleTransformer : public Transformer {
|
||||
public:
|
||||
CoreExport Point3 Eval(ViewExp *vpt,BOOL status=TRUE);
|
||||
ScaleTransformer(IObjParam *i) : Transformer(i) {}
|
||||
#ifdef _OSNAP
|
||||
CoreExport void BeginDrag( IPoint2& m, Matrix3& tmAxis );
|
||||
CoreExport void SnapPreview(ViewExp *vpt, IPoint2 in, IPoint2 out, Matrix3 *m , DWORD flags);
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
class ChangeFGObject : public ChangeForegroundCallback {
|
||||
ReferenceTarget *obj;
|
||||
BOOL valid;
|
||||
public:
|
||||
ChangeFGObject() { obj = NULL; valid = TRUE; }
|
||||
ChangeFGObject(ReferenceTarget *o) { obj = o; valid = TRUE; }
|
||||
void SetObj(ReferenceTarget *o ) { obj = o; }
|
||||
|
||||
BOOL IsValid() { return valid; }
|
||||
void Invalidate() { valid = FALSE; }
|
||||
void Validate() { valid = TRUE; }
|
||||
void callback(TimeValue t,IScene *scene)
|
||||
{
|
||||
obj->FlagDependents(t);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
class SelectionProcessor : public MouseCallBack {
|
||||
private:
|
||||
MouseCallBack *mcallback;
|
||||
BOOL brokenThresh, hitSel, drag, toggle, cloning, clear, invert;
|
||||
IPoint2 offset;
|
||||
IPoint2 om,lm;
|
||||
|
||||
protected:
|
||||
IObjParam *ip;
|
||||
|
||||
virtual BOOL HitTest( ViewExp *vpt, IPoint2 *p, int type, int flags )=0;
|
||||
virtual BOOL AnyHits( ViewExp *vpt )=0;
|
||||
virtual HCURSOR GetTransformCursor()=0;
|
||||
virtual void Select(ViewExp *vpt,BOOL all,BOOL clear,BOOL invert)=0;
|
||||
virtual void DeSelect(ViewExp *vpt,BOOL all)=0;
|
||||
virtual void ClearSelection()=0;
|
||||
virtual void CloneSelected(int initialCall=TRUE)=0;
|
||||
virtual void AbortClone()=0;
|
||||
virtual void AcceptClone()=0;
|
||||
virtual void SelectChildren(ViewExp *vpt) {}
|
||||
|
||||
public:
|
||||
SelectionProcessor(MouseCallBack *m,IObjParam *i)
|
||||
{ mcallback = m; ip = i; offset = IPoint2(0,0); }
|
||||
|
||||
CoreExport virtual int proc(
|
||||
HWND hwnd,
|
||||
int msg,
|
||||
int point,
|
||||
int flags,
|
||||
IPoint2 m );
|
||||
|
||||
CoreExport void pan(IPoint2 d);
|
||||
};
|
||||
|
||||
|
||||
class TransformModBox : public MouseCallBack {
|
||||
protected:
|
||||
BaseObject *obj;
|
||||
IObjParam *ip;
|
||||
Matrix3 ptm;
|
||||
|
||||
public:
|
||||
CoreExport TransformModBox(BaseObject *o, IObjParam *i);
|
||||
CoreExport ~TransformModBox();
|
||||
|
||||
// These are called before and after the DoTransform operations
|
||||
CoreExport virtual void PreTransform();
|
||||
CoreExport virtual void PreTransformHolding();
|
||||
CoreExport virtual void PostTransformHolding();
|
||||
CoreExport virtual void PostTransform();
|
||||
CoreExport virtual void CancelTransform();
|
||||
|
||||
virtual Transformer& GetTransformer()=0;
|
||||
virtual void DoTransform(ViewExp *vpt)=0;
|
||||
virtual HCURSOR GetTransformCursor()=0;
|
||||
virtual int UndoStringID()=0;
|
||||
|
||||
CoreExport int proc(
|
||||
HWND hwnd,
|
||||
int msg,
|
||||
int point,
|
||||
int flags,
|
||||
IPoint2 m );
|
||||
};
|
||||
|
||||
|
||||
class GenModSelectionProcessor : public SelectionProcessor {
|
||||
protected:
|
||||
BaseObject *obj;
|
||||
BOOL transformGizmoActive;
|
||||
|
||||
CoreExport BOOL HitTest( ViewExp *vpt, IPoint2 *p, int type, int flags );
|
||||
BOOL AnyHits( ViewExp *vpt ) { return vpt->NumSubObjHits(); }
|
||||
CoreExport void Select(ViewExp *vpt,BOOL all,BOOL clear,BOOL invert);
|
||||
CoreExport void DeSelect(ViewExp *vpt,BOOL all);
|
||||
CoreExport void ClearSelection();
|
||||
CoreExport void CloneSelected(int initialCall=TRUE);
|
||||
CoreExport void AbortClone();
|
||||
CoreExport void AcceptClone();
|
||||
|
||||
public:
|
||||
GenModSelectionProcessor(MouseCallBack *mc, BaseObject *o, IObjParam *i)
|
||||
: SelectionProcessor(mc,i) {obj = o; transformGizmoActive=FALSE; }
|
||||
};
|
||||
|
||||
class SubModSelectionProcessor : public GenModSelectionProcessor {
|
||||
private:
|
||||
TransformModBox *tproc;
|
||||
BOOL supportTransformGizmo;
|
||||
|
||||
protected:
|
||||
HCURSOR GetTransformCursor() { return tproc ? tproc->GetTransformCursor() : LoadCursor(NULL, IDC_ARROW); }
|
||||
|
||||
public:
|
||||
SubModSelectionProcessor(TransformModBox *mc, BaseObject *o, IObjParam *i)
|
||||
: GenModSelectionProcessor(mc,o,i) {
|
||||
tproc = mc; supportTransformGizmo=FALSE; }
|
||||
|
||||
// Transform Gizmo Interface
|
||||
BOOL SupportTransformGizmo() { return supportTransformGizmo; }
|
||||
void DeactivateTransformGizmo() {
|
||||
if (transformGizmoActive) {
|
||||
ip->DeactivateTransformGizmo();
|
||||
transformGizmoActive = FALSE;
|
||||
}
|
||||
}
|
||||
// End of Transform Gizmo Interface
|
||||
// Private gizmo stuff
|
||||
void SetSupportTransformGizmo(BOOL b) { supportTransformGizmo = b; }
|
||||
};
|
||||
|
||||
|
||||
class MoveModBox : public TransformModBox {
|
||||
private:
|
||||
MoveTransformer moveTrans;
|
||||
public:
|
||||
MoveModBox(BaseObject *o, IObjParam *i) : moveTrans(i,TRUE), TransformModBox(o,i) {}
|
||||
Transformer& GetTransformer() { return moveTrans; }
|
||||
CoreExport void DoTransform(ViewExp *vpt);
|
||||
HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_MOVE); }
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
class RotateModBox : public TransformModBox {
|
||||
private:
|
||||
RotateTransformer rotTrans;
|
||||
public:
|
||||
RotateModBox(BaseObject *o, IObjParam *i) : rotTrans(i), TransformModBox(o,i) {}
|
||||
Transformer& GetTransformer() { return rotTrans; }
|
||||
CoreExport void DoTransform(ViewExp *vpt);
|
||||
HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_ROTATE); }
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
class ScaleModBox : public TransformModBox {
|
||||
private:
|
||||
ScaleTransformer scaleTrans;
|
||||
public:
|
||||
ScaleModBox(BaseObject *o, IObjParam *i) : scaleTrans(i), TransformModBox(o,i) {}
|
||||
Transformer& GetTransformer() { return scaleTrans; }
|
||||
CoreExport void DoTransform(ViewExp *vpt);
|
||||
CoreExport HCURSOR GetTransformCursor();
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
class SelectModBox : public TransformModBox {
|
||||
private:
|
||||
MoveTransformer moveTrans;
|
||||
public:
|
||||
SelectModBox(BaseObject *o, IObjParam *i) : moveTrans(i), TransformModBox(o,i) {}
|
||||
Transformer& GetTransformer() { return moveTrans; }
|
||||
void DoTransform(ViewExp *vpt) {}
|
||||
HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_SELECT); }
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
|
||||
|
||||
class MoveModBoxCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubModSelectionProcessor mouseProc;
|
||||
MoveModBox transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
MoveModBoxCMode( BaseObject *o, IObjParam *i ) :
|
||||
fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return MOVE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJMOVE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(MOVE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(MOVE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class RotateModBoxCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubModSelectionProcessor mouseProc;
|
||||
RotateModBox transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
RotateModBoxCMode( BaseObject *o, IObjParam *i ) :
|
||||
fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return ROTATE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJROTATE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(ROTATE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(ROTATE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class UScaleModBoxCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubModSelectionProcessor mouseProc;
|
||||
ScaleModBox transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
UScaleModBoxCMode( BaseObject *o, IObjParam *i ) :
|
||||
fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return USCALE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJUSCALE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(USCALE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(USCALE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class NUScaleModBoxCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubModSelectionProcessor mouseProc;
|
||||
ScaleModBox transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
NUScaleModBoxCMode( BaseObject *o, IObjParam *i ) :
|
||||
fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return SCALE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJSCALE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(NUSCALE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(NUSCALE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class SquashModBoxCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubModSelectionProcessor mouseProc;
|
||||
ScaleModBox transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
SquashModBoxCMode( BaseObject *o, IObjParam *i ) :
|
||||
fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return SQUASH_COMMAND; }
|
||||
int ID() { return CID_SUBOBJSQUASH; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(SQUASH_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(SQUASH_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class SelectModBoxCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubModSelectionProcessor mouseProc;
|
||||
SelectModBox transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
SelectModBoxCMode( BaseObject *o, IObjParam *i ) :
|
||||
fgProc(o), transProc(o,i), mouseProc(NULL/*&transProc*/,o,i)
|
||||
{ ip = i; }
|
||||
|
||||
int Class() { return SELECT_COMMAND; }
|
||||
int ID() { return CID_SUBOBJSELECT; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(SELECT_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(SELECT_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class TransformCtrlApparatus : public MouseCallBack {
|
||||
protected:
|
||||
Control *ctrl;
|
||||
IObjParam *ip;
|
||||
Matrix3 ptm;
|
||||
|
||||
public:
|
||||
CoreExport TransformCtrlApparatus(Control *c, IObjParam *i);
|
||||
CoreExport ~TransformCtrlApparatus();
|
||||
|
||||
virtual Transformer& GetTransformer()=0;
|
||||
virtual void DoTransform(ViewExp *vpt)=0;
|
||||
virtual HCURSOR GetTransformCursor()=0;
|
||||
virtual int UndoStringID()=0;
|
||||
|
||||
CoreExport int proc(
|
||||
HWND hwnd,
|
||||
int msg,
|
||||
int point,
|
||||
int flags,
|
||||
IPoint2 m );
|
||||
};
|
||||
|
||||
|
||||
class GenControlSelectionProcessor : public SelectionProcessor {
|
||||
protected:
|
||||
Control *ctrl;
|
||||
BOOL transformGizmoActive;
|
||||
|
||||
CoreExport BOOL HitTest( ViewExp *vpt, IPoint2 *p, int type, int flags );
|
||||
BOOL AnyHits( ViewExp *vpt ) { return vpt->NumSubObjHits(); }
|
||||
CoreExport void Select(ViewExp *vpt,BOOL all,BOOL clear,BOOL invert);
|
||||
CoreExport void DeSelect(ViewExp *vpt,BOOL all);
|
||||
CoreExport void ClearSelection();
|
||||
void CloneSelected(int initialCall=TRUE) {};
|
||||
void AbortClone() {};
|
||||
void AcceptClone() {};
|
||||
|
||||
public:
|
||||
GenControlSelectionProcessor(MouseCallBack *mc,Control *c,IObjParam *i)
|
||||
: SelectionProcessor(mc,i) {ctrl=c; transformGizmoActive=FALSE; }
|
||||
};
|
||||
|
||||
class SubControlSelectionProcessor : public GenControlSelectionProcessor {
|
||||
private:
|
||||
TransformCtrlApparatus *tproc;
|
||||
BOOL supportTransformGizmo;
|
||||
|
||||
protected:
|
||||
HCURSOR GetTransformCursor() { return tproc->GetTransformCursor(); }
|
||||
|
||||
public:
|
||||
SubControlSelectionProcessor(TransformCtrlApparatus *tc,Control *c,IObjParam *i)
|
||||
: GenControlSelectionProcessor(tc,c,i) {
|
||||
tproc = tc; supportTransformGizmo=FALSE; }
|
||||
|
||||
// Transform Gizmo Interface
|
||||
BOOL SupportTransformGizmo() { return supportTransformGizmo; }
|
||||
void DeactivateTransformGizmo() {
|
||||
if (transformGizmoActive) {
|
||||
ip->DeactivateTransformGizmo();
|
||||
transformGizmoActive = FALSE;
|
||||
}
|
||||
}
|
||||
// End of Transform Gizmo Interface
|
||||
// Private gizmo stuff
|
||||
void SetSupportTransformGizmo(BOOL b) { supportTransformGizmo = b; }
|
||||
|
||||
};
|
||||
|
||||
|
||||
class MoveCtrlApparatus : public TransformCtrlApparatus {
|
||||
private:
|
||||
MoveTransformer moveTrans;
|
||||
public:
|
||||
MoveCtrlApparatus(Control *c, IObjParam *i) : moveTrans(i,TRUE), TransformCtrlApparatus(c,i) {}
|
||||
Transformer& GetTransformer() { return moveTrans; }
|
||||
CoreExport void DoTransform(ViewExp *vpt);
|
||||
HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_MOVE); }
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
class RotateCtrlApparatus : public TransformCtrlApparatus {
|
||||
private:
|
||||
RotateTransformer rotTrans;
|
||||
public:
|
||||
RotateCtrlApparatus(Control *c, IObjParam *i) : rotTrans(i), TransformCtrlApparatus(c,i) {}
|
||||
Transformer& GetTransformer() { return rotTrans; }
|
||||
CoreExport void DoTransform(ViewExp *vpt);
|
||||
HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_ROTATE); }
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
class ScaleCtrlApparatus : public TransformCtrlApparatus {
|
||||
private:
|
||||
ScaleTransformer scaleTrans;
|
||||
public:
|
||||
ScaleCtrlApparatus(Control *c, IObjParam *i) : scaleTrans(i), TransformCtrlApparatus(c,i) {}
|
||||
Transformer& GetTransformer() { return scaleTrans; }
|
||||
CoreExport void DoTransform(ViewExp *vpt);
|
||||
CoreExport HCURSOR GetTransformCursor();
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
class SelectCtrlApparatus : public TransformCtrlApparatus {
|
||||
private:
|
||||
MoveTransformer moveTrans;
|
||||
public:
|
||||
SelectCtrlApparatus(Control *c, IObjParam *i) : moveTrans(i), TransformCtrlApparatus(c,i) {}
|
||||
Transformer& GetTransformer() { return moveTrans; }
|
||||
void DoTransform(ViewExp *vpt) {}
|
||||
HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_SELECT); }
|
||||
CoreExport int UndoStringID();
|
||||
};
|
||||
|
||||
|
||||
class MoveCtrlApparatusCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubControlSelectionProcessor mouseProc;
|
||||
MoveCtrlApparatus transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
MoveCtrlApparatusCMode( Control *c, IObjParam *i ) :
|
||||
fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return MOVE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJMOVE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(MOVE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(MOVE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class RotateCtrlApparatusCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubControlSelectionProcessor mouseProc;
|
||||
RotateCtrlApparatus transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
RotateCtrlApparatusCMode( Control *c, IObjParam *i ) :
|
||||
fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return ROTATE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJROTATE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(ROTATE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(ROTATE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class UScaleCtrlApparatusCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubControlSelectionProcessor mouseProc;
|
||||
ScaleCtrlApparatus transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
UScaleCtrlApparatusCMode( Control *c, IObjParam *i ) :
|
||||
fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return USCALE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJUSCALE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(USCALE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(USCALE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class NUScaleCtrlApparatusCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubControlSelectionProcessor mouseProc;
|
||||
ScaleCtrlApparatus transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
NUScaleCtrlApparatusCMode( Control *c, IObjParam *i ) :
|
||||
fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return SCALE_COMMAND; }
|
||||
int ID() { return CID_SUBOBJSCALE; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(NUSCALE_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(NUSCALE_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class SquashCtrlApparatusCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubControlSelectionProcessor mouseProc;
|
||||
ScaleCtrlApparatus transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
SquashCtrlApparatusCMode( Control *c, IObjParam *i ) :
|
||||
fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
|
||||
{ ip = i; mouseProc.SetSupportTransformGizmo(TRUE); }
|
||||
|
||||
int Class() { return SQUASH_COMMAND; }
|
||||
int ID() { return CID_SUBOBJSQUASH; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(SQUASH_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(SQUASH_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
class SelectCtrlApparatusCMode : public CommandMode {
|
||||
|
||||
private:
|
||||
ChangeFGObject fgProc;
|
||||
SubControlSelectionProcessor mouseProc;
|
||||
SelectCtrlApparatus transProc;
|
||||
IObjParam *ip;
|
||||
|
||||
public:
|
||||
SelectCtrlApparatusCMode( Control *c, IObjParam *i ) :
|
||||
fgProc(c), transProc(c,i), mouseProc(NULL,c,i)
|
||||
{ ip = i; }
|
||||
|
||||
int Class() { return SELECT_COMMAND; }
|
||||
int ID() { return CID_SUBOBJSELECT; }
|
||||
MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
|
||||
ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
|
||||
BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
|
||||
void EnterMode() { ip->SetToolButtonState(SELECT_BUTTON,TRUE); }
|
||||
void ExitMode() { ip->SetToolButtonState(SELECT_BUTTON,FALSE); }
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define MOVE_INTERSECTION 1
|
||||
#define MOVE_PROJECTION 2
|
||||
|
||||
float CoreExport GetPerspMouseSpeed();
|
||||
void CoreExport SetPerspMouseSpeed(float speed);
|
||||
|
||||
void CoreExport SetMoveModeType(int moveType);
|
||||
int CoreExport GetMoveModeType();
|
||||
|
||||
void CoreExport SetRotationIncrement(float inc);
|
||||
float CoreExport GetRotationIncrement();
|
||||
|
||||
#endif __OBJMODE__
|
||||
|
||||
|
||||
Reference in New Issue
Block a user