> For the complete documentation index, see [llms.txt](https://dante-3.gitbook.io/dante-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dante-3.gitbook.io/dante-docs/indicator-system-plugin/indicator-setup-config/built-in-actions.md).

# Built-in Actions

### Indicator Class

**Class:** `UIndicatorAction_IndicatorClass`\
**Display Name:** `Indicator Class`

Sets the widget class that will be spawned and shown for this indicator.

| Property          | Type                         | Description                 |
| ----------------- | ---------------------------- | --------------------------- |
| `IndicatorWidget` | `TSoftClassPtr<UUserWidget>` | The widget class to display |

**Effect on descriptor:** `Descriptor->SetIndicatorClass(IndicatorWidget)`

> This is the **most essential** action. Without it no widget is displayed.

***

### Projection Mode

**Class:** `UIndicatorAction_ProjectionMode`\
**Display Name:** `Projection Mode`

Sets the `EActorCanvasProjectionMode` on the descriptor, with separate values for `ACharacter` and non-character actors. The action automatically detects which type the owning actor is at runtime.

| Property                     | Type                         | Default                | Description                                    |
| ---------------------------- | ---------------------------- | ---------------------- | ---------------------------------------------- |
| `ProjectionModeCharacter`    | `EActorCanvasProjectionMode` | `ComponentBoundingBox` | Mode applied when the owner is an `ACharacter` |
| `ProjectionModeNonCharacter` | `EActorCanvasProjectionMode` | `ComponentPoint`       | Mode applied for all other actors              |

**Effect on descriptor:** `Descriptor->SetProjectionMode(...)` — value chosen based on owner type.

***

### Clamp To Screen

**Class:** `UIndicatorAction_ClampToScreen`\
**Display Name:** `Clamp To Screen`

Enables or disables screen-edge clamping on the descriptor.

| Property         | Type   | Default | Description                                                    |
| ---------------- | ------ | ------- | -------------------------------------------------------------- |
| `bClampToScreen` | `bool` | `true`  | Whether the indicator locks to the screen edge when off-screen |

**Effect on descriptor:** `Descriptor->SetClampToScreen(bClampToScreen)`

***

### Arrow Brush

**Class:** `UIndicatorAction_ArrowStyle`\
**Display Name:** `Arrow Brush`

Configures the directional arrow shown when the indicator is clamped to the screen edge.

| Property                  | Type          | Default   | Description                              |
| ------------------------- | ------------- | --------- | ---------------------------------------- |
| `bShowClampToScreenArrow` | `bool`        | `true`    | Whether to show the arrow while clamped  |
| `ArrowBrush`              | `FSlateBrush` | *(empty)* | The image used for the directional arrow |

**Effect on descriptor:**

```cpp
Descriptor->SetShowClampToScreenArrow(bShowClampToScreenArrow)
Descriptor->SetArrowBrush(ArrowBrush)
```

> Pair with `Clamp To Screen` — the arrow only renders if `bClampToScreen` is also `true`.

***

### Set Align

**Class:** `UIndicatorAction_SetAlign`\
**Display Name:** `Set Align`

Sets the horizontal and vertical alignment of the indicator widget relative to the projected screen point.

| Property                   | Type                   | Description                                       |
| -------------------------- | ---------------------- | ------------------------------------------------- |
| `EntryHorizontalAlignment` | `EHorizontalAlignment` | Widget's horizontal anchor at the projected point |
| `EntryVerticalAlignment`   | `EVerticalAlignment`   | Widget's vertical anchor at the projected point   |

**Effect on descriptor:**

```cpp
Descriptor->SetHAlign(EntryHorizontalAlignment)
Descriptor->SetVAlign(EntryVerticalAlignment)
```

***

### Override Desired Size

**Class:** `UIndicatorAction_OverrideDesiredSize`\
**Display Name:** `Override Desired Size`

Forces the indicator widget to render at a fixed pixel size instead of its natural desired size.

| Property               | Type        | Default      | Description                                                                |
| ---------------------- | ----------- | ------------ | -------------------------------------------------------------------------- |
| `bOverrideDesiredSize` | `bool`      | `true`       | Enable size override                                                       |
| `DesiredSize`          | `FVector2D` | `(100, 100)` | Target size in pixels (visible only when `bOverrideDesiredSize` is `true`) |

**Effect on descriptor:**

```cpp
Descriptor->SetOverrideDesiredSize(bOverrideDesiredSize)
Descriptor->SetDesiredSize(DesiredSize)
```

***

### Bounding Box Anchor

**Class:** `UIndicatorAction_BoundingBoxAnchor`\
**Display Name:** `Bounding Box Anchor`

Sets the normalized anchor point within the actor/component bounding box used by bounding-box projection modes. Like `Projection Mode`, this applies different values for characters vs. non-characters.

| Property                        | Type      | Default             | Description                                                 |
| ------------------------------- | --------- | ------------------- | ----------------------------------------------------------- |
| `BoundingBoxAnchorCharacter`    | `FVector` | `(0.5, 0.5, 1.0)`   | Anchor for `ACharacter` owners — top center of bounding box |
| `BoundingBoxAnchorNonCharacter` | `FVector` | `(0.5, 0.5, 100.0)` | Anchor for non-character actors                             |

**Effect on descriptor:** `Descriptor->SetBoundingBoxAnchor(...)` — value chosen based on owner type.

> Setting the Z component to `1.0` places the indicator at the **top** of the bounding box, which is typical for name tags above a character's head.

***

### Auto Remove When Component Is Null

**Class:** `UIndicatorAction_AutoRemoveWhenIndicatorComponentIsNull`\
**Display Name:** `Auto Remove When Component Is Null`

Tells the descriptor to remove itself automatically when its tracked `SceneComponent` becomes invalid (e.g., if the actor's mesh is destroyed while the actor itself is still alive).

| Property                                  | Type   | Default | Description              |
| ----------------------------------------- | ------ | ------- | ------------------------ |
| `bAutoRemoveWhenIndicatorComponentIsNull` | `bool` | `true`  | Enable automatic removal |

**Effect on descriptor:** `Descriptor->SetAutoRemoveWhenIndicatorComponentIsNull(bAutoRemoveWhenIndicatorComponentIsNull)`

## See Also

* [UIndicatorSetupAction](/dante-docs/indicator-system-plugin/indicator-setup-action.md)
