# Command Director

{% hint style="success" %}

#### Like what your seeing?

Support us as a [GitHub Sponsor](https://kb.heathen.group/old-kb/where-to-buy/become-a-sponsor) and get instant access to all our assets, exclusive tools and assets, escalated support and issue tracking and our gratitude.\
\
These articles are made possible by our [GitHub Sponsors](https://kb.heathen.group/old-kb/where-to-buy/become-a-sponsor) ... become a sponsor today!
{% endhint %}

## Introduction

{% hint style="info" %}
Part of the [Command System](https://kb.heathen.group/old-kb/toolkit-for-ui-and-ux/unity/learning/core-concepts/command-system) of the UX Foundation and UX Compelete assets
{% endhint %}

Changes the configured Default State for the Cursor system.

## Events

### evtCommandFound

Occurs when a command is found in parsed text and provides a refernce to the found command.

You would add a listener on this event via theUnity inspector as you would for other Unity events or in code such as:

Assuming a handler in the form of

```csharp
private void HandleEvent(CommandData command)
{
}
```

Then you would register the event such as:

```csharp
commandDirector.evtCommandFound.AddListener(HandleEvent);
```

When you no longer need this handler you should remove it for example when the behviour using it is destroyed

```csharp
void OnDestroy()
{
    commandDirector.evtCommandFound.RemoveListener(HandleEvent);
}
```

## Fields and Attributes

### Library

```csharp
public CommandLibrary library;
```

A reference to the [command library](https://kb.heathen.group/old-kb/toolkit-for-ui-and-ux/unity/objects/command-library) to be used

### UserOnly

```csharp
public BoolReference userOnly;
```

Should this directory handle user only commands

## Methods

### ParseInput

Parses an input string and raises the command found event as required. This is most offten used with UI integrations such as a player console or chat box.

```csharp
public void ParseInput(string value);
```

### ParseCommand

Parses an input string and returns the command data found. This is a more direct solution and doesn't trigger the evtCommandFound. You will need to handle the [CommandData ](https://kb.heathen.group/old-kb/toolkit-for-ui-and-ux/unity/objects/command-data)your self.

```csharp
public CommandData ParseCommand(string value);
```
