{"_id":"594949e82be16d0026ec0533","category":{"_id":"594949e62be16d0026ec04d4","version":"594949e52be16d0026ec04cd","project":"571fa55ca0acd42000af9545","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2017-01-01T16:45:52.489Z","from_sync":false,"order":6,"slug":"interactions","title":"Interactions"},"project":"571fa55ca0acd42000af9545","parentDoc":null,"user":"571fa519db52d01700f5cf3d","version":{"_id":"594949e52be16d0026ec04cd","project":"571fa55ca0acd42000af9545","__v":2,"createdAt":"2017-06-20T16:14:29.816Z","releaseDate":"2017-06-20T16:14:29.816Z","categories":["594949e62be16d0026ec04ce","594949e62be16d0026ec04cf","594949e62be16d0026ec04d0","594949e62be16d0026ec04d1","594949e62be16d0026ec04d2","594949e62be16d0026ec04d3","594949e62be16d0026ec04d4","594949e62be16d0026ec04d5","594949e62be16d0026ec04d6","594949e62be16d0026ec04d7","594949e62be16d0026ec04d8","594949e62be16d0026ec04d9","594949e62be16d0026ec04da","594949e62be16d0026ec04db","594949e62be16d0026ec04dc","594949e62be16d0026ec04dd","594949e62be16d0026ec04de","594949e62be16d0026ec04df","594949e62be16d0026ec04e0","594949e62be16d0026ec04e1","59497219f4a8980024dd0631"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"Kunekune","version_clean":"3.2.0","version":"3.2.0"},"__v":0,"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-01-01T16:46:29.085Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":1,"body":"## Overview\n\nThe Controller Events script deals with events that the game controller is sending out.\n\nThe Controller Events script requires the Controller Mapper script on the same GameObject and provides event listeners for every button press on the controller (excluding the System Menu button as this cannot be overridden and is always used by Steam).\n\nWhen a controller button is pressed, the script emits an event to denote that the button has been pressed which allows other scripts to listen for this event without needing to implement any controller logic. When a controller button is released, the script also emits an event denoting that the button has been released.\n\nThe script also has a public boolean pressed state for the buttons to allow the script to be queried by other scripts to check if a button is being held down.\n\n## Inspector Parameters\n\n * **Axis Fidelity:** The amount of fidelity in the changes on the axis, which is defaulted to 1. Any number higher than 2 will probably give too sensitive results.\n * **Trigger Click Threshold:** The level on the trigger axis to reach before a click is registered.\n * **Trigger Force Zero Threshold:** The level on the trigger axis to reach before the axis is forced to 0f.\n * **Trigger Axis Zero On Untouch:** If this is checked then the trigger axis will be forced to 0f when the trigger button reports an untouch event.\n * **Grip Click Threshold:** The level on the grip axis to reach before a click is registered.\n * **Grip Force Zero Threshold:** The level on the grip axis to reach before the axis is forced to 0f.\n * **Grip Axis Zero On Untouch:** If this is checked then the grip axis will be forced to 0f when the grip button reports an untouch event.\n\n## Class Variables\n\n * `public enum ButtonAlias` - Button types\n  * `Undefined` - No button specified\n  * `TriggerHairline` - The trigger is squeezed past the current hairline threshold.\n  * `TriggerTouch` - The trigger is squeezed a small amount.\n  * `TriggerPress` - The trigger is squeezed about half way in.\n  * `TriggerClick` - The trigger is squeezed all the way down.\n  * `GripHairline` - The grip is squeezed past the current hairline threshold.\n  * `GripTouch` - The grip button is touched.\n  * `GripPress` - The grip button is pressed.\n  * `GripClick` - The grip button is pressed all the way down.\n  * `TouchpadTouch` - The touchpad is touched (without pressing down to click).\n  * `TouchpadPress` - The touchpad is pressed (to the point of hearing a click).\n  * `ButtonOneTouch` - The button one is touched.\n  * `ButtonOnePress` - The button one is pressed.\n  * `ButtonTwoTouch` - The button one is touched.\n  * `ButtonTwoPress` - The button one is pressed.\n  * `StartMenuPress` - The button one is pressed.\n * `public bool triggerPressed` - This will be true if the trigger is squeezed about half way in. Default: `false`\n * `public bool triggerTouched` - This will be true if the trigger is squeezed a small amount. Default: `false`\n * `public bool triggerHairlinePressed` - This will be true if the trigger is squeezed a small amount more from any previous squeeze on the trigger. Default: `false`\n * `public bool triggerClicked` - This will be true if the trigger is squeezed all the way down. Default: `false`\n * `public bool triggerAxisChanged` - This will be true if the trigger has been squeezed more or less. Default: `false`\n * `public bool gripPressed` - This will be true if the grip is squeezed about half way in. Default: `false`\n * `public bool gripTouched` - This will be true if the grip is touched. Default: `false`\n * `public bool gripHairlinePressed` - This will be true if the grip is squeezed a small amount more from any previous squeeze on the grip. Default: `false`\n * `public bool gripClicked` - This will be true if the grip is squeezed all the way down. Default: `false`\n * `public bool gripAxisChanged` - This will be true if the grip has been squeezed more or less. Default: `false`\n * `public bool touchpadPressed` - This will be true if the touchpad is held down. Default: `false`\n * `public bool touchpadTouched` - This will be true if the touchpad is being touched. Default: `false`\n * `public bool touchpadAxisChanged` - This will be true if the touchpad touch position has changed. Default: `false`\n * `public bool buttonOnePressed` - This will be true if button one is held down. Default: `false`\n * `public bool buttonOneTouched` - This will be true if button one is being touched. Default: `false`\n * `public bool buttonTwoPressed` - This will be true if button two is held down. Default: `false`\n * `public bool buttonTwoTouched` - This will be true if button two is being touched. Default: `false`\n * `public bool startMenuPressed` - This will be true if start menu is held down. Default: `false`\n * `public bool pointerPressed` - This will be true if the button aliased to the pointer is held down. Default: `false`\n * `public bool grabPressed` - This will be true if the button aliased to the grab is held down. Default: `false`\n * `public bool usePressed` - This will be true if the button aliased to the use is held down. Default: `false`\n * `public bool uiClickPressed` - This will be true if the button aliased to the UI click is held down. Default: `false`\n * `public bool menuPressed` - This will be true if the button aliased to the menu is held down. Default: `false`\n * `public bool controllerVisible` - This will be true if the controller model alias renderers are visible. Default: `true`\n\n## Class Events\n\n * `TriggerPressed` - Emitted when the trigger is squeezed about half way in.\n * `TriggerReleased` - Emitted when the trigger is released under half way.\n * `TriggerTouchStart` - Emitted when the trigger is squeezed a small amount.\n * `TriggerTouchEnd` - Emitted when the trigger is no longer being squeezed at all.\n * `TriggerHairlineStart` - Emitted when the trigger is squeezed past the current hairline threshold.\n * `TriggerHairlineEnd` - Emitted when the trigger is released past the current hairline threshold.\n * `TriggerClicked` - Emitted when the trigger is squeezed all the way down.\n * `TriggerUnclicked` - Emitted when the trigger is no longer being held all the way down.\n * `TriggerAxisChanged` - Emitted when the amount of squeeze on the trigger changes.\n * `GripPressed` - Emitted when the grip is squeezed about half way in.\n * `GripReleased` - Emitted when the grip is released under half way.\n * `GripTouchStart` - Emitted when the grip is squeezed a small amount.\n * `GripTouchEnd` - Emitted when the grip is no longer being squeezed at all.\n * `GripHairlineStart` - Emitted when the grip is squeezed past the current hairline threshold.\n * `GripHairlineEnd` - Emitted when the grip is released past the current hairline threshold.\n * `GripClicked` - Emitted when the grip is squeezed all the way down.\n * `GripUnclicked` - Emitted when the grip is no longer being held all the way down.\n * `GripAxisChanged` - Emitted when the amount of squeeze on the grip changes.\n * `TouchpadPressed` - Emitted when the touchpad is pressed (to the point of hearing a click).\n * `TouchpadReleased` - Emitted when the touchpad has been released after a pressed state.\n * `TouchpadTouchStart` - Emitted when the touchpad is touched (without pressing down to click).\n * `TouchpadTouchEnd` - Emitted when the touchpad is no longer being touched.\n * `TouchpadAxisChanged` - Emitted when the touchpad is being touched in a different location.\n * `ButtonOneTouchStart` - Emitted when button one is touched.\n * `ButtonOneTouchEnd` - Emitted when button one is no longer being touched.\n * `ButtonOnePressed` - Emitted when button one is pressed.\n * `ButtonOneReleased` - Emitted when button one is released.\n * `ButtonTwoTouchStart` - Emitted when button two is touched.\n * `ButtonTwoTouchEnd` - Emitted when button two is no longer being touched.\n * `ButtonTwoPressed` - Emitted when button two is pressed.\n * `ButtonTwoReleased` - Emitted when button two is released.\n * `StartMenuPressed` - Emitted when start menu is pressed.\n * `StartMenuReleased` - Emitted when start menu is released.\n * `AliasPointerOn` - Emitted when the pointer toggle alias button is pressed.\n * `AliasPointerOff` - Emitted when the pointer toggle alias button is released.\n * `AliasPointerSet` - Emitted when the pointer set alias button is released.\n * `AliasGrabOn` - Emitted when the grab toggle alias button is pressed.\n * `AliasGrabOff` - Emitted when the grab toggle alias button is released.\n * `AliasUseOn` - Emitted when the use toggle alias button is pressed.\n * `AliasUseOff` - Emitted when the use toggle alias button is released.\n * `AliasMenuOn` - Emitted when the menu toggle alias button is pressed.\n * `AliasMenuOff` - Emitted when the menu toggle alias button is released.\n * `AliasUIClickOn` - Emitted when the UI click alias button is pressed.\n * `AliasUIClickOff` - Emitted when the UI click alias button is released.\n * `ControllerEnabled` - Emitted when the controller is enabled.\n * `ControllerDisabled` - Emitted when the controller is disabled.\n * `ControllerIndexChanged` - Emitted when the controller index changed.\n * `ControllerVisible` - Emitted when the controller is set to visible.\n * `ControllerHidden` - Emitted when the controller is set to hidden.\n\n## Unity Events\n\nAdding the `VRTK_ControllerEvents_UnityEvents` component to `VRTK_ControllerEvents` object allows access to `UnityEvents` that will react identically to the Class Events.\n\n * All C# delegate events are mapped to a Unity Event with the `On` prefix. e.g. `MyEvent` -> `OnMyEvent`.\n\n## Event Payload\n\n * `VRTK_ControllerReference controllerReference` - The reference for the controller that was used.\n * `float buttonPressure` - The amount of pressure being applied to the button pressed. `0f` to `1f`.\n * `Vector2 touchpadAxis` - The position the touchpad is touched at. `(0,0)` to `(1,1)`.\n * `float touchpadAngle` - The rotational position the touchpad is being touched at, 0 being top, 180 being bottom and all other angles accordingly. `0f` to `360f`.\n\n## Class Methods\n\n### SetControllerEvent/0\n\n  > `public virtual ControllerInteractionEventArgs SetControllerEvent()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `ControllerInteractionEventArgs` - The payload for a Controller Event.\n\nThe SetControllerEvent/0 method is used to set the Controller Event payload.\n\n### SetControllerEvent/3\n\n  > `public virtual ControllerInteractionEventArgs SetControllerEvent(ref bool buttonBool, bool value = false, float buttonPressure = 0f)`\n\n  * Parameters\n   * `ref bool buttonBool` - The state of the pressed button if required.\n   * `bool value` - The value to set the buttonBool reference to.\n   * `float buttonPressure` - The pressure of the button pressed if required.\n  * Returns\n   * `ControllerInteractionEventArgs` - The payload for a Controller Event.\n\nThe SetControllerEvent/3 method is used to set the Controller Event payload.\n\n### GetTouchpadAxis/0\n\n  > `public virtual Vector2 GetTouchpadAxis()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `Vector2` - A 2 dimensional vector containing the x and y position of where the touchpad is being touched. `(0,0)` to `(1,1)`.\n\nThe GetTouchpadAxis method returns the coordinates of where the touchpad is being touched and can be used for directional input via the touchpad. The `x` value is the horizontal touch plane and the `y` value is the vertical touch plane.\n\n### GetTouchpadAxisAngle/0\n\n  > `public virtual float GetTouchpadAxisAngle()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `float` - A float representing the angle of where the touchpad is being touched. `0f` to `360f`.\n\nThe GetTouchpadAxisAngle method returns the angle of where the touchpad is currently being touched with the top of the touchpad being 0 degrees and the bottom of the touchpad being 180 degrees.\n\n### GetTriggerAxis/0\n\n  > `public virtual float GetTriggerAxis()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `float` - A float representing the amount of squeeze that is being applied to the trigger. `0f` to `1f`.\n\nThe GetTriggerAxis method returns a float that represents how much the trigger is being squeezed. This can be useful for using the trigger axis to perform high fidelity tasks or only activating the trigger press once it has exceeded a given press threshold.\n\n### GetGripAxis/0\n\n  > `public virtual float GetGripAxis()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `float` - A float representing the amount of squeeze that is being applied to the grip. `0f` to `1f`.\n\nThe GetGripAxis method returns a float that represents how much the grip is being squeezed. This can be useful for using the grip axis to perform high fidelity tasks or only activating the grip press once it has exceeded a given press threshold.\n\n### GetHairTriggerDelta/0\n\n  > `public virtual float GetHairTriggerDelta()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `float` - A float representing the difference in the trigger pressure from the hairline threshold start to current position.\n\nThe GetHairTriggerDelta method returns a float representing the difference in how much the trigger is being pressed in relation to the hairline threshold start.\n\n### GetHairGripDelta/0\n\n  > `public virtual float GetHairGripDelta()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `float` - A float representing the difference in the trigger pressure from the hairline threshold start to current position.\n\nThe GetHairTriggerDelta method returns a float representing the difference in how much the trigger is being pressed in relation to the hairline threshold start.\n\n### AnyButtonPressed/0\n\n  > `public virtual bool AnyButtonPressed()`\n\n  * Parameters\n   * _none_\n  * Returns\n   * `bool` - Is true if any of the controller buttons are currently being pressed.\n\nThe AnyButtonPressed method returns true if any of the controller buttons are being pressed and this can be useful to determine if an action can be taken whilst the user is using the controller.\n\n### IsButtonPressed/1\n\n  > `public virtual bool IsButtonPressed(ButtonAlias button)`\n\n  * Parameters\n   * `ButtonAlias button` - The button to check if it's being pressed.\n  * Returns\n   * `bool` - Is true if the button is being pressed.\n\nThe IsButtonPressed method takes a given button alias and returns a boolean whether that given button is currently being pressed or not.\n\n### SubscribeToButtonAliasEvent/3\n\n  > `public virtual void SubscribeToButtonAliasEvent(ButtonAlias givenButton, bool startEvent, ControllerInteractionEventHandler callbackMethod)`\n\n  * Parameters\n   * `ButtonAlias givenButton` - The ButtonAlias to register the event on.\n   * `bool startEvent` - If this is `true` then the start event related to the button is used (e.g. OnPress). If this is `false` then the end event related to the button is used (e.g. OnRelease).\n   * `ControllerInteractionEventHandler callbackMethod` - The method to subscribe to the event.\n  * Returns\n   * _none_\n\nThe SubscribeToButtonAliasEvent method makes it easier to subscribe to a button event on either the start or end action. Upon the event firing, the given callback method is executed.\n\n### UnsubscribeToButtonAliasEvent/3\n\n  > `public virtual void UnsubscribeToButtonAliasEvent(ButtonAlias givenButton, bool startEvent, ControllerInteractionEventHandler callbackMethod)`\n\n  * Parameters\n   * `ButtonAlias givenButton` - The ButtonAlias to unregister the event on.\n   * `bool startEvent` - If this is `true` then the start event related to the button is used (e.g. OnPress). If this is `false` then the end event related to the button is used (e.g. OnRelease).\n   * `ControllerInteractionEventHandler callbackMethod` - The method to unsubscribe from the event.\n  * Returns\n   * _none_\n\nThe UnsubscribeToButtonAliasEvent method makes it easier to unsubscribe to from button event on either the start or end action.\n\n## Example\n\n`VRTK/Examples/002_Controller_Events` shows how the events are utilised and listened to. The accompanying example script can be viewed in `VRTK/Examples/Resources/Scripts/VRTK_ControllerEvents_ListenerExample.cs`.","excerpt":"","slug":"vrtk_controllerevents","type":"basic","title":"VRTK_ControllerEvents"}

VRTK_ControllerEvents


## Overview The Controller Events script deals with events that the game controller is sending out. The Controller Events script requires the Controller Mapper script on the same GameObject and provides event listeners for every button press on the controller (excluding the System Menu button as this cannot be overridden and is always used by Steam). When a controller button is pressed, the script emits an event to denote that the button has been pressed which allows other scripts to listen for this event without needing to implement any controller logic. When a controller button is released, the script also emits an event denoting that the button has been released. The script also has a public boolean pressed state for the buttons to allow the script to be queried by other scripts to check if a button is being held down. ## Inspector Parameters * **Axis Fidelity:** The amount of fidelity in the changes on the axis, which is defaulted to 1. Any number higher than 2 will probably give too sensitive results. * **Trigger Click Threshold:** The level on the trigger axis to reach before a click is registered. * **Trigger Force Zero Threshold:** The level on the trigger axis to reach before the axis is forced to 0f. * **Trigger Axis Zero On Untouch:** If this is checked then the trigger axis will be forced to 0f when the trigger button reports an untouch event. * **Grip Click Threshold:** The level on the grip axis to reach before a click is registered. * **Grip Force Zero Threshold:** The level on the grip axis to reach before the axis is forced to 0f. * **Grip Axis Zero On Untouch:** If this is checked then the grip axis will be forced to 0f when the grip button reports an untouch event. ## Class Variables * `public enum ButtonAlias` - Button types * `Undefined` - No button specified * `TriggerHairline` - The trigger is squeezed past the current hairline threshold. * `TriggerTouch` - The trigger is squeezed a small amount. * `TriggerPress` - The trigger is squeezed about half way in. * `TriggerClick` - The trigger is squeezed all the way down. * `GripHairline` - The grip is squeezed past the current hairline threshold. * `GripTouch` - The grip button is touched. * `GripPress` - The grip button is pressed. * `GripClick` - The grip button is pressed all the way down. * `TouchpadTouch` - The touchpad is touched (without pressing down to click). * `TouchpadPress` - The touchpad is pressed (to the point of hearing a click). * `ButtonOneTouch` - The button one is touched. * `ButtonOnePress` - The button one is pressed. * `ButtonTwoTouch` - The button one is touched. * `ButtonTwoPress` - The button one is pressed. * `StartMenuPress` - The button one is pressed. * `public bool triggerPressed` - This will be true if the trigger is squeezed about half way in. Default: `false` * `public bool triggerTouched` - This will be true if the trigger is squeezed a small amount. Default: `false` * `public bool triggerHairlinePressed` - This will be true if the trigger is squeezed a small amount more from any previous squeeze on the trigger. Default: `false` * `public bool triggerClicked` - This will be true if the trigger is squeezed all the way down. Default: `false` * `public bool triggerAxisChanged` - This will be true if the trigger has been squeezed more or less. Default: `false` * `public bool gripPressed` - This will be true if the grip is squeezed about half way in. Default: `false` * `public bool gripTouched` - This will be true if the grip is touched. Default: `false` * `public bool gripHairlinePressed` - This will be true if the grip is squeezed a small amount more from any previous squeeze on the grip. Default: `false` * `public bool gripClicked` - This will be true if the grip is squeezed all the way down. Default: `false` * `public bool gripAxisChanged` - This will be true if the grip has been squeezed more or less. Default: `false` * `public bool touchpadPressed` - This will be true if the touchpad is held down. Default: `false` * `public bool touchpadTouched` - This will be true if the touchpad is being touched. Default: `false` * `public bool touchpadAxisChanged` - This will be true if the touchpad touch position has changed. Default: `false` * `public bool buttonOnePressed` - This will be true if button one is held down. Default: `false` * `public bool buttonOneTouched` - This will be true if button one is being touched. Default: `false` * `public bool buttonTwoPressed` - This will be true if button two is held down. Default: `false` * `public bool buttonTwoTouched` - This will be true if button two is being touched. Default: `false` * `public bool startMenuPressed` - This will be true if start menu is held down. Default: `false` * `public bool pointerPressed` - This will be true if the button aliased to the pointer is held down. Default: `false` * `public bool grabPressed` - This will be true if the button aliased to the grab is held down. Default: `false` * `public bool usePressed` - This will be true if the button aliased to the use is held down. Default: `false` * `public bool uiClickPressed` - This will be true if the button aliased to the UI click is held down. Default: `false` * `public bool menuPressed` - This will be true if the button aliased to the menu is held down. Default: `false` * `public bool controllerVisible` - This will be true if the controller model alias renderers are visible. Default: `true` ## Class Events * `TriggerPressed` - Emitted when the trigger is squeezed about half way in. * `TriggerReleased` - Emitted when the trigger is released under half way. * `TriggerTouchStart` - Emitted when the trigger is squeezed a small amount. * `TriggerTouchEnd` - Emitted when the trigger is no longer being squeezed at all. * `TriggerHairlineStart` - Emitted when the trigger is squeezed past the current hairline threshold. * `TriggerHairlineEnd` - Emitted when the trigger is released past the current hairline threshold. * `TriggerClicked` - Emitted when the trigger is squeezed all the way down. * `TriggerUnclicked` - Emitted when the trigger is no longer being held all the way down. * `TriggerAxisChanged` - Emitted when the amount of squeeze on the trigger changes. * `GripPressed` - Emitted when the grip is squeezed about half way in. * `GripReleased` - Emitted when the grip is released under half way. * `GripTouchStart` - Emitted when the grip is squeezed a small amount. * `GripTouchEnd` - Emitted when the grip is no longer being squeezed at all. * `GripHairlineStart` - Emitted when the grip is squeezed past the current hairline threshold. * `GripHairlineEnd` - Emitted when the grip is released past the current hairline threshold. * `GripClicked` - Emitted when the grip is squeezed all the way down. * `GripUnclicked` - Emitted when the grip is no longer being held all the way down. * `GripAxisChanged` - Emitted when the amount of squeeze on the grip changes. * `TouchpadPressed` - Emitted when the touchpad is pressed (to the point of hearing a click). * `TouchpadReleased` - Emitted when the touchpad has been released after a pressed state. * `TouchpadTouchStart` - Emitted when the touchpad is touched (without pressing down to click). * `TouchpadTouchEnd` - Emitted when the touchpad is no longer being touched. * `TouchpadAxisChanged` - Emitted when the touchpad is being touched in a different location. * `ButtonOneTouchStart` - Emitted when button one is touched. * `ButtonOneTouchEnd` - Emitted when button one is no longer being touched. * `ButtonOnePressed` - Emitted when button one is pressed. * `ButtonOneReleased` - Emitted when button one is released. * `ButtonTwoTouchStart` - Emitted when button two is touched. * `ButtonTwoTouchEnd` - Emitted when button two is no longer being touched. * `ButtonTwoPressed` - Emitted when button two is pressed. * `ButtonTwoReleased` - Emitted when button two is released. * `StartMenuPressed` - Emitted when start menu is pressed. * `StartMenuReleased` - Emitted when start menu is released. * `AliasPointerOn` - Emitted when the pointer toggle alias button is pressed. * `AliasPointerOff` - Emitted when the pointer toggle alias button is released. * `AliasPointerSet` - Emitted when the pointer set alias button is released. * `AliasGrabOn` - Emitted when the grab toggle alias button is pressed. * `AliasGrabOff` - Emitted when the grab toggle alias button is released. * `AliasUseOn` - Emitted when the use toggle alias button is pressed. * `AliasUseOff` - Emitted when the use toggle alias button is released. * `AliasMenuOn` - Emitted when the menu toggle alias button is pressed. * `AliasMenuOff` - Emitted when the menu toggle alias button is released. * `AliasUIClickOn` - Emitted when the UI click alias button is pressed. * `AliasUIClickOff` - Emitted when the UI click alias button is released. * `ControllerEnabled` - Emitted when the controller is enabled. * `ControllerDisabled` - Emitted when the controller is disabled. * `ControllerIndexChanged` - Emitted when the controller index changed. * `ControllerVisible` - Emitted when the controller is set to visible. * `ControllerHidden` - Emitted when the controller is set to hidden. ## Unity Events Adding the `VRTK_ControllerEvents_UnityEvents` component to `VRTK_ControllerEvents` object allows access to `UnityEvents` that will react identically to the Class Events. * All C# delegate events are mapped to a Unity Event with the `On` prefix. e.g. `MyEvent` -> `OnMyEvent`. ## Event Payload * `VRTK_ControllerReference controllerReference` - The reference for the controller that was used. * `float buttonPressure` - The amount of pressure being applied to the button pressed. `0f` to `1f`. * `Vector2 touchpadAxis` - The position the touchpad is touched at. `(0,0)` to `(1,1)`. * `float touchpadAngle` - The rotational position the touchpad is being touched at, 0 being top, 180 being bottom and all other angles accordingly. `0f` to `360f`. ## Class Methods ### SetControllerEvent/0 > `public virtual ControllerInteractionEventArgs SetControllerEvent()` * Parameters * _none_ * Returns * `ControllerInteractionEventArgs` - The payload for a Controller Event. The SetControllerEvent/0 method is used to set the Controller Event payload. ### SetControllerEvent/3 > `public virtual ControllerInteractionEventArgs SetControllerEvent(ref bool buttonBool, bool value = false, float buttonPressure = 0f)` * Parameters * `ref bool buttonBool` - The state of the pressed button if required. * `bool value` - The value to set the buttonBool reference to. * `float buttonPressure` - The pressure of the button pressed if required. * Returns * `ControllerInteractionEventArgs` - The payload for a Controller Event. The SetControllerEvent/3 method is used to set the Controller Event payload. ### GetTouchpadAxis/0 > `public virtual Vector2 GetTouchpadAxis()` * Parameters * _none_ * Returns * `Vector2` - A 2 dimensional vector containing the x and y position of where the touchpad is being touched. `(0,0)` to `(1,1)`. The GetTouchpadAxis method returns the coordinates of where the touchpad is being touched and can be used for directional input via the touchpad. The `x` value is the horizontal touch plane and the `y` value is the vertical touch plane. ### GetTouchpadAxisAngle/0 > `public virtual float GetTouchpadAxisAngle()` * Parameters * _none_ * Returns * `float` - A float representing the angle of where the touchpad is being touched. `0f` to `360f`. The GetTouchpadAxisAngle method returns the angle of where the touchpad is currently being touched with the top of the touchpad being 0 degrees and the bottom of the touchpad being 180 degrees. ### GetTriggerAxis/0 > `public virtual float GetTriggerAxis()` * Parameters * _none_ * Returns * `float` - A float representing the amount of squeeze that is being applied to the trigger. `0f` to `1f`. The GetTriggerAxis method returns a float that represents how much the trigger is being squeezed. This can be useful for using the trigger axis to perform high fidelity tasks or only activating the trigger press once it has exceeded a given press threshold. ### GetGripAxis/0 > `public virtual float GetGripAxis()` * Parameters * _none_ * Returns * `float` - A float representing the amount of squeeze that is being applied to the grip. `0f` to `1f`. The GetGripAxis method returns a float that represents how much the grip is being squeezed. This can be useful for using the grip axis to perform high fidelity tasks or only activating the grip press once it has exceeded a given press threshold. ### GetHairTriggerDelta/0 > `public virtual float GetHairTriggerDelta()` * Parameters * _none_ * Returns * `float` - A float representing the difference in the trigger pressure from the hairline threshold start to current position. The GetHairTriggerDelta method returns a float representing the difference in how much the trigger is being pressed in relation to the hairline threshold start. ### GetHairGripDelta/0 > `public virtual float GetHairGripDelta()` * Parameters * _none_ * Returns * `float` - A float representing the difference in the trigger pressure from the hairline threshold start to current position. The GetHairTriggerDelta method returns a float representing the difference in how much the trigger is being pressed in relation to the hairline threshold start. ### AnyButtonPressed/0 > `public virtual bool AnyButtonPressed()` * Parameters * _none_ * Returns * `bool` - Is true if any of the controller buttons are currently being pressed. The AnyButtonPressed method returns true if any of the controller buttons are being pressed and this can be useful to determine if an action can be taken whilst the user is using the controller. ### IsButtonPressed/1 > `public virtual bool IsButtonPressed(ButtonAlias button)` * Parameters * `ButtonAlias button` - The button to check if it's being pressed. * Returns * `bool` - Is true if the button is being pressed. The IsButtonPressed method takes a given button alias and returns a boolean whether that given button is currently being pressed or not. ### SubscribeToButtonAliasEvent/3 > `public virtual void SubscribeToButtonAliasEvent(ButtonAlias givenButton, bool startEvent, ControllerInteractionEventHandler callbackMethod)` * Parameters * `ButtonAlias givenButton` - The ButtonAlias to register the event on. * `bool startEvent` - If this is `true` then the start event related to the button is used (e.g. OnPress). If this is `false` then the end event related to the button is used (e.g. OnRelease). * `ControllerInteractionEventHandler callbackMethod` - The method to subscribe to the event. * Returns * _none_ The SubscribeToButtonAliasEvent method makes it easier to subscribe to a button event on either the start or end action. Upon the event firing, the given callback method is executed. ### UnsubscribeToButtonAliasEvent/3 > `public virtual void UnsubscribeToButtonAliasEvent(ButtonAlias givenButton, bool startEvent, ControllerInteractionEventHandler callbackMethod)` * Parameters * `ButtonAlias givenButton` - The ButtonAlias to unregister the event on. * `bool startEvent` - If this is `true` then the start event related to the button is used (e.g. OnPress). If this is `false` then the end event related to the button is used (e.g. OnRelease). * `ControllerInteractionEventHandler callbackMethod` - The method to unsubscribe from the event. * Returns * _none_ The UnsubscribeToButtonAliasEvent method makes it easier to unsubscribe to from button event on either the start or end action. ## Example `VRTK/Examples/002_Controller_Events` shows how the events are utilised and listened to. The accompanying example script can be viewed in `VRTK/Examples/Resources/Scripts/VRTK_ControllerEvents_ListenerExample.cs`.