using UnityEngine.InputSystem.Layouts; using UnityEngine.InputSystem.XR; using UnityEngine.Scripting; namespace UnityEngine.XR.OpenXR.Input { /// /// OpenXR Input System device /// /// [Preserve, InputControlLayout(displayName = "OpenXR Action Map")] public abstract class OpenXRDevice : UnityEngine.InputSystem.InputDevice { /// /// See [InputControl.FinishSetup](xref:UnityEngine.InputSystem.InputControl.FinishSetup) /// protected override void FinishSetup() { base.FinishSetup(); var capabilities = description.capabilities; var deviceDescriptor = XRDeviceDescriptor.FromJson(capabilities); if (deviceDescriptor != null) { #if UNITY_2019_3_OR_NEWER if ((deviceDescriptor.characteristics & InputDeviceCharacteristics.Left) != 0) InputSystem.InputSystem.SetDeviceUsage(this, InputSystem.CommonUsages.LeftHand); else if ((deviceDescriptor.characteristics & InputDeviceCharacteristics.Right) != 0) InputSystem.InputSystem.SetDeviceUsage(this, InputSystem.CommonUsages.RightHand); #else if (deviceDescriptor.deviceRole == InputDeviceRole.LeftHanded) InputSystem.SetDeviceUsage(this, CommonUsages.LeftHand); else if (deviceDescriptor.deviceRole == InputDeviceRole.RightHanded) InputSystem.SetDeviceUsage(this, CommonUsages.RightHand); #endif //UNITY_2019_3_OR_NEWER } } } }