> 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/visible-usable-conditions.md).

# Visible/Usable conditions

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FsOedtRamjxPMelKwCxOk%2Fimage.png?alt=media&amp;token=15eeea63-2165-45bb-bd5f-e8eced866138" alt=""><figcaption></figcaption></figure></div>

Each **CISInteractableObject** component has similar settings. These settings contain condition classes for the object's usability. Essentially, you can start using the object ONLY if all **Visible** and **Usable** conditions are met. However, you can also split certain logic into stages when only one or the second group of conditions is fulfilled.

In the future, you can use the change of Visible/Usable states for your logic; you can see an example in **BP\_CISDataObjectExample**.

Let's consider how it works with a specific example.

\
You want an interaction icon to appear over your interactive object from a certain distance, for instance, a filled circle, but the object should still not be interactive. It should become interactive only within 200 units; then, the circle will become hollow, and then it will be possible to interact with it.

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FB1R6j4vev31bBidLjJpw%2Fbandicam%202023-10-29%2016-32-50-928.gif?alt=media&amp;token=605bb91e-564d-4c9c-8621-2acc420fb335" alt=""><figcaption></figcaption></figure></div>

How to do this?&#x20;

In this case, let’s leave **VisibleConditions** empty because we don’t need additional conditions besides the initial value of InteractionDistance with the object.

For **UsableConditions**, let’s add the condition **BP\_InteractionObjectConditionDistanceCheckExample** and set the radius to 200 units.

<figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FbOy544skWqUlXuKSj2XD%2Fimage.png?alt=media&amp;token=47371edc-4bba-47a7-a1e6-821abe0d2401" alt=""><figcaption></figcaption></figure>

This way, interaction with the object will only be available when the character approaches it closely enough.

In the second example - now you want the initial circle in the Visible zone not to show if there are obstacles between you and the object.&#x20;

For this, in **VisibleConditions**, you should add the condition **BP\_InteractionObjectConditionTraceExample**.

<figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FJJ52osGEHIFxmgUnK6Mh%2Fimage.png?alt=media&amp;token=2333a0bd-c5a7-494e-97ee-031cf296f1b9" alt=""><figcaption></figcaption></figure>

Thus, if there are other objects between the character and the object, you will not be able to see or interact with the object.

<div align="left"><figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FYzwhdNBmOHGIAuj2QNrm%2Fbandicam%202023-10-29%2016-40-44-084.gif?alt=media&amp;token=1049e7a8-98ef-48b6-9cfe-fd1197cbdbdf" alt=""><figcaption><p>Result</p></figcaption></figure></div>

<figure><img src="https://103152989-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F29yzWK4hGQ2PluXn73VV%2Fuploads%2FeJESpWIlE8YoodIAg1EE%2Fimage.png?alt=media&amp;token=e54b1c60-8066-444e-90c9-7c99a52108d4" alt=""><figcaption><p>Example of Implementing a Condition with Tracing</p></figcaption></figure>
