> 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/modular-input-system/blueprint-api.md).

# Blueprint API

All nodes live under the **Modular Input** category in the Blueprint action menu.

***

## Actor Shortcuts

For callers that hold an actor rather than the component: abilities, anim notifies, State Trees, widgets. Each finds the Modular Input Component on the actor, its controller or its pawn, and does nothing when there is none. **Target** defaults to *self*.

| Node                                                                                      | Returns                 | Description                                                                          |
| ----------------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------ |
| **Push Input Mode** `(Actor, Mode, Priority = 0)`                                         | Mode Handle             | Pushes a mode onto the component's stack.                                            |
| **Pop Input Mode** `(Actor, Handle)`                                                      | bool                    | Pops the entry the handle refers to and resets the handle.                           |
| **Consume Buffered Input** `(Actor, Input Tag, Max Age Seconds, Trigger Event = Started)` | bool, Out Event         | Takes the newest held event for the tag.                                             |
| **Was Input Pressed Recently** `(Actor, Input Tag, Within Seconds)`                       | bool                    | Press history for the exact tag.                                                     |
| **Open Buffer Window** `(Actor, Window Tag, Duration = 0)`                                |                         | Opens a window; zero or less keeps it open until closed.                             |
| **Close Buffer Window** `(Actor, Window Tag, Cancel = false)`                             |                         | Closes a window; **Cancel** closes it without picking or replaying.                  |
| **Find Component On Input Chain** `(Actor, Component Class)`                              | Component (typed)       | The first component of the class on the actor, its pawn, controller or player state. |
| **Find Input Component** `(Actor)`                                                        | Modular Input Component | The component on the actor, its controller or its pawn.                              |

***

## Wait For Input (Async)

```
Wait For Input (Actor = Self, Input Tag, Trigger Event = Started, Only Allowed = true, Only Once = true)
  ├─► On Input  (Event, Verdict)
  └─► On Failed (Event, Verdict)      the actor has no Modular Input Component
```

| Input             | Description                                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------------------ |
| **Input Tag**     | Waits for this tag or a child tag. Empty waits for any input.                                          |
| **Trigger Event** | *None* waits for any trigger event.                                                                    |
| **Only Allowed**  | Ignores events the gates blocked or held in the buffer.                                                |
| **Only Once**     | Stops after the first match; otherwise keeps firing until **Cancel** is called on the returned object. |

***

## Modular Input Component

### Modes

| Node                                               | Description                                   |
| -------------------------------------------------- | --------------------------------------------- |
| **Push Mode** `(Mode, Priority = 0)` → Mode Handle | Pushes a mode. Each push gets its own handle. |
| **Pop Mode** `(Handle)` → bool                     | Removes the entry and resets the handle.      |
| **Pop Mode By Asset** `(Mode)` → bool              | Removes the most recent entry of the mode.    |
| **Get Active Mode** → Input Mode                   | Top of the stack, or the default mode.        |
| **Is Mode On Stack** `(Mode)` → bool               |                                               |
| **Set Default Mode** `(Mode)`                      |                                               |

### Configs and binding

| Node                                                      | Description                                                |
| --------------------------------------------------------- | ---------------------------------------------------------- |
| **Add Input Config** / **Remove Input Config** `(Config)` | Changes the configs and rebinds if bound.                  |
| **Is Input Bound** → bool                                 | True while bindings are live on a local player controller. |
| **Get Bound Controller** → Player Controller              |                                                            |
| **Set Input Processing Enabled** `(Enabled)`              | Stops or resumes the whole pipeline.                       |
| **Is Input Processing Enabled** → bool                    |                                                            |

### Device

| Node                                                          | Description                                       |
| ------------------------------------------------------------- | ------------------------------------------------- |
| **Get Input Device Tag** → Gameplay Tag                       | `ModularInput.Device.*` for the device used last. |
| **Is Using Gamepad** / **Is Using Keyboard And Mouse** → bool |                                                   |

### Values

| Node                                                        | Description                                        |
| ----------------------------------------------------------- | -------------------------------------------------- |
| **Get Input Value** `(Input Tag)` → Input Action Value      | Live value; only for rows with **Track Value** on. |
| **Get Last Input Value** `(Input Tag)` → Input Action Value | Value of the most recent event for the tag.        |

### Buffer

| Node                                                                                                 | Description                             |
| ---------------------------------------------------------------------------------------------------- | --------------------------------------- |
| **Consume Buffered Input** `(Input Tag, Max Age Seconds, Trigger Event = Started)` → bool, Out Event | Takes the newest matching held event.   |
| **Consume Any Buffered Input** `(Accepted Inputs, Resolution, Max Age Seconds)` → bool, Out Event    | Takes the event the resolution picks.   |
| **Peek Buffered Input** `(Input Tag, Max Age Seconds, Trigger Event = Started)` → bool, Out Event    | Looks without taking.                   |
| **Was Pressed Recently** `(Input Tag, Within Seconds)` → bool                                        | Press history (Started).                |
| **Was Trigger Event Recent** `(Input Tag, Trigger Event, Within Seconds)` → bool                     | Press history for any trigger event.    |
| **Get Buffered Inputs** → array of Input Events                                                      | Oldest first.                           |
| **Clear Buffer**                                                                                     |                                         |
| **Set Buffer Capacity** `(New Capacity)`                                                             | Keeps the newest events that still fit. |

### Buffer windows

| Node                                                        | Description                                            |
| ----------------------------------------------------------- | ------------------------------------------------------ |
| **Open Buffer Window** `(Window Tag)`                       | Stays open until closed or cancelled.                  |
| **Open Buffer Window For Duration** `(Window Tag, Seconds)` | Closes itself after the duration.                      |
| **Close Buffer Window** `(Window Tag)`                      | Picks the winner and replays it if the window says so. |
| **Cancel Buffer Window** `(Window Tag)`                     | Closes without picking or replaying.                   |
| **Is Buffer Window Open** `(Window Tag)` → bool             |                                                        |

### Events and injection

| Node                                         | Description                                                          |
| -------------------------------------------- | -------------------------------------------------------------------- |
| **Broadcast Tag Event** `(Event Tag, Event)` | Fires **On Tag Event**.                                              |
| **Inject Input Event** `(Event)`             | Runs an event through the pipeline as if the player had produced it. |

### Event dispatchers

| Event                       | Parameters                           |
| --------------------------- | ------------------------------------ |
| **On Input Event**          | Event, Verdict                       |
| **On Tag Event**            | Event Tag, Event                     |
| **On Active Mode Changed**  | New Mode, Previous Mode              |
| **On Buffer Window Opened** | Window Tag                           |
| **On Buffer Window Closed** | Window Tag, Resolved, Resolved Event |
| **On Input Device Changed** | Device Tag, Previous Device Tag      |

***

## Writing Gates and Processors

### Available in every gate and processor

| Node                                   | Description                                                |
| -------------------------------------- | ---------------------------------------------------------- |
| **Get Input Action Value** `(Context)` | The event's value; converts to bool, float or vector pins. |

### Gates (`UMIPS_InputGate`)

| Node                                                  | Kind      | Description                                 |
| ----------------------------------------------------- | --------- | ------------------------------------------- |
| **Evaluate** `(Context)` → Gate Result                | Override  | Decide on the event. Default: allow.        |
| **Make Fail Result** `(Reason, Detail)` → Gate Result | Protected | A result with this gate's **Fail Verdict**. |

### Processors (`UMIPS_InputProcessor`)

| Node                                    | Kind      | Description                                                        |
| --------------------------------------- | --------- | ------------------------------------------------------------------ |
| **Should Handle** `(Context)` → bool    | Override  | Extra check after the filter. Default: true.                       |
| **Handle** `(Context)` → Handle Result  | Override  | Do the work. Default: not handled.                                 |
| **Make Handled Result** → Handle Result | Protected | *Handled*, or *Handled And Consumed* when **Consume Input** is on. |

### Library helpers

| Node                                                                                         | Description                                                   |
| -------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| **Get Owner Tags** `(Context)`                                                               | Owner tags as gates see them.                                 |
| **Get Context Owner** / **Get Context Pawn** / **Get Context Player Controller** `(Context)` | Actors around the component.                                  |
| **Find Context Component** `(Context, Component Class)`                                      | First component of the class along the owner chain, typed.    |
| **Make Allow Result** / **Make Block Result** / **Make Buffer Result**                       | Gate results; details are dropped in Shipping.                |
| **To String (Input Event)**                                                                  | One-line description; also an automatic conversion to string. |
| **Is Mode Handle Valid** `(Handle)`                                                          | True while the handle refers to a push.                       |

***

## Input Config

| Node                                               | Description |
| -------------------------------------------------- | ----------- |
| **Find Input Action** `(Input Tag)` → Input Action |             |
| **Find Input Tag** `(Action)` → Gameplay Tag       |             |

***

## Interfaces

| Interface                    | Function                                                               | Implement on                                             | Used by                            |
| ---------------------------- | ---------------------------------------------------------------------- | -------------------------------------------------------- | ---------------------------------- |
| **MIPS\_TagProvider**        | **Get Input Gate Tags** → Gameplay Tag Container                       | Pawn, controller, player state, or any component on them | Tag-based gates                    |
| **MIPS\_InputReceiver**      | **Handle Input Event** `(Event Tag, Context)` → bool                   | Same                                                     | **Call Input Receiver** processor  |
| **MIPS\_InputSetupProvider** | **Get Input Configs** → array, **Get Default Input Mode** → Input Mode | Pawn, or a component on it                               | Component on the player controller |

***

## Look Settings

| Node                                                                    | Description                                                            |
| ----------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| **Get Modular Input User Settings** `(Player Controller)`               | The player's settings, or nothing when another settings class is used. |
| **Is Look X Inverted** / **Is Look Y Inverted**                         |                                                                        |
| **Get Mouse Sensitivity** / **Get Gamepad Sensitivity** → Vector 2D     |                                                                        |
| **Set Look X Inverted** / **Set Look Y Inverted** `(Inverted)`          |                                                                        |
| **Set Mouse Sensitivity** / **Set Gamepad Sensitivity** `(Sensitivity)` | Clamped to 0.05 to 10 per axis.                                        |

View model nodes are listed in [Settings Screens & Key Prompts](/dante-docs/modular-input-system/core-concepts/settings-and-rebinding.md).

***

## Animation

| Asset                                       | Description                                                                                  |
| ------------------------------------------- | -------------------------------------------------------------------------------------------- |
| **Input Buffer Window** (anim notify state) | Keeps a buffer window open for the length of the notify. **Window Tag**, **Resolve On End**. |

***

## Next Steps
