📄 objmode.h
字号:
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__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -