00001 #ifndef COIN_SOSPOTLIGHTDRAGGER_H
00002 #define COIN_SOSPOTLIGHTDRAGGER_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <Inventor/draggers/SoDragger.h>
00028 #include <Inventor/fields/SoSFRotation.h>
00029 #include <Inventor/fields/SoSFVec3f.h>
00030 #include <Inventor/fields/SoSFFloat.h>
00031
00032 class SoSensor;
00033 class SoFieldSensor;
00034 class SbPlaneProjector;
00035
00036
00037 class COIN_DLL_API SoSpotLightDragger : public SoDragger {
00038 typedef SoDragger inherited;
00039
00040 SO_KIT_HEADER(SoSpotLightDragger);
00041
00042 SO_KIT_CATALOG_ENTRY_HEADER(beam);
00043 SO_KIT_CATALOG_ENTRY_HEADER(beamActive);
00044 SO_KIT_CATALOG_ENTRY_HEADER(beamPlacement);
00045 SO_KIT_CATALOG_ENTRY_HEADER(beamScale);
00046 SO_KIT_CATALOG_ENTRY_HEADER(beamSep);
00047 SO_KIT_CATALOG_ENTRY_HEADER(beamSwitch);
00048 SO_KIT_CATALOG_ENTRY_HEADER(material);
00049 SO_KIT_CATALOG_ENTRY_HEADER(rotator);
00050 SO_KIT_CATALOG_ENTRY_HEADER(translator);
00051 SO_KIT_CATALOG_ENTRY_HEADER(translatorRotInv);
00052 SO_KIT_CATALOG_ENTRY_HEADER(translatorSep);
00053
00054
00055 public:
00056 static void initClass(void);
00057 SoSpotLightDragger(void);
00058
00059 SoSFRotation rotation;
00060 SoSFVec3f translation;
00061 SoSFFloat angle;
00062
00063 protected:
00064 ~SoSpotLightDragger();
00065 virtual SbBool setUpConnections(SbBool onoff, SbBool doitalways = FALSE);
00066 virtual void setDefaultOnNonWritingFields(void);
00067
00068 static void startCB(void * f, SoDragger * d);
00069 static void motionCB(void * f, SoDragger * d);
00070 static void doneCB(void * f, SoDragger * d);
00071 static void fieldSensorCB(void * f, SoSensor * s);
00072 static void valueChangedCB(void * f, SoDragger * d);
00073
00074 void dragStart(void);
00075 void drag(void);
00076 void dragFinish(void);
00077
00078 void setBeamScaleFromAngle(float beamangle);
00079
00080 SoFieldSensor * rotFieldSensor;
00081 SoFieldSensor * translFieldSensor;
00082 SoFieldSensor * angleFieldSensor;
00083 SbPlaneProjector * planeProj;
00084 };
00085
00086 #endif // !COIN_SOSPOTLIGHTDRAGGER_H