Provided by: inventor-doc_2.1.5-10-18_all bug

NAME

       SoDataSensor — abstract base class for sensors attached to parts of a scene

INHERITS FROM

       SoSensor > SoDelayQueueSensor > SoDataSensor

SYNOPSIS

       #include <Inventor/sensors/SoDataSensor.h>

          Methods from class SoDataSensor:

     void                setDeleteCallback(SoSensorCB *function, void *data)
     SoNode *            getTriggerNode() const
     SoField *           getTriggerField() const
     SoPath *            getTriggerPath() const
     void                setTriggerPathFlag(SbBool flag)
     SbBool              getTriggerPathFlag() const

          Methods from class SoDelayQueueSensor:

     void                setPriority(uint32_t pri)
     uint32_t            getPriority()
     static uint32_t     getDefaultPriority()
     virtual void        schedule()
     virtual void        unschedule()
     virtual SbBool      isScheduled()

          Methods from class SoSensor:

     void                setFunction(SoSensorCB *callbackFunction)
     SoSensorCB *        getFunction() const
     void                setData(void *callbackData)
     void *              getData() const

DESCRIPTION

       Data  sensors  detect changes to scene graph objects (paths, nodes, or fields) and trigger
       their callback function when the object changes.

       Data sensors provide a delete callback that is called just  before  the  object  the  data
       sensor  is attached to is deleted; note that the callback should not attempt to modify the
       object in any way, or core dumps may result.

       Priority zero data sensors also provide  methods  that  can  be  called  in  the  callback
       function  to  determine  exactly  which  node,  field,  or  path  caused  the sensor to be
       triggered.

METHODS

     void                setDeleteCallback(SoSensorCB *function, void *data)
          Sets a callback that will be called when the object the sensor is sensing is deleted.

     SoNode *            getTriggerNode() const
     SoField *           getTriggerField() const
          If this is a priority 0 data sensor, returns the  node/field  that  was  modified  that
          caused  this  sensor to trigger. Returns NULL if the sensor was not triggered because a
          node/field changed (for example, if schedule() is called on  the  sensor)  or  if  this
          sensor  is not a priority 0 sensor. Note that because one change to the scene graph may
          cause multiple nodes or fields to be modified (because of field-to-field  connections),
          the node or field returned may not be the only one that changed.

     SoPath *            getTriggerPath() const
     void                setTriggerPathFlag(SbBool flag)
     SbBool              getTriggerPathFlag() const
          If this is a priority 0 data sensor, returns a path to the node that caused this sensor
          to trigger. Because recreating  the  path  to  the  node  that  changed  is  relatively
          expensive,  setTriggerPathFlag(TRUE)  must be called before the sensor is scheduled. If
          it is not called, or if the sensor  wasn't  triggered  because  a  node  changed,  this
          returns NULL. NULL is also returned if this is not a priority 0 sensor.

SEE ALSO

       SoNodeSensor, SoPathSensor, SoFieldSensor, SoDelayQueueSensor

                                                                              SoDataSensor(3IV)()