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

# SoInteractionKit(3iv)

base class for all interaction nodekit classes

## NAME

SoInteractionKit — base class for all interaction nodekit classes

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoBaseKit \> SoInteractionKit

## SYNOPSIS

**#include \<Inventor/nodekits/SoInteractionKit.h\>**

**enum CacheEnabled {** **SoInteractionKit::OFF**	Never build or use a cache\
 **SoInteractionKit::ON**	Always try to build a cache\
 **SoInteractionKit::AUTO**	Automatic caching\
 **}**

Fields from class SoInteractionKit:

**SoSFEnum**	**renderCaching**\
 **SoSFEnum**	**boundingBoxCaching**\
 **SoSFEnum**	**renderCulling**\
 **SoSFEnum**	**pickCulling**

Parts from class SoBaseKit:

**(SoNodeKitListPart)**	**callbackList**

Methods from class SoInteractionKit:

	**SoInteractionKit()**\
 **virtual SbBool**	**setPartAsPath(const SbName &partName, SoPath \*surrogatePath )**\
 **static const SoNodekitCatalog \***\
 	**getClassNodekitCatalog() const**\
 **static SoType**	**getClassTypeId()**

Methods from class SoBaseKit:

**virtual const SoNodekitCatalog \***\
 	**getNodekitCatalog() const**\
 **virtual SoNode \***	**getPart(const SbName &partName, SbBool makeIfNeeded)**\
 **SbString**	**getPartString(const SoBase \*part)**\
 **virtual SoNodeKitPath \***	**createPathToPart(const SbName &partName, SbBool makeIfNeeded, const SoPath \*pathToExtend = NULL)**\
 **virtual SbBool**	**setPart(const SbName &partName, SoNode \*newPart)**\
 **SbBool**	**set(char \*partName, char \*parameters)**\
 **SbBool**	**set(char \*nameValuePairs)**\
 **static SbBool**	**isSearchingChildren()**\
 **static void**	**setSearchingChildren(SbBool newVal)**

Methods from class SoNode:

**void**	**setOverride(SbBool state)**\
 **SbBool**	**isOverride() const**\
 **SoNode \***	**copy(SbBool copyConnections = FALSE) const**\
 **virtual SbBool**	**affectsState() const**\
 **static SoNode \***	**getByName(const SbName &name)**\
 **static int**	**getByName(const SbName &name, SoNodeList &list)**

Methods from class SoFieldContainer:

**void**	**setToDefaults()**\
 **SbBool**	**hasDefaultValues() const**\
 **SbBool**	**fieldsAreEqual(const SoFieldContainer \*fc) const**\
 **void**	**copyFieldValues(const SoFieldContainer \*fc, SbBool copyConnections = FALSE)**\
 **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**

Macros from class SoBaseKit:

**SO\_GET\_PART(kit, partName, partClass)**

**SO\_CHECK\_PART(kit, partName, partClass)**

## DESCRIPTION

**This is the base class for all classes of interaction nodekits. Currently, the only subclass is SoDragger**, which reacts to click-drag-release events from the mouse.

This node has four fields corresponding to those of an **SoSeparator**: They are **renderCaching**, **boundingBoxCaching**, **renderCulling**, and **pickCulling**. They behave the same here as they do for an **SoSeparator**

The **setPartAsPath()** method provides support for creating "stand-in" objects for parts in the interaction kit. The "stand-in", or "surrogate" part, is a path to an object that lies somewhere else in the scene graph.

## FIELDS

**SoSFEnum**	**renderCaching**\
 Set render caching mode. Default is **AUTO**.

**SoSFEnum**	**boundingBoxCaching**\
 Set bounding box caching mode. Default is **ON**. Setting this value to **AUTO** is equivalent to **ON - automatic culling is not implemented.**

**SoSFEnum**	**renderCulling**\
 Set render culling mode. Default is **OFF**. Setting this value to **AUTO** is equivalent to **ON - automatic culling is not implemented.**

**SoSFEnum**	**pickCulling**\
 Set pick caching mode. Default is **AUTO**.

## METHODS

	**SoInteractionKit()**\
 Constructor.

**virtual SbBool**	**setPartAsPath(const SbName &partName, SoPath \*surrogatePath )**\
 Sets any public part in the interaction kit as a "surrogate" path instead. The object at the end of the path serves as a stand-in when a pick occurs, and can thus initiate interaction.

Instead of the usual **setPart()**, which replaces **partName** with a new node, this will remove the node being used for **partName** from the scene and remember the **surrogatePath** you give it. Later, any pick on **surrogatePath** will be regarded as a pick on **partName**.

For example, set the *XRotator* part of an **SoTrackballDragger** to be the path to an object in the scene. The rest of the trackball will look the same, but the *XRotator* stripe will disappear. However, click the mouse on the object at the end of **surrogatePath** and the ball will start to drag in rotation around its X axis.

Note that this is different from setting the part to be the node at the end of the path. When you set the part as a node, a second instance will be drawn in the local space of the interaction kit. When you set it as a path, the object itself is used, not a copy.

The **partName** may be any part name that follows the nodekit syntax for parts, such as **childList\[0\].shape** or **rotator.rotatorActive**. (See the **getPart()** method in the **SoBaseKit** reference page for a complete description.)

**static const SoNodekitCatalog \***\
 	**getClassNodekitCatalog() const**\
 Returns an **SoNodekitCatalog** for the class **SoInteractionKit**.

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

## CATALOG PARTS

| | | | |
| --- | --- | --- | --- |
| **All parts** |
|  |  |  | **NULL by** |
| **Part Name** | **Part Type** | **Default Type** | **Default** |
|  |
| callbackList | NodeKitListPart | -- | yes |
|  |

| | | |
| --- | --- | --- |
| **Extra information for list parts from above table** |
| **Part Name** | **Container Type** | **Permissible Types** |
|  |
| callbackList | Separator | Callback, EventCallback |
|  |

## FILE FORMAT/DEFAULTS

```
InteractionKit {
renderCaching	AUTO
boundingBoxCaching	AUTO
renderCulling	AUTO
pickCulling	AUTO
callbackList	NULL
}
```

## SEE ALSO

**SoBaseKit, SoInteraction, SoNodeKitDetail, SoNodeKitPath, SoNodekitCatalog, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoPointLightDragger,** **SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger, SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger,** **SoTrackballDragger, SoTransformBoxDragger, SoTranslate1Dragger, SoTranslate2Dragger**
