> For the complete documentation index, see [llms.txt](https://easy-event-manager.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://easy-event-manager.gitbook.io/documentation/implementation/getting-started.md).

# 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?
