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

# SoLocateHighlight(3iv)

special separator that performs locate highlighting

## NAME

SoLocateHighlight — special separator that performs locate highlighting

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoGroup \> SoSeparator \> SoLocateHighlight

## SYNOPSIS

**#include \<Inventor/nodes/SoLocateHighlight.h\>**

**enum Modes {** **SoLocateHighlight::AUTO**	highlight when mouse is over (default)\
 **SoLocateHighlight::ON**	always highlight\
 **SoLocateHighlight::OFF**	never highlight\
 **}**

**enum Styles {** **SoLocateHighlight::EMISSIVE**	changes emissive color only (default)\
 **SoLocateHighlight::EMISSIVE\_DIFFUSE**\
 	changes emissive and diffuse colors\
 **}**

Fields from class SoLocateHighlight:

**SoSFColor**	**color**\
 **SoSFEnum**	**style**\
 **SoSFEnum**	**mode**

Fields from class SoSeparator:

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

Methods from class SoLocateHighlight:

	**SoLocateHighlight()**\
 **static SoType**	**getClassTypeId()**

Methods from class SoSeparator:

**static void**	**setNumRenderCaches(int howMany)**\
 **static int**	**getNumRenderCaches()**

Methods from class SoGroup:

**void**	**addChild(SoNode \*child)**\
 **void**	**insertChild(SoNode \*child, int newChildIndex)**\
 **SoNode \***	**getChild(int index) const**\
 **int**	**findChild(const SoNode \*child) const**\
 **int**	**getNumChildren() const**\
 **void**	**removeChild(int index)**\
 **void**	**removeChild(SoNode \*child)**\
 **void**	**removeAllChildren()**\
 **void**	**replaceChild(int index, SoNode \*newChild)**\
 **void**	**replaceChild(SoNode \*oldChild, SoNode \*newChild)**

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)**\
 **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 is a subclass of SoSeparator** that redraws itself in a different color when the cursor is over the contents of the separator.

The redraw happens for that separator only and not the entire window (redraw along the handle event pick path) and in the front buffer, to efficiently track the mouse motion. The highlighted redraw overrides the emissive and/or diffuse color of the subgraph based on the field values in this node.

NOTE: when using **SoLightModel::BASE\_COLOR** (to turn lighting off) only the diffuse color will be used to render objects, so **EMISSIVE\_DIFFUSE** must be used for this node to have any effect.

## FIELDS

**SoSFColor**	**color**\
 highlighting color - default \[.3, .3, .3\]

**SoSFEnum**	**style**\
 highlighting draw style - default EMISSIVE

**SoSFEnum**	**mode**\
 Whether to highlight or not - default AUTO

## METHODS

	**SoLocateHighlight()**\
 Creates a LocateHighlight node with default settings.

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

## ACTION BEHAVIOR

**SoHandleEventAction**\
 Checks to see if the cursor moves onto or off of the contents of the separator, and redraws appropriately (if **mode** is **AUTO**), otherwise traverses as a normal separator.

**SoGLRenderAction**\
 Redraws either highlighted (if cursor is over the contents of the separator when **mode** == **AUTO** or always if **mode** == **ON**), otherwise traverses as a normal separator.

## FILE FORMAT/DEFAULTS

```
LocateHighlight {
renderCaching	AUTO
boundingBoxCaching	AUTO
renderCulling	AUTO
pickCulling	AUTO
mode	AUTO
style	EMISSIVE
color	0.3 0.3 0.3
}
```

## SEE ALSO

**SoSeparator, SoSelection, SoMaterial**
