source: golgotha/src/max_plugin/sdk_inc/objmode.h @ 80

Last change on this file since 80 was 80, checked in by Sam Hocevar, 11 years ago
  • Adding the Golgotha source code. Not sure what's going to be interesting in there, but since it's all public domain, there's certainly stuff to pick up.
  • Property svn:keywords set to Id
File size: 19.6 KB
Line 
1/**********************************************************************
2 *<
3        FILE: objmode.h
4
5        DESCRIPTION: Provides some standard modes for subobject manipulation
6
7        CREATED BY: Rolf Berteig
8
9        HISTORY: Created 3-14-95
10
11 *>     Copyright (c) 1994, All Rights Reserved.
12 **********************************************************************/
13
14#ifndef __OBJMODE__
15#define __OBJMODE__
16
17
18class Transformer {
19        protected:
20                Matrix3 tmAxis;
21                IObjParam *ip;
22                IPoint2 mBase, mCur;
23               
24        public:
25                Transformer(IObjParam *i) { ip = i; }
26                CoreExport virtual void BeginDrag( IPoint2& m, Matrix3& tmAxis );
27                CoreExport virtual void EndDrag( IPoint2& m );
28                CoreExport void SetMouse( IPoint2& m );
29                void Accumulate() {mBase=mCur;}
30                Matrix3& Axis() { return tmAxis; }
31                IPoint2 Base() { return mBase; }
32        };
33
34class MoveTransformer : public Transformer {
35                Point3 lastDelta;
36                Point3 absSnapOrigin;
37        public:
38                CoreExport void BeginDrag( IPoint2& m, Matrix3& tmAxis );
39                CoreExport Point3 Eval(ViewExp *vpt,BOOL status=TRUE);
40                MoveTransformer(IObjParam *i) : Transformer(i) {lastDelta = Point3(0,0,0);}
41                };     
42
43class RotateTransformer : public Transformer {
44                Quat qPrev;
45        public:
46                CoreExport AngAxis Eval(ViewExp *vpt,BOOL status=TRUE);
47                CoreExport void BeginDrag( IPoint2& m, Matrix3& tmAxis );
48                RotateTransformer(IObjParam *i) : Transformer(i) {qPrev.Identity();}
49                };     
50
51class ScaleTransformer : public Transformer {
52        public:
53                CoreExport Point3 Eval(ViewExp *vpt,BOOL status=TRUE);
54                ScaleTransformer(IObjParam *i) : Transformer(i) {}
55                };     
56
57
58class ChangeFGObject : public ChangeForegroundCallback {       
59                ReferenceTarget *obj;
60                BOOL valid;
61        public:         
62                ChangeFGObject() { obj = NULL; valid = TRUE; }
63                ChangeFGObject(ReferenceTarget *o) { obj = o; valid = TRUE; }
64                void SetObj(ReferenceTarget *o ) { obj = o; }
65               
66                BOOL IsValid() { return valid; }
67                void Invalidate() { valid = FALSE; }
68                void Validate() { valid = TRUE; }
69                void callback(TimeValue t,IScene *scene)
70                        {
71                        obj->FlagDependents(t);                 
72                        }
73        };
74
75
76
77class SelectionProcessor : public MouseCallBack {
78        private:
79                MouseCallBack *mcallback;
80                BOOL brokenThresh, hitSel, drag, toggle, cloning, clear, invert;
81                IPoint2 offset;
82                IPoint2 om,lm;
83
84        protected:
85                IObjParam *ip;
86
87                virtual BOOL HitTest( ViewExp *vpt, IPoint2 *p, int type, int flags )=0;
88                virtual BOOL AnyHits( ViewExp *vpt )=0;
89                virtual HCURSOR GetTransformCursor()=0;
90                virtual void Select(ViewExp *vpt,BOOL all,BOOL clear,BOOL invert)=0;
91                virtual void DeSelect(ViewExp *vpt,BOOL all)=0;
92                virtual void ClearSelection()=0;
93                virtual void CloneSelected(int initialCall=TRUE)=0;
94                virtual void AbortClone()=0;
95                virtual void AcceptClone()=0;
96                virtual void SelectChildren(ViewExp *vpt) {}
97
98        public:
99                SelectionProcessor(MouseCallBack *m,IObjParam *i)
100                        { mcallback = m; ip = i; offset = IPoint2(0,0); }
101               
102                CoreExport int proc(
103                        HWND hwnd,
104                        int msg,
105                        int point,
106                        int flags,
107                        IPoint2 m );
108
109                CoreExport void pan(IPoint2 d);
110        };
111
112
113class TransformModBox : public MouseCallBack {
114        protected:
115                BaseObject *obj;
116                IObjParam *ip;         
117                Matrix3 ptm;
118
119        public:
120                CoreExport TransformModBox(BaseObject *o, IObjParam *i);
121                CoreExport ~TransformModBox();
122
123                // These are called before and after the DoTransform operations
124                CoreExport virtual void PreTransform();
125                CoreExport virtual void PreTransformHolding();
126                CoreExport virtual void PostTransformHolding();
127                CoreExport virtual void PostTransform();
128                CoreExport virtual void CancelTransform();
129
130                virtual Transformer& GetTransformer()=0;
131                virtual void DoTransform(ViewExp *vpt)=0;
132                virtual HCURSOR GetTransformCursor()=0;
133                virtual int UndoStringID()=0;
134
135                CoreExport int proc(
136                        HWND hwnd,
137                        int msg,
138                        int point,
139                        int flags,
140                        IPoint2 m );
141        };
142
143
144class GenModSelectionProcessor : public SelectionProcessor {
145        protected:
146                BaseObject *obj;
147
148                CoreExport BOOL HitTest( ViewExp *vpt, IPoint2 *p, int type, int flags );
149                BOOL AnyHits( ViewExp *vpt ) { return vpt->NumSubObjHits(); }           
150                CoreExport void Select(ViewExp *vpt,BOOL all,BOOL clear,BOOL invert);
151                CoreExport void DeSelect(ViewExp *vpt,BOOL all);
152                CoreExport void ClearSelection();
153                CoreExport void CloneSelected(int initialCall=TRUE);
154                CoreExport void AbortClone();
155                CoreExport void AcceptClone();
156
157        public:
158                GenModSelectionProcessor(MouseCallBack *mc, BaseObject *o, IObjParam *i)
159                        : SelectionProcessor(mc,i) {obj = o;}
160        };
161
162class SubModSelectionProcessor : public GenModSelectionProcessor {
163        private:               
164                TransformModBox *tproc;
165
166        protected:
167                HCURSOR GetTransformCursor() { return tproc ? tproc->GetTransformCursor() : LoadCursor(NULL, IDC_ARROW); }
168               
169        public:
170                SubModSelectionProcessor(TransformModBox *mc, BaseObject *o, IObjParam *i)
171                        : GenModSelectionProcessor(mc,o,i) { tproc = mc; }
172        };
173
174
175class MoveModBox : public TransformModBox {
176        private:
177                MoveTransformer moveTrans;
178        public:
179                MoveModBox(BaseObject *o, IObjParam *i) : moveTrans(i), TransformModBox(o,i) {}
180                Transformer& GetTransformer() { return moveTrans; }
181                CoreExport void DoTransform(ViewExp *vpt);
182                HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_MOVE); }
183                CoreExport int UndoStringID();
184                };
185class RotateModBox : public TransformModBox {
186        private:
187                RotateTransformer rotTrans;
188        public:
189                RotateModBox(BaseObject *o, IObjParam *i) : rotTrans(i), TransformModBox(o,i) {}
190                Transformer& GetTransformer() { return rotTrans; }
191                CoreExport void DoTransform(ViewExp *vpt);
192                HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_ROTATE); }
193                CoreExport int UndoStringID();
194                };
195class ScaleModBox : public TransformModBox {
196        private:
197                ScaleTransformer scaleTrans;
198        public:
199                ScaleModBox(BaseObject *o, IObjParam *i) : scaleTrans(i), TransformModBox(o,i) {}
200                Transformer& GetTransformer() { return scaleTrans; }
201                CoreExport void DoTransform(ViewExp *vpt);
202                CoreExport HCURSOR GetTransformCursor();
203                CoreExport int UndoStringID();
204                };
205class SelectModBox : public TransformModBox {
206        private:
207                MoveTransformer moveTrans;
208        public:
209                SelectModBox(BaseObject *o, IObjParam *i) : moveTrans(i), TransformModBox(o,i) {}
210                Transformer& GetTransformer() { return moveTrans; }
211                void DoTransform(ViewExp *vpt) {}
212                HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_SELECT); }
213                CoreExport int UndoStringID();
214                };
215
216
217class MoveModBoxCMode : public CommandMode {
218       
219        private:
220                ChangeFGObject fgProc;
221                SubModSelectionProcessor mouseProc;
222                MoveModBox transProc;
223                IObjParam *ip;
224
225        public:
226                MoveModBoxCMode( BaseObject *o, IObjParam *i ) :
227                        fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
228                                { ip = i; }
229               
230                int Class() { return MOVE_COMMAND; }
231                int ID() { return CID_SUBOBJMOVE; }
232                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
233                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
234                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
235                void EnterMode() { ip->SetToolButtonState(MOVE_BUTTON,TRUE); }
236                void ExitMode() { ip->SetToolButtonState(MOVE_BUTTON,FALSE); }
237        };
238
239class RotateModBoxCMode : public CommandMode {
240       
241        private:
242                ChangeFGObject fgProc;
243                SubModSelectionProcessor mouseProc;
244                RotateModBox transProc;
245                IObjParam *ip;
246
247        public:
248                RotateModBoxCMode( BaseObject *o, IObjParam *i ) :
249                        fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
250                                { ip = i; }
251               
252                int Class() { return ROTATE_COMMAND; }
253                int ID() { return CID_SUBOBJROTATE; }
254                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
255                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
256                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
257                void EnterMode() { ip->SetToolButtonState(ROTATE_BUTTON,TRUE); }
258                void ExitMode() { ip->SetToolButtonState(ROTATE_BUTTON,FALSE); }
259        };
260
261class UScaleModBoxCMode : public CommandMode {
262       
263        private:
264                ChangeFGObject fgProc;
265                SubModSelectionProcessor mouseProc;
266                ScaleModBox transProc;
267                IObjParam *ip;
268
269        public:
270                UScaleModBoxCMode( BaseObject *o, IObjParam *i ) :
271                        fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
272                                { ip = i; }
273               
274                int Class() { return USCALE_COMMAND; }
275                int ID() { return CID_SUBOBJUSCALE; }
276                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
277                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
278                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
279                void EnterMode() { ip->SetToolButtonState(USCALE_BUTTON,TRUE); }
280                void ExitMode() { ip->SetToolButtonState(USCALE_BUTTON,FALSE); }
281        };
282
283class NUScaleModBoxCMode : public CommandMode {
284       
285        private:
286                ChangeFGObject fgProc;
287                SubModSelectionProcessor mouseProc;
288                ScaleModBox transProc;
289                IObjParam *ip;
290
291        public:
292                NUScaleModBoxCMode( BaseObject *o, IObjParam *i ) :
293                        fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
294                                { ip = i; }
295               
296                int Class() { return SCALE_COMMAND; }
297                int ID() { return CID_SUBOBJSCALE; }
298                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
299                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
300                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
301                void EnterMode() { ip->SetToolButtonState(NUSCALE_BUTTON,TRUE); }
302                void ExitMode() { ip->SetToolButtonState(NUSCALE_BUTTON,FALSE); }
303        };
304
305class SquashModBoxCMode : public CommandMode {
306       
307        private:
308                ChangeFGObject fgProc;
309                SubModSelectionProcessor mouseProc;
310                ScaleModBox transProc;
311                IObjParam *ip;
312
313        public:
314                SquashModBoxCMode( BaseObject *o, IObjParam *i ) :
315                        fgProc(o), transProc(o,i), mouseProc(&transProc,o,i)
316                                { ip = i; }
317               
318                int Class() { return SQUASH_COMMAND; }
319                int ID() { return CID_SUBOBJSQUASH; }
320                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
321                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
322                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
323                void EnterMode() { ip->SetToolButtonState(SQUASH_BUTTON,TRUE); }
324                void ExitMode() { ip->SetToolButtonState(SQUASH_BUTTON,FALSE); }
325        };
326
327class SelectModBoxCMode : public CommandMode {
328       
329        private:
330                ChangeFGObject fgProc;
331                SubModSelectionProcessor mouseProc;
332                SelectModBox transProc;
333                IObjParam *ip;
334
335        public:
336                SelectModBoxCMode( BaseObject *o, IObjParam *i ) :
337                        fgProc(o), transProc(o,i), mouseProc(NULL/*&transProc*/,o,i)
338                                { ip = i; }
339               
340                int Class() { return SELECT_COMMAND; }
341                int ID() { return CID_SUBOBJSELECT; }
342                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
343                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
344                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
345                void EnterMode() { ip->SetToolButtonState(SELECT_BUTTON,TRUE); }
346                void ExitMode() { ip->SetToolButtonState(SELECT_BUTTON,FALSE); }
347        };
348
349
350
351///////////////////////////////////////////////////////////////////////////
352
353class TransformCtrlApparatus : public MouseCallBack {
354        protected:
355                Control *ctrl;
356                IObjParam *ip;         
357                Matrix3 ptm;
358
359        public:
360                CoreExport TransformCtrlApparatus(Control *c, IObjParam *i);
361                CoreExport ~TransformCtrlApparatus();
362
363                virtual Transformer& GetTransformer()=0;
364                virtual void DoTransform(ViewExp *vpt)=0;
365                virtual HCURSOR GetTransformCursor()=0;
366                virtual int UndoStringID()=0;
367
368                CoreExport int proc(
369                        HWND hwnd,
370                        int msg,
371                        int point,
372                        int flags,
373                        IPoint2 m );
374        };
375
376
377class GenControlSelectionProcessor : public SelectionProcessor {
378        protected:
379                Control *ctrl;
380
381                CoreExport BOOL HitTest( ViewExp *vpt, IPoint2 *p, int type, int flags );
382                BOOL AnyHits( ViewExp *vpt ) { return vpt->NumSubObjHits(); }           
383                CoreExport void Select(ViewExp *vpt,BOOL all,BOOL clear,BOOL invert);
384                CoreExport void DeSelect(ViewExp *vpt,BOOL all);
385                CoreExport void ClearSelection();
386                void CloneSelected(int initialCall=TRUE) {};
387                void AbortClone() {};
388                void AcceptClone() {};
389
390        public:
391                GenControlSelectionProcessor(MouseCallBack *mc,Control *c,IObjParam *i)
392                        : SelectionProcessor(mc,i) {ctrl=c;}
393        };
394
395class SubControlSelectionProcessor : public GenControlSelectionProcessor {
396        private:               
397                TransformCtrlApparatus *tproc;
398
399        protected:
400                HCURSOR GetTransformCursor() { return tproc->GetTransformCursor(); }
401               
402        public:
403                SubControlSelectionProcessor(TransformCtrlApparatus *tc,Control *c,IObjParam *i)
404                        : GenControlSelectionProcessor(tc,c,i) { tproc = tc; }
405        };
406
407
408class MoveCtrlApparatus : public TransformCtrlApparatus {
409        private:
410                MoveTransformer moveTrans;
411        public:
412                MoveCtrlApparatus(Control *c, IObjParam *i) : moveTrans(i), TransformCtrlApparatus(c,i) {}
413                Transformer& GetTransformer() { return moveTrans; }
414                CoreExport void DoTransform(ViewExp *vpt);
415                HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_MOVE); }
416                CoreExport int UndoStringID();
417                };
418class RotateCtrlApparatus : public TransformCtrlApparatus {
419        private:
420                RotateTransformer rotTrans;
421        public:
422                RotateCtrlApparatus(Control *c, IObjParam *i) : rotTrans(i), TransformCtrlApparatus(c,i) {}
423                Transformer& GetTransformer() { return rotTrans; }
424                CoreExport void DoTransform(ViewExp *vpt);
425                HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_ROTATE); }
426                CoreExport int UndoStringID();
427                };
428class ScaleCtrlApparatus : public TransformCtrlApparatus {
429        private:
430                ScaleTransformer scaleTrans;
431        public:
432                ScaleCtrlApparatus(Control *c, IObjParam *i) : scaleTrans(i), TransformCtrlApparatus(c,i) {}
433                Transformer& GetTransformer() { return scaleTrans; }
434                CoreExport void DoTransform(ViewExp *vpt);
435                CoreExport HCURSOR GetTransformCursor();
436                CoreExport int UndoStringID();
437                };
438class SelectCtrlApparatus : public TransformCtrlApparatus {
439        private:
440                MoveTransformer moveTrans;
441        public:
442                SelectCtrlApparatus(Control *c, IObjParam *i) : moveTrans(i), TransformCtrlApparatus(c,i) {}
443                Transformer& GetTransformer() { return moveTrans; }
444                void DoTransform(ViewExp *vpt) {}
445                HCURSOR GetTransformCursor() { return ip->GetSysCursor(SYSCUR_SELECT); }
446                CoreExport int UndoStringID();
447                };
448
449
450class MoveCtrlApparatusCMode : public CommandMode {
451       
452        private:
453                ChangeFGObject fgProc;
454                SubControlSelectionProcessor mouseProc;
455                MoveCtrlApparatus transProc;
456                IObjParam *ip;
457
458        public:
459                MoveCtrlApparatusCMode( Control *c, IObjParam *i ) :
460                        fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
461                                { ip = i; }
462               
463                int Class() { return MOVE_COMMAND; }
464                int ID() { return CID_SUBOBJMOVE; }
465                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
466                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
467                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
468                void EnterMode() { ip->SetToolButtonState(MOVE_BUTTON,TRUE); }
469                void ExitMode() { ip->SetToolButtonState(MOVE_BUTTON,FALSE); }
470        };
471
472class RotateCtrlApparatusCMode : public CommandMode {
473       
474        private:
475                ChangeFGObject fgProc;
476                SubControlSelectionProcessor mouseProc;
477                RotateCtrlApparatus transProc;
478                IObjParam *ip;
479
480        public:
481                RotateCtrlApparatusCMode( Control *c, IObjParam *i ) :
482                        fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
483                                { ip = i; }
484               
485                int Class() { return ROTATE_COMMAND; }
486                int ID() { return CID_SUBOBJROTATE; }
487                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
488                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
489                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
490                void EnterMode() { ip->SetToolButtonState(ROTATE_BUTTON,TRUE); }
491                void ExitMode() { ip->SetToolButtonState(ROTATE_BUTTON,FALSE); }
492        };
493
494class UScaleCtrlApparatusCMode : public CommandMode {
495       
496        private:
497                ChangeFGObject fgProc;
498                SubControlSelectionProcessor mouseProc;
499                ScaleCtrlApparatus transProc;
500                IObjParam *ip;
501
502        public:
503                UScaleCtrlApparatusCMode( Control *c, IObjParam *i ) :
504                        fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
505                                { ip = i; }
506               
507                int Class() { return USCALE_COMMAND; }
508                int ID() { return CID_SUBOBJUSCALE; }
509                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
510                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
511                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
512                void EnterMode() { ip->SetToolButtonState(USCALE_BUTTON,TRUE); }
513                void ExitMode() { ip->SetToolButtonState(USCALE_BUTTON,FALSE); }
514        };
515
516class NUScaleCtrlApparatusCMode : public CommandMode {
517       
518        private:
519                ChangeFGObject fgProc;
520                SubControlSelectionProcessor mouseProc;
521                ScaleCtrlApparatus transProc;
522                IObjParam *ip;
523
524        public:
525                NUScaleCtrlApparatusCMode( Control *c, IObjParam *i ) :
526                        fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
527                                { ip = i; }
528               
529                int Class() { return SCALE_COMMAND; }
530                int ID() { return CID_SUBOBJSCALE; }
531                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
532                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
533                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
534                void EnterMode() { ip->SetToolButtonState(NUSCALE_BUTTON,TRUE); }
535                void ExitMode() { ip->SetToolButtonState(NUSCALE_BUTTON,FALSE); }
536        };
537
538class SquashCtrlApparatusCMode : public CommandMode {
539       
540        private:
541                ChangeFGObject fgProc;
542                SubControlSelectionProcessor mouseProc;
543                ScaleCtrlApparatus transProc;
544                IObjParam *ip;
545
546        public:
547                SquashCtrlApparatusCMode( Control *c, IObjParam *i ) :
548                        fgProc(c), transProc(c,i), mouseProc(&transProc,c,i)
549                                { ip = i; }
550               
551                int Class() { return SQUASH_COMMAND; }
552                int ID() { return CID_SUBOBJSQUASH; }
553                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
554                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
555                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
556                void EnterMode() { ip->SetToolButtonState(SQUASH_BUTTON,TRUE); }
557                void ExitMode() { ip->SetToolButtonState(SQUASH_BUTTON,FALSE); }
558        };
559
560class SelectCtrlApparatusCMode : public CommandMode {
561       
562        private:
563                ChangeFGObject fgProc;
564                SubControlSelectionProcessor mouseProc;
565                SelectCtrlApparatus transProc;
566                IObjParam *ip;
567
568        public:
569                SelectCtrlApparatusCMode( Control *c, IObjParam *i ) :
570                        fgProc(c), transProc(c,i), mouseProc(NULL,c,i)
571                                { ip = i; }
572               
573                int Class() { return SELECT_COMMAND; }
574                int ID() { return CID_SUBOBJSELECT; }
575                MouseCallBack *MouseProc(int *numPoints) { *numPoints=2; return &mouseProc; }
576                ChangeForegroundCallback *ChangeFGProc() { return &fgProc; }
577                BOOL ChangeFG( CommandMode *oldMode ) { return oldMode->ChangeFGProc() != &fgProc; }
578                void EnterMode() { ip->SetToolButtonState(SELECT_BUTTON,TRUE); }
579                void ExitMode() { ip->SetToolButtonState(SELECT_BUTTON,FALSE); }
580        };
581
582
583
584#define MOVE_INTERSECTION       1
585#define MOVE_PROJECTION         2
586
587float CoreExport GetPerspMouseSpeed();
588void CoreExport SetPerspMouseSpeed(float speed);
589
590void CoreExport SetMoveModeType(int moveType);
591int CoreExport GetMoveModeType();
592
593
594#endif __OBJMODE__
595
596
Note: See TracBrowser for help on using the repository browser.