> For the complete documentation index, see [llms.txt](https://jorge-jgnz94.gitbook.io/hptk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jorge-jgnz94.gitbook.io/hptk/master/modules/contact-detection/contactable.md).

# Contactable

![](https://2698598769-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MYpeL-Cll-FXMj9b3XC-887967055%2Fuploads%2FK2O2QccaKc4BnmDId9JG%2Fcontactable.png?alt=media\&token=5e4300eb-cb9b-44d2-a9d9-f2c6333ff688)

## Introduction

Contactable component is the component with which ContactDetection interacts. Contactable component acts as a View as it only exposes properties and events that are safe to be accessed by any other object in the scene. However, it is not an HPTK module as it has no business logic or behaviour (Controller) and, therefore, it does not need variables to control that behaviour (Model).

ContactableView requires to be attached to a Pheasy object.

## Variables

#### Read Only

* **IsEntered:** Is this object entered by at least 1 ContactDetection module?
* **IsTouched:** Is this object touched by at least 1 ContactDetection module?
* **IsGrasped:** Is this object grasped by at least 1 ContactDetection module?
* **Contacts:** List of ContactViews from all ContactDetection modules interacting with this object.
* **Contacts Display:** List of contact names for debugging purposes.&#x20;

#### Events

* **On First Enter:** Invoked when the number of `CotactView.contacts` of type *Entered* changes from 0 to 1.
* **On Enter:** Invoked when the number of `CotactView.contacts` of type *Entered* increments by one.
* **On First Touch:** Invoked when the number of `CotactView.contacts` of type *Touched* changes from 0 to 1.
* **On Touch:** Invoked when the number of `CotactView.contacts` of type *Touched* increments by one.
* **On First Grasp:** Invoked when the number of `CotactView.contacts` of type *Grasped* changes from 0 to 1.
* **On Grasp:** Invoked when the number of `CotactView.contacts` of type *Grasped* increments by one.
* **On Ungrasp:** Invoked when the number of `CotactView.contacts` of type *Grasped* decreases by one.
* **On Last Ungrasp:** Invoked when the number of `CotactView.contacts` of type *Grasped* changes from >1 to 0.
* **On Untouch:** Invoked when the number of `CotactView.contacts` of type *Touched* decreases by one.
* **On Last Untouch:** Invoked when the number of `CotactView.contacts` of type *Touched* changes from >1 to 0.
* **On Exit:** Invoked when the number of `CotactView.contacts` of type *Entered* decreases by one.
* **On Last Exit:** Invoked when the number of `CotactView.contacts` of type *Entered* changes from >1 to 0.
