00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef COIN_SOSENSOR_H
00021 #define COIN_SOSENSOR_H
00022
00023 #include <Inventor/SbBasic.h>
00024
00025 class SoSensor;
00026
00027 typedef void SoSensorCB(void * data, SoSensor * sensor);
00028
00029 class COIN_DLL_API SoSensor {
00030 public:
00031 SoSensor(void);
00032 SoSensor(SoSensorCB * func, void * data);
00033 virtual ~SoSensor(void);
00034
00035 void setFunction(SoSensorCB * callbackfunction);
00036 SoSensorCB * getFunction(void) const;
00037 void setData(void * callbackdata);
00038 void * getData(void) const;
00039
00040 virtual void schedule(void) = 0;
00041 virtual void unschedule(void) = 0;
00042 virtual SbBool isScheduled(void) const = 0;
00043
00044 virtual void trigger(void);
00045
00046 virtual SbBool isBefore(const SoSensor * s) const = 0;
00047 void setNextInQueue(SoSensor * next);
00048 SoSensor * getNextInQueue(void) const;
00049
00050 static void initClass(void);
00051
00052 protected:
00053 SoSensorCB * func;
00054 void * funcData;
00055 };
00056
00057 #endif // !COIN_SOSENSOR_H