00001 #ifndef COIN_SOSENSOR_H
00002 #define COIN_SOSENSOR_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/SbBasic.h>
00028
00029 class SoSensor;
00030
00031 typedef void SoSensorCB(void * data, SoSensor * sensor);
00032
00033 class COIN_DLL_API SoSensor {
00034 public:
00035 SoSensor(void);
00036 SoSensor(SoSensorCB * func, void * data);
00037 virtual ~SoSensor(void);
00038
00039 void setFunction(SoSensorCB * callbackfunction);
00040 SoSensorCB * getFunction(void) const;
00041 void setData(void * callbackdata);
00042 void * getData(void) const;
00043
00044 virtual void schedule(void) = 0;
00045 virtual void unschedule(void) = 0;
00046 virtual SbBool isScheduled(void) const = 0;
00047
00048 virtual void trigger(void);
00049
00050 virtual SbBool isBefore(const SoSensor * s) const = 0;
00051 void setNextInQueue(SoSensor * next);
00052 SoSensor * getNextInQueue(void) const;
00053
00054 static void initClass(void);
00055
00056 protected:
00057 SoSensorCB * func;
00058 void * funcData;
00059 };
00060
00061 #endif // !COIN_SOSENSOR_H