53 lines
1.8 KiB
C#
53 lines
1.8 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using UnityEngine.InputSystem;
|
|
using UnityEngine.InputSystem.Layouts;
|
|
|
|
namespace Unity.RenderStreaming.InputSystem
|
|
{
|
|
// todo(kazuki)::Avoid to use reflection
|
|
static class InputDeviceExtension
|
|
{
|
|
private static Type typeInputDevice;
|
|
private static FieldInfo fieldInfoParticipantId;
|
|
private static FieldInfo fieldInfoDescription;
|
|
private static FieldInfo fieldInfoDeviceFlags;
|
|
|
|
static InputDeviceExtension()
|
|
{
|
|
typeInputDevice = typeof(InputDevice);
|
|
fieldInfoParticipantId = typeInputDevice.GetField("m_ParticipantId",
|
|
BindingFlags.NonPublic | BindingFlags.Instance);
|
|
fieldInfoDescription = typeInputDevice.GetField("m_Description",
|
|
BindingFlags.NonPublic | BindingFlags.Instance);
|
|
fieldInfoDeviceFlags = typeInputDevice.GetField("m_DeviceFlags",
|
|
BindingFlags.NonPublic | BindingFlags.Instance);
|
|
}
|
|
|
|
public static void SetParticipantId(this InputDevice device, int value)
|
|
{
|
|
fieldInfoParticipantId.SetValue(device, value);
|
|
}
|
|
|
|
public static int GetParticipantId(this InputDevice device)
|
|
{
|
|
return (int)fieldInfoParticipantId.GetValue(device);
|
|
}
|
|
|
|
public static void SetDescription(this InputDevice device, InputDeviceDescription value)
|
|
{
|
|
fieldInfoDescription.SetValue(device, value);
|
|
}
|
|
|
|
public static void SetDeviceFlags(this InputDevice device, int value)
|
|
{
|
|
fieldInfoDeviceFlags.SetValue(device, value);
|
|
}
|
|
public static int GetDeviceFlags(this InputDevice device)
|
|
{
|
|
return (int)fieldInfoDeviceFlags.GetValue(device);
|
|
}
|
|
}
|
|
}
|
|
// #endif
|