# Nest Node

## 🪆 NestNode Class

A node that runs another dialogue until it's complete.

> Namespace: `Esper.FeelSpeak.Graph`\
> Inherits from: `Node`\
> Type: `class`

***

### 📦 Fields

| Access   | Field           | Type            | Description                                                                      |
| -------- | --------------- | --------------- | -------------------------------------------------------------------------------- |
| `public` | `mode`          | `Mode`          | Controls the dialogue getter behaviour.                                          |
| `public` | `dialogue`      | `DialogueGraph` | The dialogue.                                                                    |
| `public` | `dialogueGroup` | `DialogueGroup` | The dialogue group.                                                              |
| `public` | `dialogueIndex` | `int`           | The current dialogue index. Relevant when the mode is set to Group or GroupLoop. |

***

### 🧰 Methods

| Access   | Method                   | Returns         | Description                                                                              |
| -------- | ------------------------ | --------------- | ---------------------------------------------------------------------------------------- |
| `public` | `NestNode(int, Vector2)` | -               | Constructor that initializes the node with ID and position.                              |
| `public` | `GetTargetName()`        | `string`        | Gets the name of the target dialogue or dialogue group based on the mode.                |
| `public` | `GetDialogueGraph()`     | `DialogueGraph` | Gets the dialogue based on the dialogue mode. This may also increment the dialogueIndex. |
| `public` | `IsComplete()`           | `bool`          | Checks if the node is complete and ready for execution.                                  |
| `public` | `CreateCopy()`           | `NestNode`      | Creates a copy of this node.                                                             |
| `public` | `InvokeEvent()`          | `void`          | Invokes the nest node triggered event.                                                   |

***

### 🧩 Nested Enums

`public enum Mode`

Dialogue behaviour modes.

| Value                    | Description                                                                                              |
| ------------------------ | -------------------------------------------------------------------------------------------------------- |
| `Single`                 | Only use a single unchanging dialogue.                                                                   |
| `Chronological`          | Use a group of dialogues and go through each one by one, then stay at the last one.                      |
| `ChronologicalAndRepeat` | Use a group of dialogues and go through each one by one, then repeat from the start after the final one. |
| `Random`                 | Always select a random dialogue from a group of dialogues.                                               |
