00001 #ifndef IG_OPEN_INVENTOR_IG_SO_PLANE_MANIP_H
00002 # define IG_OPEN_INVENTOR_IG_SO_PLANE_MANIP_H
00003
00004
00005
00006 # include "Iguana/Inventor/interface/config.h"
00007 # include <Inventor/fields/SoSFPlane.h>
00008 # include <Inventor/fields/SoSFBool.h>
00009 # include <Inventor/nodes/SoGroup.h>
00010
00011
00012
00013
00014
00015 class SoJackDragger;
00016 class SoDragger;
00017 class SoSensor;
00018 class SoFieldSensor;
00019
00020
00021
00022
00023
00024 # ifdef WIN32
00025 # include <SoWinLeaveScope.h>
00026 # endif
00027
00028 class IG_OPEN_INVENTOR_API IgSoPlaneManip : public SoGroup
00029 {
00030 SO_NODE_HEADER (IgSoPlaneManip);
00031
00032 public:
00033 SoSFPlane plane;
00034 SoSFBool manip;
00035
00036 IgSoPlaneManip (void);
00037
00038 static void initClass (void);
00039 virtual void write (SoWriteAction *action);
00040
00041 SoDragger * getDragger(void);
00042 void getMotionMatrix (SbMatrix &matrix,
00043 bool scaling =true);
00044
00045 protected:
00046 ~IgSoPlaneManip (void);
00047
00048 private:
00049 bool hasDragger (void);
00050 static void jackChanged (void *me, SoDragger *dragger);
00051 static void manipChanged (void *me, SoSensor *sensor);
00052 static void planeChanged (void *me, SoSensor *sensor);
00053
00054 SoJackDragger *m_manip;
00055 SoFieldSensor *m_manipSensor;
00056 SoFieldSensor *m_planeSensor;
00057 };
00058 #ifdef WIN32
00059 #include <SoWinEnterScope.h>
00060 #endif // WIN32
00061
00062
00063
00064
00065 #endif // IG_OPEN_INVENTOR_IG_SO_PLANE_MANIP_H