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

# SoEngine(3iv)

base class for all engines

## NAME

SoEngine — base class for all engines

## INHERITS FROM

SoBase \> SoFieldContainer \> SoEngine

## SYNOPSIS

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

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

**SoEngine** is the abstract base class for all engines. Engines are objects used for animation and behavior. They are lightweight objects that are connected between nodes, the clock, and other engines to form interesting behaviorial objects (e.g., a spinning windmill).

Engines are used to animate parts of a scene and/or to constrain one part of a scene in relation to some other part of the scene. An engine receives a number of input values, performs some operation on them, and then copies the results into one or more output fields. Both the inputs and the outputs can be connected to other fields or engines in the scene graph. When an engine's output values change, those new values are sent to any fields or engines connected to them.

## METHODS

**static SoType**	**getClassTypeId()**\
 Returns the type identifier for the SoEngine class.

**virtual int**	**getOutputs(SoEngineOutputList &list) const**\
 Returns a list of outputs in this engine. Use **getOutputName** to get the names of the outputs, and use **SoEngineOutput::getConnectionType**  to determine their types.

**SoEngineOutput \***	**getOutput(const SbName &outputName) const**\
 Returns a pointer to the engine output with the given name. If no such output exists, NULL is returned.

**SbBool**	**getOutputName(const SoEngineOutput \*output, SbName &outputName) const**\
 Returns (in **outputName**) the name of the engine output (**output**). Returns FALSE if the engine output is not contained within the engine instance.

**SoEngine \***	**copy() const**\
 Creates and returns an exact copy of the engine. All connections to inputs are copied as is (without copying what's at the other end).

**static SoEngine \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoEngineList &list)**\
 Look up engine(s) by name.

## FILE FORMAT/DEFAULTS

This is an abstract class. See the reference page of a derived class for the format and default values.

## SEE ALSO

**SoBoolOperation, SoCalculator, SoComposeMatrix, SoComposeRotation, SoComposeRotationFromTo, SoComposeVec2f, SoComposeVec3f, SoComposeVec4f, SoComputeBoundingBox, SoConcatenate, SoCounter, SoDecomposeMatrix,** **SoDecomposeRotation, SoDecomposeVec2f, SoDecomposeVec3f, SoDecomposeVec4f, SoElapsedTime, SoGate, SoInterpolate, SoOnOff, SoOneShot, SoSelectOne, SoTimeCounter, SoTransformVec3f, SoTriggerAny**
