VR4Medical/ICI/Library/PackageCache/com.unity.xr.openxr@3903c1059bcf/Runtime/input/OpenXRDevice.cs
2025-07-29 13:45:50 +03:00

41 lines
1.6 KiB
C#

using UnityEngine.InputSystem.Layouts;
using UnityEngine.InputSystem.XR;
using UnityEngine.Scripting;
namespace UnityEngine.XR.OpenXR.Input
{
/// <summary>
/// OpenXR Input System device
/// </summary>
/// <seealso cref="UnityEngine.InputSystem.InputDevice"/>
[Preserve, InputControlLayout(displayName = "OpenXR Action Map")]
public abstract class OpenXRDevice : UnityEngine.InputSystem.InputDevice
{
/// <summary>
/// See [InputControl.FinishSetup](xref:UnityEngine.InputSystem.InputControl.FinishSetup)
/// </summary>
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
}
}
}
}