---
name: "SoDataSensor"
section: "3iv"
platform: "linux"
package: "inventor-doc"
version: "2.1.6+ds-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SoDataSensor/3iv"
---

# SoDataSensor(3iv)

abstract base class for sensors attached to parts of a scene

## 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**
