---
name: "SoSensor"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SoSensor"
---

# SoSensor(3)

The SoSensor class is the abstract base class for all sensors.

## NAME

SoSensor - The **SoSensor** class is the abstract base class for all sensors.

## SYNOPSIS

\#include \<Inventor/sensors/SoSensor.h\>

Inherited by **SoDelayQueueSensor**, and **SoTimerQueueSensor**.

### Public Member Functions

**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\
 virtual void **schedule** (void)=0\
 virtual void **unschedule** (void)=0\
 virtual SbBool **isScheduled** (void) const =0\
 virtual void **trigger** (void)\
 virtual SbBool **isBefore** (const **SoSensor** \*s) const =0\
 void **setNextInQueue** (**SoSensor** \*next)\
 **SoSensor** \* **getNextInQueue** (void) const\

### Static Public Member Functions

static void **initClass** (void)\

### Protected Attributes

SoSensorCB \* **func**\
 void \* **funcData**\

## Detailed Description

The **SoSensor** class is the abstract base class for all sensors.

Sensors is a mechanism in Coin for scheduling jobs to be run upon specific events. The events in question could be particular points in time, or changes to entities in the scene graph.

See documentation of subclasses for insight into exactly for what types of events we can trigger sensor callbacks.

For most tasks where application programmers can use sensors, it is also possible to achieve the same results by using engines. There are a few important differences between sensors and engines, though:

Engines are considered part of the scene graph, and are written to file upon **SoWriteAction** export operations. Sensors, on the other hand, are not included in export operations.

Engines basically connects fields (and come with a lot of built-in functionality for combining and converting inputs and outputs), you just decide which engine you want, connect inputs and output and forget about it. Sensors are a lot more flexible in what you can do when they trigger, as control is transferred internally from Coin to your registered callback functions.

**See also**

**SoSensorManager**, **SoEngine**

## Constructor & Destructor Documentation

### SoSensor::SoSensor (void )

Constructor.

### SoSensor::SoSensor (SoSensorCB \* funcptr, void \* data)

Constructor taking as parameters the sensor callback function *func* and the user *data* pointer which will be passed to the callback.

**See also**

**setFunction()**, **setData()**

### SoSensor::~SoSensor (void ) \[virtual\]

Destructor.

## Member Function Documentation

### void SoSensor::setFunction (SoSensorCB \* callbackfunction)

Set the callback function pointer which will be used when the sensor is triggered.

**See also**

**getFunction()**, **setData()**

### SoSensorCB \* SoSensor::getFunction (void ) const

Returns the callback function pointer.

**See also**

**setFunction()**

### void SoSensor::setData (void \* callbackdata)

Set the user supplied data pointer which will be used as the first argument to the sensor callback function.

**See also**

**getData()**, **setFunction()**

### void \* SoSensor::getData (void ) const

Returns the user supplied callback function data pointer.

**See also**

**setData()**

### virtual void SoSensor::schedule (void ) \[pure virtual\]

Put the sensor in a queue to be triggered at a later time.

**See also**

**unschedule()**, **isScheduled()**

Implemented in **SoAlarmSensor**, **SoDelayQueueSensor**, **SoTimerQueueSensor**, and **SoTimerSensor**.

### virtual void SoSensor::unschedule (void ) \[pure virtual\]

Remove sensor from queue. The sensor will not be triggered unless it is later rescheduled.

**See also**

**schedule()**, **isScheduled()**

Implemented in **SoDelayQueueSensor**, **SoTimerQueueSensor**, and **SoTimerSensor**.

### virtual SbBool SoSensor::isScheduled (void ) const \[pure virtual\]

Check if this sensor is scheduled for triggering.

**See also**

**schedule()**, **unschedule()**

Implemented in **SoDelayQueueSensor**, and **SoTimerQueueSensor**.

### void SoSensor::trigger (void ) \[virtual\]

Trigger the sensor's callback function.

Reimplemented in **SoDataSensor**, **SoDelayQueueSensor**, **SoFieldSensor**, and **SoTimerQueueSensor**.

### virtual SbBool SoSensor::isBefore (const SoSensor \* s) const \[pure virtual\]

Returns TRUE if this sensor should precede sensor *s* in its sensor queue.

### void SoSensor::setNextInQueue (SoSensor \* next)

*This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.*\

Open Inventor function not implemented in Coin.

### SoSensor \* SoSensor::getNextInQueue (void ) const

*This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.*\

Open Inventor function not implemented in Coin.

### void SoSensor::initClass (void ) \[static\]

Sets up initialization for static data for the sensors. Called by **SoDB::init()**.

## Member Data Documentation

### SoSensorCB\* SoSensor::func \[protected\]

Function to be called when a sensor triggers.

### void\* SoSensor::funcData \[protected\]

Data passed to the callback function.

## Author

Generated automatically by Doxygen for Coin from the source code.
