16 #region Public Members and Serialized Fields 18 [Header(
"Basic Settings")]
20 [Tooltip(
"Current State of the Button")]
28 get {
return buttonState; }
29 set { buttonState = value; }
33 [Tooltip(
"Filter for press info for click or press event")]
41 get {
return buttonPressFilter; }
42 set { buttonPressFilter = value; }
46 [Tooltip(
"If RequireGaze, then looking away will deselect object")]
47 private bool requireGaze =
true;
52 public bool RequireGaze
54 get {
return requireGaze; }
55 set { requireGaze = value; }
88 #endregion Public Members and Serialized Fields 90 #region Private and Protected Members 100 private bool lastHandVisible =
false;
105 private bool handVisible {
get {
return InputManager.
Instance.DetectedInputSources.Count > 0; } }
110 private bool focused =
false;
115 private bool isDisabled {
get {
return ButtonState ==
ButtonStateEnum.Disabled || !enabled; } }
117 #endregion Private and Protected Members 119 #region MonoBehaviour Functions 124 private void LateUpdate()
126 if (!isDisabled && lastHandVisible != handVisible)
128 OnHandVisibleChange(handVisible);
143 #endregion MonoBehaviour Functions 145 #region Input Interface Functions 283 #endregion Input Interface Functions 285 #region Button Functions 294 if (OnButtonPressed != null)
296 OnButtonPressed(gameObject);
313 if (OnButtonReleased != null)
315 OnButtonReleased(gameObject);
321 if (OnButtonClicked != null)
323 OnButtonClicked(gameObject);
332 if (OnButtonHeld != null)
334 OnButtonHeld(gameObject);
345 if (OnButtonCanceled != null)
347 OnButtonCanceled(gameObject);
357 lastHandVisible = visible;
390 OnStateChange(newState);
401 ButtonState = newState;
404 if (StateChange != null)
406 StateChange(newState);
410 #endregion Button Functions 412 #region Helper Functions 421 StartCoroutine(DelayedRelease(0.2f));
429 private IEnumerator DelayedRelease(
float delay)
431 yield
return new WaitForSeconds(delay);
436 private void ResetButtonState()
456 OnStateChange(newState);
459 #endregion Helper Functions