00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SODATASENSOR_H
00021 #define COIN_SODATASENSOR_H
00022
00023 #include <Inventor/sensors/SoDelayQueueSensor.h>
00024 #include <stdlib.h>
00025
00026 class SoNode;
00027 class SoField;
00028 class SoPath;
00029 class SoNotList;
00030
00031
00032 class COIN_DLL_API SoDataSensor : public SoDelayQueueSensor {
00033 typedef SoDelayQueueSensor inherited;
00034
00035 public:
00036 SoDataSensor(void);
00037 SoDataSensor(SoSensorCB * func, void * data);
00038 virtual ~SoDataSensor(void);
00039
00040 void setDeleteCallback(SoSensorCB * function, void * data = NULL);
00041 SoNode * getTriggerNode(void) const;
00042 SoField * getTriggerField(void) const;
00043 SoPath * getTriggerPath(void) const;
00044 void setTriggerPathFlag(SbBool flag);
00045 SbBool getTriggerPathFlag(void) const;
00046
00047 virtual void trigger(void);
00048 virtual void notify(SoNotList * l);
00049 virtual void dyingReference(void) = 0;
00050
00051 protected:
00052 void invokeDeleteCallback(void);
00053
00054 private:
00055 SoSensorCB * cbfunc;
00056 void * cbdata;
00057 SbBool findpath;
00058 SoField * triggerfield;
00059 SoNode * triggernode;
00060 SoPath * triggerpath;
00061 };
00062
00063 #endif // !COIN_SODATASENSOR_H