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

# SoPointLightDragger(3iv)

sun-shaped icon you can translate in 3D by dragging with the mouse

## NAME

SoPointLightDragger — sun-shaped icon you can translate in 3D by dragging with the mouse

## INHERITS FROM

SoBase \> SoFieldContainer \> SoNode \> SoBaseKit \> SoInteractionKit \> SoDragger \> SoPointLightDragger

## SYNOPSIS

**#include \<Inventor/draggers/SoPointLightDragger.h\>**

Fields from class SoPointLightDragger:

**SoSFVec3f**	**translation**

Fields from class SoDragger:

**SoSFBool**	**isActive**

Fields from class SoInteractionKit:

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

Parts from class SoBaseKit:

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

Methods from class SoPointLightDragger:

	**SoPointLightDragger()**\
 **static const SoNodekitCatalog \***\
 	**getClassNodekitCatalog() const**\
 **static SoType**	**getClassTypeId()**

Methods from class SoDragger:

**void**	**addStartCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeStartCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**addMotionCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeMotionCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**addFinishCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeFinishCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**addValueChangedCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **void**	**removeValueChangedCallback(SoDraggerCB \*f, void \*userData = NULL)**\
 **SbBool**	**enableValueChangedCallbacks()**\
 **void**	**setMinGesture(int pixels)**\
 **int**	**getMinGesture() const**\
 **static void**	**setMinScale(float newMinScale)**\
 **static float**	**getMinScale()**

Methods from class SoInteractionKit:

**virtual SbBool**	**setPartAsPath(const SbName &partName, SoPath \*surrogatePath )**

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

**SoPointLightDragger** is a dragger that looks like a point light source, can be translated in three directions, and has a **translation** field that always reflects its position in local space. The point light dragger also has a special **material** part which can be used to make it take on the color of a light source.

*Remember:* This is *not* a light source! It just looks like one. If you want to move a light with this dragger, you can either:

\[a\] Use an **SoPointLightManip**, which is subclassed from **SoLight**. It creates one of these draggers and uses it as the interface to change the **location** of its light source (see the **SoPointLightManip** reference page). The manipulator also edits the **material** part of this dragger to match the color of light the manipulator is producing.

\[b\] Use a field-to-field connection to connect the **location** of a light source from this dragger's **translation** field.

This dragger contains an **SoDragPointDragger**, which you drag through 3-space using an integrated set of linear and planar draggers. (For detailed information on how to use **SoDragPointDragger**, see its reference page.) The point light dragger sets the planar translation parts of this dragPoint dragger with a new default that looks like a shining sun emanating rays of light (okay, so use your imagination).

By changing the **material** part you can change the color of the sun shape, because the default part contains no **SoMaterial** nodes. This fact enables the **SoPointLightManip** (not the dragger, the manipulator) to color its dragger to match the color of the light it is emanating. Recall that a point light *manip* is derived from **SoLight** and creates a point light *dragger* to provide an interface and geometrical presence on screen. The manipulator also has a **color** field; when the light color changes, it changes the **material** part of its dragger so that they match.

You can change the parts in any instance of this dragger using **setPart()**.

The default part geometries are defined as resources for this **SoPointLightDragger** class. They are detailed in the Dragger Resources section of the online reference page for this class. You can make your program use different default resources for the parts by copying the file **/usr/share/data/draggerDefaults/pointLightDragger.iv** into your own directory, editing the file, and then setting the environment variable **SO\_DRAGGER\_DIR** to be a path to that directory.

## FIELDS

**SoSFVec3f**	**translation**\
 Position of the dragger.

## METHODS

	**SoPointLightDragger()**\
 Constructor.

**static const SoNodekitCatalog \***\
 	**getClassNodekitCatalog() const**\
 Returns an **SoNodekitCatalog** for this class

**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 |
| material | Material | -- | yes |
| translator | DragPointDragger | -- | yes |
|  |

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

## DRAGGER RESOURCES

.in 0n+.5i Resource:	**pointLightOverallMaterial**\
 .in 0n+.5i Part:	material\
 Appearance:	white. half strength emissive, half strength diffuse\
 Description:	sets material for the sun shape when stationary. Resource for the moving sun, pointLightTranslatorPlaneTranslatorActive, contains a yellow material for highlighting.

.in 0n+.5i Resource:	**pointLightTranslatorPlaneTranslator**\
 .in 0n+.5i Parts:	translator.yzTranslator.translator\
\
 	translator.xzTranslator.translator\
\
 	translator.xyTranslator.translator\
 Appearance:	sun shape with no material\
 Description:	picking these parts initiates dragging by the yz, xz, and xy planar draggers respectively.

.in 0n+.5i Resource:	**pointLightTranslatorPlaneTranslatorActive**\
 .in 0n+.5i Parts:	translator.yzTranslator.translatorActive\
\
 	translator.xzTranslator.translatorActive\
\
 	translator.xyTranslator.translatorActive\
 Appearance:	yellow sun shape\
 Description:	shown during planar dragging in the yz, xz, and xy planes respectively.

.in 0n+.5i Resource:	**pointLightTranslatorLineTranslator**\
 .in 0n+.5i Parts:	translator.xTranslator.translator\
\
 	translator.yTranslator.translator\
\
 	translator.zTranslator.translator\
 Appearance:	white cylinder\
 Description:	picking these parts initiates dragging in the x, y, and z linear draggers respectively.

.in 0n+.5i Resource:	**pointLightTranslatorLineTranslatorActive**\
 .in 0n+.5i Parts:	translator.xTranslator.translatorActive\
\
 	translator.yTranslator.translatorActive\
\
 	translator.zTranslator.translatorActive\
 Appearance:	yellow cylinder\
 Description:	shown during linear dragging in the x, y, and z directions respectively.

## FILE FORMAT/DEFAULTS

```
PointLightDragger {
renderCaching	AUTO
boundingBoxCaching	AUTO
renderCulling	AUTO
pickCulling	AUTO
isActive	FALSE
translation	0 0 0
callbackList	NULL
material	<pointLightOverallMaterial resource>
translator	DragPointDragger {
}
translator.yzTranslator.translator	<pointLightTranslatorPlaneTranslator resource>
translator.xzTranslator.translator	<pointLightTranslatorPlaneTranslator resource>
translator.xyTranslator.translator	<pointLightTranslatorPlaneTranslator resource>
translator.yzTranslator.translatorActive	<pointLightTranslatorPlaneTranslatorActive resource>
translator.xzTranslator.translatorActive	<pointLightTranslatorPlaneTranslatorActive resource>
translator.xyTranslator.translatorActive	<pointLightTranslatorPlaneTranslatorActive resource>
translator.xTranslator.translator	<pointLightTranslatorLineTranslator resource>
translator.yTranslator.translator	<pointLightTranslatorLineTranslator resource>
translator.zTranslator.translator	<pointLightTranslatorLineTranslator resource>
translator.xTranslator.translatorActive	<pointLightTranslatorLineTranslatorActive resource>
translator.yTranslator.translatorActive	<pointLightTranslatorLineTranslatorActive resource>
translator.zTranslator.translatorActive	<pointLightTranslatorLineTranslatorActive resource>
}
```

## SEE ALSO

**SoInteractionKit, SoDragger, SoCenterballDragger, SoDirectionalLightDragger, SoDragPointDragger, SoHandleBoxDragger, SoJackDragger, SoRotateCylindricalDragger, SoRotateDiscDragger, SoRotateSphericalDragger,** **SoScale1Dragger, SoScale2Dragger, SoScale2UniformDragger, SoScaleUniformDragger, SoSpotLightDragger, SoTabBoxDragger, SoTabPlaneDragger, SoTrackballDragger, SoTransformBoxDragger, SoTransformerDragger,** **SoTranslate1Dragger, SoTranslate2Dragger**
