00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SOTRANSLATE2DRAGGER_H
00021 #define COIN_SOTRANSLATE2DRAGGER_H
00022
00023 #include <Inventor/draggers/SoDragger.h>
00024 #include <Inventor/fields/SoSFVec3f.h>
00025
00026 class SoSensor;
00027 class SoFieldSensor;
00028 class SbPlaneProjector;
00029
00030
00031 class COIN_DLL_API SoTranslate2Dragger : public SoDragger {
00032 typedef SoDragger inherited;
00033
00034 SO_KIT_HEADER(SoTranslate2Dragger);
00035
00036 SO_KIT_CATALOG_ENTRY_HEADER(axisFeedbackSwitch);
00037 SO_KIT_CATALOG_ENTRY_HEADER(feedback);
00038 SO_KIT_CATALOG_ENTRY_HEADER(feedbackActive);
00039 SO_KIT_CATALOG_ENTRY_HEADER(feedbackSwitch);
00040 SO_KIT_CATALOG_ENTRY_HEADER(translator);
00041 SO_KIT_CATALOG_ENTRY_HEADER(translatorActive);
00042 SO_KIT_CATALOG_ENTRY_HEADER(translatorSwitch);
00043 SO_KIT_CATALOG_ENTRY_HEADER(xAxisFeedback);
00044 SO_KIT_CATALOG_ENTRY_HEADER(yAxisFeedback);
00045
00046
00047 public:
00048 static void initClass(void);
00049 SoTranslate2Dragger(void);
00050
00051 SoSFVec3f translation;
00052
00053 protected:
00054 ~SoTranslate2Dragger();
00055 virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways = FALSE);
00056
00057 static void startCB(void * f, SoDragger * d);
00058 static void motionCB(void * f, SoDragger * d);
00059 static void finishCB(void * f, SoDragger * d);
00060 static void metaKeyChangeCB(void * f, SoDragger * d);
00061 static void fieldSensorCB(void * f, SoSensor * s);
00062 static void valueChangedCB(void * f, SoDragger * d);
00063
00064 void dragStart(void);
00065 void drag(void);
00066 void dragFinish(void);
00067
00068 SoFieldSensor * fieldSensor;
00069 SbVec3f worldRestartPt;
00070 SbPlaneProjector * planeProj;
00071
00072 private:
00073 int constraintState;
00074 };
00075
00076 #endif // !COIN_SOTRANSLATE2DRAGGER_H