using UnityEngine; using System.Collections; using UnityEngine.UI; namespace CurvedUI { /// /// This script show you how to access the state of any button on Vive Controller via CurvedUI scripts. We use right controller as an example /// public class CUI_ViveButtonState : MonoBehaviour { enum ViveButton { Trigger, TouchpadTouch, TouchpadPress, Grip, Menu, } #pragma warning disable 414 // this is just so we wont get "unused variable" code warnings when compiling without Vive. [SerializeField] Color ActiveColor = Color.green; [SerializeField] Color InActiveColor = Color.gray; [SerializeField] ViveButton ShowStateFor = ViveButton.Trigger; #pragma warning restore 414 #if CURVEDUI_STEAMVR_LEGACY // Update is called once per frame void Update() { if(CurvedUIInputModule.Right == null) { Debug.LogError("Right controller not found - it may be off"); return; } bool pressed = false; switch (ShowStateFor) { case ViveButton.Trigger: { pressed = GetUsedController().IsTriggerPressed; break; } case ViveButton.TouchpadPress: { pressed = GetUsedController().IsTouchpadPressed; break; } case ViveButton.TouchpadTouch: { pressed = GetUsedController().IsTouchpadTouched; break; } case ViveButton.Grip: { pressed = GetUsedController().IsGripPressed; break; } case ViveButton.Menu: { pressed = GetUsedController().IsApplicationMenuPressed; break; } } this.GetComponentInChildren().color = pressed ? ActiveColor : InActiveColor; } CurvedUIViveController GetUsedController() { return CurvedUIInputModule.Instance.UsedHand == CurvedUIInputModule.Hand.Right ? CurvedUIInputModule.Right : CurvedUIInputModule.Left; } #endif } }