Coin  4.0.3
Coin3D core library
Loading...
Searching...
No Matches
SoDataSensor Class Referenceabstract

The SoDataSensor class is the abstract base class for sensors monitoring changes in a scene graph. More...

#include <Inventor/sensors/SoDataSensor.h>

Inheritance diagram for SoDataSensor:
SoDelayQueueSensor SoSensor SoFieldSensor SoNodeSensor SoPathSensor

Public Member Functions

 SoDataSensor (SoSensorCB *func, void *data)
 
 SoDataSensor (void)
 
virtual ~SoDataSensor (void)
 
virtual void dyingReference (void)=0
 
SoFieldgetTriggerField (void) const
 
int getTriggerFieldNumIndices (void) const
 
SoNodegetTriggerGroupChild (void) const
 
int getTriggerIndex (void) const
 
SoNodegetTriggerNode (void) const
 
SoNotRec::OperationType getTriggerOperationType (void) const
 
SoPathgetTriggerPath (void) const
 
SbBool getTriggerPathFlag (void) const
 
SoNodegetTriggerReplacedGroupChild (void) const
 
virtual void notify (SoNotList *l)
 
void setDeleteCallback (SoSensorCB *function, void *data=NULL)
 
void setTriggerPathFlag (SbBool flag)
 
virtual void trigger (void)
 
- Public Member Functions inherited from SoDelayQueueSensor
 SoDelayQueueSensor (SoSensorCB *func, void *data)
 
 SoDelayQueueSensor (void)
 
virtual ~SoDelayQueueSensor (void)
 
uint32_t getPriority (void) const
 
virtual SbBool isIdleOnly (void) const
 
virtual SbBool isScheduled (void) const
 
virtual void schedule (void)
 
void setPriority (uint32_t pri)
 
virtual void unschedule (void)
 
- Public Member Functions inherited from SoSensor
 SoSensor (SoSensorCB *func, void *data)
 
 SoSensor (void)
 
virtual ~SoSensor (void)
 
voidgetData (void) const
 
SoSensorCBPtr getFunction (void) const
 
SoSensorgetNextInQueue (void) const
 
void setData (void *callbackdata)
 
void setFunction (SoSensorCB *callbackfunction)
 
void setNextInQueue (SoSensor *next)
 

Protected Member Functions

void invokeDeleteCallback (void)
 

Additional Inherited Members

- Static Public Member Functions inherited from SoDelayQueueSensor
static uint32_t getDefaultPriority (void)
 
- Static Public Member Functions inherited from SoSensor
static void initClass (void)
 
- Protected Attributes inherited from SoDelayQueueSensor
SbBool scheduled
 
- Protected Attributes inherited from SoSensor
SoSensorCB * func
 
voidfuncData
 

Detailed Description

The SoDataSensor class is the abstract base class for sensors monitoring changes in a scene graph.

If you need to know when a particular entity (as a field or a node) changes, subclasses of SoDataSensor can be used to monitor the entity and notify you when it changes.

Constructor & Destructor Documentation

◆ SoDataSensor() [1/2]

SoDataSensor::SoDataSensor ( void )

Default constructor.

◆ SoDataSensor() [2/2]

SoDataSensor::SoDataSensor ( SoSensorCB * func,
void * data )

Constructor taking as parameters the sensor callback function and the userdata which will be passed to the callback.

See also
setFunction(), setData()

◆ ~SoDataSensor()

SoDataSensor::~SoDataSensor ( void )
virtual

Destructor.

Member Function Documentation

◆ dyingReference()

void SoDataSensor::dyingReference ( void )
pure virtual

This method is called when the entity we are connected to is about to be deleted.

◆ getTriggerField()

SoField * SoDataSensor::getTriggerField ( void ) const

Returns a pointer to the field causing the sensor to trigger, or NULL if the change didn't start at a field.

Only valid for immediate sensors (will return NULL otherwise), for the same reason as described for SoDataSensor::getTriggerNode().

The result is only valid within the scope of a trigger(), so if you need to use the pointer outside your sensor callback, you must store it.

◆ getTriggerFieldNumIndices()

int SoDataSensor::getTriggerFieldNumIndices ( void ) const

Returns the number of indices of the multifield that caused the sensor to trigger.

Please note that this method is an extension to the original SGI Inventor API.

See also
getTriggerIndex(), getTriggerField()

◆ getTriggerGroupChild()

SoNode * SoDataSensor::getTriggerGroupChild ( void ) const

Returns a pointer to the actual child node in the node that caused the sensor to trigger, or NULL if there was no such node.

Please note that this method is an extension to the original SGI Inventor API.

See also
getTriggerNode(), getTriggerReplacedGroupChild

◆ getTriggerIndex()

int SoDataSensor::getTriggerIndex ( void ) const

Returns the index of the child node or value in the node or multifield that caused the sensor to trigger.

Please note that this method is an extension to the original SGI Inventor API.

See also
getTriggerFieldNumIndices(), getTriggerGroupChild(), getTriggerNode(), getTriggerField()

◆ getTriggerNode()

SoNode * SoDataSensor::getTriggerNode ( void ) const

Returns a pointer to the node causing the sensor to trigger, or NULL if there was no such node.

NULL will also be returned for sensors which are not immediate sensors (i.e. with priority equal to 0), as the result could otherwise be misleading (non-immediate sensors could have been scheduled and rescheduled multiple times, so there wouldn't be a single node responsible for the sensor triggering).

The result is only valid within the scope of a trigger(), so if you need to use the pointer outside your sensor callback, you must store it.

See also
getTriggerField()

◆ getTriggerOperationType()

SoNotRec::OperationType SoDataSensor::getTriggerOperationType ( void ) const

Returns the type of the scene graph operation on the node that caused the sensor to trigger.

See also
getTriggerNode(), getTriggerField(), getTriggerGroupChild()

◆ getTriggerPath()

SoPath * SoDataSensor::getTriggerPath ( void ) const

Returns a pointer to the path from the node under the surveillance of this sensor (either directly or indirectly through a field watch) down to the node which caused the sensor to be triggered.

Will only work for immediate mode sensors, for the same reason explained under getTriggerNode().

The resulting path is only valid within the scope of trigger(), so if you need to use the path outside your sensor callback, you must store the pointer and call SoPath::ref() to avoid its destruction at the end of SoDataSensor::trigger().

◆ getTriggerPathFlag()

SbBool SoDataSensor::getTriggerPathFlag ( void ) const

Returns whether or not any node induced trigger operations will make the sensor find the path of the node which caused it.

See also
setTriggerPathFlag(), getTriggerPath()

◆ getTriggerReplacedGroupChild()

SoNode * SoDataSensor::getTriggerReplacedGroupChild ( void ) const

Returns a pointer to the actual child node for a SoNotRec::GROUP_REPLACECHILD type of operation in the node that is about to be replaced and caused the sensor to trigger, or NULL if there was no such node.

Please note that this method is an extension to the original SGI Inventor API.

See also
getTriggerNode(), getTriggerGroupChild

◆ invokeDeleteCallback()

void SoDataSensor::invokeDeleteCallback ( void )
protected

Runs the callback set in setDeleteCallback().

Called from subclasses when the entity we're monitoring is about to be deleted.

◆ notify()

void SoDataSensor::notify ( SoNotList * l)
virtual

Called from entity we are monitoring when it changes.

If this is an immediate sensor, the field and node (if any) causing the change will be stored and can be fetched by getTriggerField() and getTriggerNode(). If the trigger path flag has been set, the path down to the node is also found and stored for later retrieval by getTriggerPath().

See also
setTriggerPathFlag()

Reimplemented in SoPathSensor.

◆ setDeleteCallback()

void SoDataSensor::setDeleteCallback ( SoSensorCB * function,
void * data = NULL )

If an object monitored by a data sensor is deleted, the given callback function will be called with the given userdata.

The sensor priority setting does not affect the delete callback. It will be called immediately, before the object is deleted.

◆ setTriggerPathFlag()

void SoDataSensor::setTriggerPathFlag ( SbBool flag)

This flag indicates whether or not the path should be queried whenever a node triggers the data sensor.

This flag is provided because finding a node path through a scene graph is an expensive operation.

See also
getTriggerPathFlag(), getTriggerPath()

◆ trigger()

void SoDataSensor::trigger ( void )
virtual

Trigger the sensor's callback function.

Reimplemented from SoDelayQueueSensor.

Reimplemented in SoFieldSensor.


The documentation for this class was generated from the following files: