> 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-action/abstract.md).

# Abstract

## Abstract Base: `UIndicatorSetupActions`

```cpp
UCLASS(Abstract, Blueprintable)
class UIndicatorSetupActions : public UObject
{
public:
    UFUNCTION(BlueprintNativeEvent)
    void OnIndicatorSetupActivated(UIndicatorDescriptor* Descriptor, UIndicatorManagerComponent* Manager);

    UFUNCTION(BlueprintNativeEvent)
    void OnIndicatorSetupDeactivated(UIndicatorDescriptor* Descriptor, UIndicatorManagerComponent* Manager);
};
```

* Both functions are `BlueprintNativeEvent` — override in C++ via `_Implementation` suffix, or in Blueprint via event graph.
* `Descriptor` is the live descriptor for this indicator; mutate it freely.
* `Manager` gives access to the owning actor (`Manager->GetOwner()`).

***

## Built-in Action Classes

### `UIndicatorAction_IndicatorClass`

Sets the widget class that `UIndicatorLayer` will instantiate for this indicator.

| Property          | Type                         | Default | Description                        |
| ----------------- | ---------------------------- | ------- | ---------------------------------- |
| `IndicatorWidget` | `TSoftClassPtr<UUserWidget>` | `null`  | Soft reference to the widget class |

> **Required.** Without a widget class no indicator will be rendered. Soft references avoid hard loading the widget asset at startup.

***

### `UIndicatorAction_ProjectionMode`

Controls how the indicator's world position is projected to screen space. Allows separate modes for character and non-character actors.

| Property                     | Type                         | Default          | Description                                   |
| ---------------------------- | ---------------------------- | ---------------- | --------------------------------------------- |
| `ProjectionModeCharacter`    | `EActorCanvasProjectionMode` | `ComponentPoint` | Mode when the owning actor is an `ACharacter` |
| `ProjectionModeNonCharacter` | `EActorCanvasProjectionMode` | `ComponentPoint` | Mode for all other actor types                |

At activation, the action checks whether the owning actor is an `ACharacter` and applies the appropriate mode to `UIndicatorDescriptor::ProjectionMode`.

See the [Projection](/dante-docs/indicator-system-plugin/projection.md) page for full details on each mode.

***

### `UIndicatorAction_ClampToScreen`

Keeps indicators on screen even when their world target is off-screen. When clamped, the indicator slides to the nearest screen edge.

| Property         | Type   | Default | Description             |
| ---------------- | ------ | ------- | ----------------------- |
| `bClampToScreen` | `bool` | `false` | Enable/disable clamping |

Combine with `UIndicatorAction_ArrowStyle` to show a directional arrow when clamped.

***

### `UIndicatorAction_ArrowStyle`

Configures the edge arrow that appears when an indicator is clamped to the screen boundary.

| Property                  | Type          | Default         | Description                     |
| ------------------------- | ------------- | --------------- | ------------------------------- |
| `bShowClampToScreenArrow` | `bool`        | `false`         | Show arrow when clamped         |
| `ArrowBrush`              | `FSlateBrush` | *(empty brush)* | Slate brush for the arrow image |

> `bClampToScreen` must be `true` (via `UIndicatorAction_ClampToScreen`) for the arrow to appear. The arrow is rendered by `UIndicatorLayer::ArrowBrush` and rotates to point toward the off-screen target.

***

### `UIndicatorAction_SetAlign`

Controls the anchor point of the indicator widget relative to its projected screen position.

| Property                   | Type                   | Default         | Description      |
| -------------------------- | ---------------------- | --------------- | ---------------- |
| `EntryHorizontalAlignment` | `EHorizontalAlignment` | `HAlign_Center` | Horizontal pivot |
| `EntryVerticalAlignment`   | `EVerticalAlignment`   | `VAlign_Center` | Vertical pivot   |

Use `HAlign_Left` / `VAlign_Top` to place the widget's top-left corner at the projected point. The default `Center/Center` places the widget center at the projected point.

***

### `UIndicatorAction_OverrideDesiredSize`

Overrides the widget's natural desired size. Useful when working with bounding-box projection modes that sample the projected footprint.

| Property               | Type        | Default      | Description                    |
| ---------------------- | ----------- | ------------ | ------------------------------ |
| `bOverrideDesiredSize` | `bool`      | `false`      | Enable size override           |
| `DesiredSize`          | `FVector2D` | `(100, 100)` | Override size in screen pixels |

***

### `UIndicatorAction_BoundingBoxAnchor`

Sets the normalized anchor within the actor's 3D bounding box that the indicator tracks. Allows separate settings for characters vs. other actors.

| Property                        | Type      | Default             | Description                                     |
| ------------------------------- | --------- | ------------------- | ----------------------------------------------- |
| `BoundingBoxAnchorCharacter`    | `FVector` | `(0.5, 0.5, 1.0)`   | Anchor for `ACharacter` (top-center by default) |
| `BoundingBoxAnchorNonCharacter` | `FVector` | `(0.5, 0.5, 100.0)` | Anchor for non-characters                       |

Values are normalized: `(0,0,0)` = min corner, `(1,1,1)` = max corner, `(0.5,0.5,1.0)` = top-center horizontally.

> The Z component of `BoundingBoxAnchorNonCharacter` (`100.0`) is an intentional world-space offset — it places the indicator above props/static meshes by \~100 cm. Adjust to match your asset sizes.

***

### `UIndicatorAction_AutoRemoveWhenIndicatorComponentIsNull`

Registers a tick/check that automatically removes the indicator from `UIndicatorSubsystem` when the source actor's `UIndicatorManagerComponent` is destroyed (e.g., when the actor is killed and the component is removed before the actor fully despawns).

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

This is essential for indicators on actors that may not be immediately destroyed (e.g., ragdolls, VFX persisting after death).
