> For the complete documentation index, see [llms.txt](https://dmitriy-vergasov.gitbook.io/character_interaction_system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dmitriy-vergasov.gitbook.io/character_interaction_system/character-interaction-system/interaction-dataobject-class.md).

# Interaction DataObject Class

What is it?&#x20;

This is a utility class that serves as an interaction handler for interactive objects. An instance of this class is created at runtime for each **CISInteractionObject** component.&#x20;

You can override several virtual methods within it to customize the game's behavior at various moments of interaction with the object.&#x20;

Included with the plugin is one preconfigured object - **BP\_CISDataObjectExample**. It toggles the display of a widget above the interactive object and disables player input during interaction.&#x20;

You can configure this class in two ways. The first method is in the settings of the **CISCharacterInteraction** component.

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FppZ1vS59yoIIXx12AIeB%2Fimage.png?alt=media&amp;token=dc22b212-aa7b-4c59-befc-d2c358b5ead4" alt=""><figcaption></figcaption></figure></div>

The second method is in the settings for each **CISInteractionObject** component if you need to create specific behavior for individual interactive objects.

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FbzoVKV7HxOJITd7qZbnM%2Fimage.png?alt=media&amp;token=9a11d3a4-b926-4714-a646-f415bf78966f" alt=""><figcaption></figcaption></figure></div>

To create a new object of this class, simply create a blueprint that inherits from **CISInteractionDataObject**.

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FZQ1aAuuBUqhG3Hm5feZA%2Fimage.png?alt=media&amp;token=648f58a0-ee4a-4e9f-9914-058e37997941" alt=""><figcaption></figcaption></figure></div>

Now let's consider a specific case. For example, during the start of using an object and until it's finished, you want to disable player input.&#x20;

To achieve this, override the methods for the beginning and end of interaction with the object and implement the necessary logic.

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FyFfL5BBe3rPozylBrwTy%2Fimage.png?alt=media&amp;token=f5aef48f-03c4-4b8f-b984-fd1599f3f486" alt="" width="375"><figcaption></figcaption></figure></div>

List of all available methods for overriding:

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FaGDHPd5ReA99kTNMwSRx%2Fimage.png?alt=media&amp;token=8a914abb-36ad-4302-8aa6-bf2bed94c503" alt=""><figcaption><p>The object entered the character's overlap trigger.</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2F9XnfFZtataoGRljPmc7D%2Fimage.png?alt=media&amp;token=d851d4a4-cc3b-4215-be71-502f0df85fc6" alt=""><figcaption><p>Initialization occurs when the player first enters the object's zone.</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FaqBJG3JgZQcWbCJ1iDo5%2Fimage.png?alt=media&amp;token=b73199c5-9541-496f-9c8a-771b4d684101" alt=""><figcaption><p>The character started moving toward the object.</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FsQJtR7Q5IvdZtyIbDbeq%2Fimage.png?alt=media&amp;token=8d526ee4-89fb-4d8d-ac7a-0735a22005d1" alt=""><figcaption><p>The character has finished moving towards the object.</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2F8jria2pckUDePAXn7bEL%2Fimage.png?alt=media&amp;token=2d6cba42-9863-47b6-8b3c-b6c34490d581" alt=""><figcaption><p>The Action with the object has begun.</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FXb7PHpwVGD6eggcv05fY%2Fimage.png?alt=media&amp;token=4c7a067f-5ea2-4e17-b5c8-a4d79206520f" alt=""><figcaption><p>The character has started using the object</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2F0NdrpadAgTRZr6a064wI%2Fimage.png?alt=media&amp;token=0e285821-0d3e-4bf4-8c4d-373d58cd4f3a" alt=""><figcaption><p>The character has finished using the object.</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FviZcmIy50vHRp72QwJ5b%2Fimage.png?alt=media&amp;token=ba2c9742-e7b5-4d2e-bf98-c730a464a48e" alt=""><figcaption><p>When the object meets the VisibleConditions.</p></figcaption></figure></div>

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FrqFRy34xI5oj6tzVuW7t%2Fimage.png?alt=media&amp;token=00fe8dd9-3bff-488b-ae61-74b878383abb" alt=""><figcaption><p>When the object meets the UsableConditions.</p></figcaption></figure></div>
