# Getting started

1. Open your object that you want to bind an event to and add the **EasyEventManagerInterface**.\ <br>

   <figure><img src="/files/wcPzLm9nzr8pmtgglZP3" alt=""><figcaption></figcaption></figure>

2. Recompile your Blueprint to be able to find the functions in the Right-Click Menu;<br>

   <figure><img src="/files/Wt9iYyvyIff6YjCdcybp" alt=""><figcaption><p>  </p></figcaption></figure>

   or implement it through the Interface panel on the left side:<br>

   <figure><img src="/files/MLMye8RcNqvBzIvmkJoV" alt=""><figcaption></figcaption></figure>

3. Now you are **ready** to bind an event by using either [**`BindEvent()`**](/documentation/functions/bind-event.md) or [**`BindEventTag()`**](/documentation/functions/bind-event.md)<br>

   <figure><img src="/files/TOpHbBbE5wIFNqmxVp0C" alt=""><figcaption><p>You can call <a href="/pages/KDG1ZdUjhyxsU3VZKS28"><strong>BindEvent()</strong></a> or <a href="/pages/3kxvVaMJjqzM0WwqiYzn"><strong>UnbindEvent()</strong></a> from anywhere!</p></figcaption></figure>

4. Implement the [**`OnEventCalled()`**](/documentation/functions/on-event-called.md) or [**`OnEventTagCalled()`**](/documentation/functions/on-event-called.md) function from the Interface<br>

   <figure><img src="/files/JJHysjDh4qskByftqpta" alt=""><figcaption></figcaption></figure>

And **that's it**! Now you can use [**`CallEvent()`**](/documentation/functions/call-event.md) or [**`CallEventTag()`**](/documentation/functions/call-event.md) anywhere you want, easy right?<br>

<figure><img src="/files/PYgKxoLNt7OBI7mnwsB3" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
This part is only for those who want to use it in C++!
{% endhint %}

## C++ Implementation

1. Implement the **`EasyEventManagerInterface`** to your c++ class

**Header file:**

```cpp
public IEasyEventManagerInterface
```

**Example:**

```cpp
class AMyActor : public AActor, public IEasyEventManagerInterface
{
}
```

2. Now you are **ready** to bind an event by using either [**`BindEvent()`**](/documentation/functions/bind-event.md) or [**`BindEventTag()`**](/documentation/functions/bind-event.md)

#### Cpp file:

```cpp
// For Tag usage
#include "GameplayTagsManager.h"

void AMyActor::BeginPlay()
{
  UEasyEventManagerLibrary::BindEvent(this, FName("MyEvent"), Object);
  // or for tags
  UEasyEventManagerLibrary::BindEventTag(this, UGameplayTagsManager::Get().RequestGameplayTag(FName("MyEventTag"), true), Object);
  
  // call parent function
  Super::BeginPlay();
}
```

{% hint style="info" %}
You can call [**BindEvent()**](/documentation/functions/bind-event.md) or [**UnbindEvent()**](/documentation/functions/unbind-event.md) from anywhere!
{% endhint %}

3. Implement the [**`OnEventCalled()`**](/documentation/functions/on-event-called.md) or [**`OnEventTagCalled()`**](/documentation/functions/on-event-called.md) function from the Interface

**Header file:**

```cpp
virtual void OnEventCalled_Implementation(FName Event, const FString& Message, UObject* Payload);
virtual void OnEventTagCalled_Implementation(FGameplayTag EventTag, const FString& Message, UObject* Payload);
```

**Cpp file:**

```cpp
void AMyActor::OnEventCalled_Implementation(FName Event, const FString& Message, UObject* Payload)
{
   //some code
}

void AMyActor::OnEventTagCalled_Implementation(FGameplayTag EventTag, const FString& Message, UObject* Payload)
{
   //some code
}
```

4. And **that's it**! Now you can use [**`CallEvent()`**](/documentation/functions/call-event.md) or [**`CallEventTag()`**](/documentation/functions/call-event.md) anywhere you want, easy right?


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://easy-event-manager.gitbook.io/documentation/implementation/getting-started.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
