#include <Inventor/sensors/SoTimerQueueSensor.h>
Inheritance diagram for SoTimerQueueSensor:
Public Member Functions | |
SoTimerQueueSensor (void) | |
SoTimerQueueSensor (SoSensorCB *func, void *data) | |
virtual | ~SoTimerQueueSensor (void) |
const SbTime & | getTriggerTime (void) const |
virtual void | schedule (void) |
virtual void | unschedule (void) |
virtual SbBool | isScheduled (void) const |
virtual void | trigger (void) |
Protected Member Functions | |
void | setTriggerTime (const SbTime &time) |
Protected Attributes | |
SbBool | scheduled |
Timer sensors triggers upon specific points in time.
This class is an abstract superclass which collects the common interface of the various non-abstract timer sensor classes. See the documentation of the subclasses for information on what ways there are to specify base times, intervals, alarm-style single triggering, repeated triggers, etc.
Note that Coin timer sensors should in no way be considered "hard real-time". That is, you can not expect a timer to always trigger at the exact moment it was set up for. Delays in triggering could be due to other activities in Coin, a task suspended, or heavy load from other applications on the system. These situations could all cause the processing of sensor queues (from SoQt / SoWin / SoXt / whatever) to be slightly delayed, thereby causing delays in timer sensor triggering.
On modern systems, a timer will usually trigger within a few milliseconds of it's designated time, though.
If a timer sensor can not trigger at the exact moment it has been scheduled, it will be triggered at the first opportunity after the scheduled time has passed.
Here's a simple usage example. It's a stand-alone example, which only demonstrates how to set up a repeating timer sensor with a callback:
#include <Inventor/Xt/SoXt.h> #include <Inventor/sensors/SoTimerSensor.h> #include <stdio.h> static void timeSensorCallback(void * data, SoSensor * sensor) { SbTime time = SbTime::getTimeOfDay(); SbString string = time.format("%S.%i"); (void)printf("%s\n", string.getString()); } int main(int argc, char ** argv) { SoXt::init("test"); SoTimerSensor * timeSensor = new SoTimerSensor; timeSensor->setFunction(timeSensorCallback); timeSensor->setBaseTime(SbTime::getTimeOfDay()); timeSensor->setInterval(1.0f); timeSensor->schedule(); SoXt::mainLoop(); return 0; }
|
Default constructor. |
|
Constructor taking as arguments the sensor callback function and the userdata which will be passed the callback.
|
|
Destructor. |
|
Returns the time at which the sensor will trigger.
|
|
Put the sensor in the global timer queue.
Implements SoSensor. Reimplemented in SoAlarmSensor, and SoTimerSensor. |
|
Remove sensor from the timer queue, without triggering it first.
Implements SoSensor. Reimplemented in SoTimerSensor. |
|
Check if this sensor is scheduled for triggering.
Implements SoSensor. |
|
Trigger the sensor's callback function. Reimplemented from SoSensor. |
|
Set absolute time at which to trigger sensor.
|
|
|