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

# SoOneShot(3iv)

timer that runs for a pre-set amount of time

## NAME

SoOneShot — timer that runs for a pre-set amount of time

## INHERITS FROM

SoBase \> SoFieldContainer \> SoEngine \> SoOneShot

## SYNOPSIS

**#include \<Inventor/engines/SoOneShot.h\>**

**enum Flags {** **SoOneShot::RETRIGGERABLE**	Can start over during the cycle\
 **SoOneShot::HOLD\_FINAL**	Output values stay high after cycle\
 **}**

Inputs from class SoOneShot:

**SoSFTime**	**timeIn**\
 **SoSFTime**	**duration**\
 **SoSFTrigger**	**trigger**\
 **SoSFBitMask**	**flags**\
 **SoSFBool**	**disable**

Outputs from class SoOneShot:

**(SoSFTime)**	**timeOut**\
 **(SoSFBool)**	**isActive**\
 **(SoSFFloat)**	**ramp**

Methods from class SoOneShot:

	**SoOneShot()**

Methods from class SoEngine:

**static SoType**	**getClassTypeId()**\
 **virtual int**	**getOutputs(SoEngineOutputList &list) const**\
 **SoEngineOutput \***	**getOutput(const SbName &outputName) const**\
 **SbBool**	**getOutputName(const SoEngineOutput \*output, SbName &outputName) const**\
 **SoEngine \***	**copy() const**\
 **static SoEngine \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoEngineList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **SbBool**	**set(const char \*fieldDataString)**\
 **void**	**get(SbString &fieldDataString)**\
 **virtual int**	**getFields(SoFieldList &resultList) const**\
 **virtual SoField \***	**getField(const SbName &fieldName) const**\
 **SbBool**	**getFieldName(const SoField \*field, SbName &fieldName) const**\
 **SbBool**	**isNotifyEnabled() const**\
 **SbBool**	**enableNotify(SbBool flag)**

Methods from class SoBase:

**void**	**ref()**\
 **void**	**unref() const**\
 **void**	**unrefNoDelete() const**\
 **void**	**touch()**\
 **virtual SoType**	**getTypeId() const**\
 **SbBool**	**isOfType(SoType type) const**\
 **virtual void**	**setName(const SbName &name)**\
 **virtual SbName**	**getName() const**

## DESCRIPTION

**This engine is a timer that runs for a pre-set amount of time and then stops. By default, the timeIn** input is connected to the **realTime** global field. It can, however, by connected to any other time source.

The timer is started when the **trigger** input is touched. It then runs for the specified **duration**, and updates the **timeOut** output with the time that has elapsed. During that time, the **ramp** output is also updated. The **ramp** output starts at 0.0 at the beginning of the cycle, and linearly increases until it reaches 1.0 at the end of the cycle.

You can disable the timer by setting the **disable** input to TRUE. The output value remains 0.0 while the timer is disabled. If the timer is disabled in the middle of a cycle the output values will be set to 0.0.

The **flags** input contains control flags. Using the flags you can set the timer to be retriggerable in the middle of a cycle, and set the output values to stay high after the cycle has been completed. By default, these flags are not set.

## INPUTS

**SoSFTime**	**timeIn**\
 Running time.

**SoSFTime**	**duration**\
 Duration of the active cycle.

**SoSFTrigger**	**trigger**\
 Start the cycle. The trigger will be ignored if it is touched in the middle of a cycle and the RETRIGGERABLE flag is not set.

**SoSFBitMask**	**flags**\
 Control flags.

**SoSFBool**	**disable**\
 If TRUE, the timer is disabled.

## OUTPUTS

**(SoSFTime)**	**timeOut**\
 Elapsed time from the start.

**(SoSFBool)**	**isActive**\
 Is TRUE during the active cycle.

**(SoSFFloat)**	**ramp**\
 Ramps linearly from 0.0 to 1.0.

## METHODS

	**SoOneShot()**\
 Constructor

## FILE FORMAT/DEFAULTS

```
OneShot {
duration	1
trigger
flags	()
disable	FALSE
timeIn	<current time>
}
```

## SEE ALSO

**SoElapsedTime, SoEngineOutput**
