# Emotes

When interacting with emotes in the ODK, the main asset to interact with is the `BPMC_ODK_EmotesComponent`. This is a component on the ODK morpheus player character `BPM_ODK_PlayerCharacterBase`.

### Defining Emotes

You can define an emote by creating a new PDA\_ODK\_Emote asset.<br>

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

**Emote Executor -** This is an instanced object in which you can configure your emote. The executor object itself will contain logic as to how an emote should behaive. This allows emotes to have varied and complex behaivour supporting things such as "feels" flipbook emotes and coop emotes.\
\
All emote executors must contain the following data.\
\
**DisplayName** - Display name used in UI\
**EmoteId** - Used to help unlock emotes via token ownership. The token metadata will specify the emote id that it represents ownership of.\
**Icon/IconUrl** - Icon used in UI, only one of these needs filling in.\
**Type** - An enum that lets code categorise emotes. Currently the types we support are: STANDARD and COOP.\
**AllowTraversal** - Whether the emotes should continue playing even if the player starts moving.

Currently, emotes come in three flavours: MONTAGE, COOP, FLIPBOOK or PICTURE. MONTAGE emotes simply play an animation on you player character. Coop emotes allow you to play animations synced with another player character. FLIPBOOK emotes allow the player to display a short 2D animation. PICTURE emotes allow the player to display a simple image. The way these are handled are very different. The emote executor allows for completely different behaviors to be executed by different emotes whilst being handled the same way in the reset of our logic.

### Starting and Stopping Emotes

`PlayEmote` and `CancelCurrentEmote` can be used to start and stop emotes regardless of whether they are standard or coop emotes.<br>


---

# 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://docs.otherside.xyz/odk-docs/odk-plugin/emotes.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.
