> For the complete documentation index, see [llms.txt](https://frytinhass-organization.gitbook.io/universal-interaction-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://frytinhass-organization.gitbook.io/universal-interaction-system/getting-start.md).

# Getting Start

After download the plugin, check if the plugin is enabled.

<figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2F5beqEHrMe6bbMloTZP3p%2Fimage.png?alt=media&amp;token=b83449a2-f5c7-4028-aed8-e2288682692a" alt=""><figcaption></figcaption></figure>

## 🧍Configuring Character

After making sure the plugin is activated, you need add ***Interactor*** Component to your character.

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2FzoDzJajCrV30tJrUlHrT%2Fimage.png?alt=media&amp;token=704aa909-fb1b-43a6-85f2-540b210be58b" alt="" width="210"><figcaption></figcaption></figure></div>

You can edit ***Interactor*** settings in **Details** tab

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2Fi99oCW88tM6H2BFzVHhv%2Fimage.png?alt=media&amp;token=48143263-f154-43bd-ab36-c222cf01275d" alt="" width="344"><figcaption></figcaption></figure></div>

> ***Interaction Active***
>
> Change this variable on the server to modify whether this player can use UIS

> ***Trace Type***
>
> Explore tags in "UIS.Mode" section. You can create new game tags in this section and use here, just override "CustomTrace" function to use ;)&#x20;
>
> Default Tags are:&#x20;
>
> <pre><code>1. UIS.Mode.Proximity
>
> /* You need to follow the process at the end of this page */
> <strong>2. UIS.Mode.ScreenCenter 
> </strong></code></pre>

> ***Trace Distance***
>
> If you are using ***TraceType*** = ScreenCenter, this is the distance of the trace from the center of the screen forward.&#x20;
>
> If you are using ***TraceType*** = Proximity, this is the radius of the detection sphere
>
> If you are using ***TraceType*** = Custom, you can use this variable as you wish.

> ***Trace Detection Channel***
>
> Defines the collision profile of the trace, both sphere and line (You can use this on your Custom Trace Mode)

> ***Debug***
>
> Enable this setting if you want to see Traces and detailed information about the UIS system.

> ***Trace Time***
>
> Define delay between detection traces

***

## 🧊Configuring Interactables

Create a actor and add ***Interactable*** Component to him.

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2FvIn692J4q7neZ2SNZZHE%2Fimage.png?alt=media&amp;token=2d56205c-828c-4ed5-b63b-6c0671c7d7bd" alt="" width="213"><figcaption></figcaption></figure></div>

You can edit ***Interactable*** settings in **Details** tab

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2FBr4wex0VQh7PIknmv1CJ%2Fimage.png?alt=media&amp;token=156439e7-afa7-4fe6-aee7-b5a297a13a04" alt="" width="341"><figcaption></figcaption></figure></div>

> ***Can Interact***
>
> Determine if you can interact with the ***Interactable***

> ***Disable on Interact***
>
> Check this if you want the interaction to be disabled after a valid interaction.

> ***Need Hold***
>
> Check this if you want the player to have to hold the interact button for a certain time until the interaction is performed.

> ***Hold Target Value***
>
> Determine how long the player needs to hold the interaction button for the interaction to complete.
>
> * Only used if ***NeedHold*** is true

> ***Name***
>
> The name of the ***Interactable*** that will appear in the Widget

> ***Tooltip***
>
> A brief description of the ***Interactable*** that will appear in the Widget

The ***Interactable*** component is a child of the **Widget Component** and comes with the default interaction widget, but you can change that in **Widget Class** property.

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2F7W1Tkl11rF4Y407Hk5Wk%2Fimage.png?alt=media&amp;token=df1e1ded-de55-446c-8afa-4a97411263a3" alt="" width="340"><figcaption></figcaption></figure></div>

{% hint style="info" %}
If you are using a child Widget of ***BaseInteractionHolder***, use ***InteractableReference*** to get a pointer to your ***Interactable*** component.
{% endhint %}

***

To determine the Interaction Events, simply scroll down the **Details** tab until you find **Events**

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2FnaA4yqYKuCBPCUagSEpr%2Fimage.png?alt=media&amp;token=e2dbd6ed-2a45-41d3-a4e3-1d512d3b5b07" alt=""><figcaption></figcaption></figure></div>

> ***On Interact***\
> It is called when the player successfully completes an interaction.

> ***On Start Detection***
>
> It is called when player start detect actor

> ***On End Detection***
>
> It is called when player stop detect actor

On Interact is called on the Server by default, so you can add other RPC Events, such as a Multicast event.<br>

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2F8mNKWhiHc43c1lVb687i%2Fimage.png?alt=media&amp;token=b8010b1e-e917-44d6-9744-92895665cf1a" alt=""><figcaption></figcaption></figure></div>

***

{% hint style="warning" %}
The [Getting Start](/universal-interaction-system/getting-start.md) end here.\
Below process is only necessary if you are using the "Screen Center" detection mode.
{% endhint %}

Add UIS Interface to your character.

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2FIsHagVl3ZXWMB7ThvuOP%2Fimage.png?alt=media&amp;token=2b49ee1b-e07b-4d08-8c15-0d52d9845503" alt=""><figcaption></figcaption></figure></div>

Override ***GetStartLocationAndEndLocation*** function&#x20;

<div align="left"><figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2F1IxnE5LzkbzXeM0NHqhy%2Fimage.png?alt=media&amp;token=4bbe1b1a-c512-4a20-a8e5-09b5bf6a38c8" alt=""><figcaption></figcaption></figure></div>

Start location need be equal camera location | End location need be equal to camera forward vector

<figure><img src="https://703575886-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEvVA0wYmDo53UvoVgelW%2Fuploads%2FnShecOUgeoQ5jPuocROF%2Fimage.png?alt=media&amp;token=fe7c25db-8b75-4ab5-a05f-fde86904a372" alt=""><figcaption></figcaption></figure>
