SoDataSensor(3)

πŸ“¦
version 4.0.10 Β· 4 versions
, in fedora 43, fedora 44

πŸ’– SoDataSensor(3) πŸ’– β€” the Coin manual, but make it make sense

okay bestie, grab your iced coffee β˜• because we're reading the SoDataSensor(3) page from the Coin manual together, and honestly? it's giving ✨foundational✨. let's go.


✨ NAME ✨

SoDataSensor β€” the SoDataSensor class is the abstract base class for sensors monitoring changes in a scene graph. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <Inventor/sensors/SoDataSensor.h>

Inherits SoDelayQueueSensor.

Inherited by SoFieldSensor, SoNodeSensor, and SoPathSensor.

πŸ‘‘ Public Member Functions

SoDataSensor (void)
SoDataSensor (SoSensorCB *func, void *data)
virtual ~SoDataSensor (void)
void setDeleteCallback (SoSensorCB *function, void *data=NULL)
SoNode * getTriggerNode (void) const
SoField * getTriggerField (void) const
SoPath * getTriggerPath (void) const
void setTriggerPathFlag (SbBool flag)
SbBool getTriggerPathFlag (void) const
SoNotRec::OperationType getTriggerOperationType (void) const
int getTriggerIndex (void) const
int getTriggerFieldNumIndices (void) const
SoNode * getTriggerGroupChild (void) const
SoNode * getTriggerReplacedGroupChild (void) const
virtual void trigger (void)
virtual void notify (SoNotList *l)
virtual void dyingReference (void)=0

πŸ’œ Public Member Functions inherited from SoDelayQueueSensor

SoDelayQueueSensor (void)
SoDelayQueueSensor (SoSensorCB *func, void *data)
virtual ~SoDelayQueueSensor (void)
void setPriority (uint32_t pri)
uint32_t getPriority (void) const
virtual void schedule (void)
virtual void unschedule (void)
virtual SbBool isScheduled (void) const
virtual SbBool isIdleOnly (void) const

🌸 Public Member Functions inherited from SoSensor

SoSensor (void)
SoSensor (SoSensorCB *func, void *data)
virtual ~SoSensor (void)
void setFunction (SoSensorCB *callbackfunction)
SoSensorCBPtr getFunction (void) const
void setData (void *callbackdata)
void * getData (void) const
void setNextInQueue (SoSensor *next)
SoSensor * getNextInQueue (void) const

🫢 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
void * funcData

🌈 DETAILED DESCRIPTION 🌈

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

so like β€” if you're the kind of person who needs to know the exact moment a particular entity (a field, a node, whatever) changes? that's literally what subclasses of SoDataSensor are for, bestie. they sit there monitoring the entity and they notify you the second it changes. obsessed. 😌


🧚 CONSTRUCTOR & DESTRUCTOR DOCUMENTATION 🧚

SoDataSensor::SoDataSensor (void )

Default constructor. the blank-slate era. πŸŽ€

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 (void ) [virtual]

Destructor. it's over, it's done, it's the end of an era πŸ’€


πŸ’… MEMBER FUNCTION DOCUMENTATION πŸ’…

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.

⚠️ real talk: the sensor priority setting does not affect the delete callback. It will be called immediately, before the object is deleted. no queue, no waiting, no chill. 🚨

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 β€” like, non-immediate sensors could have been scheduled and rescheduled multiple times, so there wouldn't be a single node responsible for the sensor triggering. it's giving "no one main character, just vibes". 😭

🫢 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. don't be out here holding stale pointers, bestie.

See also

  • 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. periodt. πŸ’…

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(). save it or lose it, fr fr.

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. πŸ’Έ it's giving "nice thing to have, costs you though".

See also

  • getTriggerPathFlag(), getTriggerPath()

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()

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()

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. yeah, it's a Coin exclusive, iykyk. ✨

See also

  • getTriggerFieldNumIndices(), getTriggerGroupChild(), getTriggerNode(), getTriggerField()

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()

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

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

void SoDataSensor::trigger (void ) [virtual]

Trigger the sensor's callback function. πŸ”” the moment we've all been waiting for.

Reimplemented from SoDelayQueueSensor.

Reimplemented in SoFieldSensor.

void SoDataSensor::notify (SoNotList * l) [virtual]

Called from entity we are monitoring when it changes. πŸ“£ it's like the group chat notification but for scene graphs.

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.

virtual void SoDataSensor::dyingReference (void ) [pure virtual]

This method is called when the entity we are connected to is about to be deleted. πŸͺ¦ rip bestie.

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.


🌟 AUTHOR 🌟

Generated automatically by Doxygen for Coin from the source code. not a human author, just a very diligent robot doing its thing πŸ€–πŸ’–


aaaaand that's the whole page, no skips, no cuts, every flag and every NULL preserved like the little treasures they are 🫢 Version 4.0.10 β€” Thu Jun 25 2026 00:00:00 β€” SoDataSensor(3) πŸŽ€ byeee, go monitor something ✨

πŸ“¦ where this page comes from