UI 자동화를 위해 바인딩 기능 구현
- 유니티 에셋 인증 오류로 meta 재생성
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN || UNITY_WSA
|
||||
using System.Runtime.InteropServices;
|
||||
using UnityEngine.InputSystem.Layouts;
|
||||
using UnityEngine.InputSystem.LowLevel;
|
||||
using UnityEngine.InputSystem.XInput.LowLevel;
|
||||
using UnityEngine.InputSystem.Utilities;
|
||||
using UnityEngine.Scripting;
|
||||
|
||||
namespace UnityEngine.InputSystem.XInput.LowLevel
|
||||
{
|
||||
// IMPORTANT: State layout is XINPUT_GAMEPAD
|
||||
[StructLayout(LayoutKind.Explicit, Size = 4)]
|
||||
internal struct XInputControllerWindowsState : IInputStateTypeInfo
|
||||
{
|
||||
public FourCC format => new FourCC('X', 'I', 'N', 'P');
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1027:MarkEnumsWithFlags", Justification = "False positive")]
|
||||
public enum Button
|
||||
{
|
||||
DPadUp = 0,
|
||||
DPadDown = 1,
|
||||
DPadLeft = 2,
|
||||
DPadRight = 3,
|
||||
Start = 4,
|
||||
Select = 5,
|
||||
LeftThumbstickPress = 6,
|
||||
RightThumbstickPress = 7,
|
||||
LeftShoulder = 8,
|
||||
RightShoulder = 9,
|
||||
A = 12,
|
||||
B = 13,
|
||||
X = 14,
|
||||
Y = 15,
|
||||
}
|
||||
|
||||
[InputControl(name = "dpad", layout = "Dpad", sizeInBits = 4, bit = 0)]
|
||||
[InputControl(name = "dpad/up", bit = (uint)Button.DPadUp)]
|
||||
[InputControl(name = "dpad/down", bit = (uint)Button.DPadDown)]
|
||||
[InputControl(name = "dpad/left", bit = (uint)Button.DPadLeft)]
|
||||
[InputControl(name = "dpad/right", bit = (uint)Button.DPadRight)]
|
||||
[InputControl(name = "start", bit = (uint)Button.Start, displayName = "Start")]
|
||||
[InputControl(name = "select", bit = (uint)Button.Select, displayName = "Select")]
|
||||
[InputControl(name = "leftStickPress", bit = (uint)Button.LeftThumbstickPress)]
|
||||
[InputControl(name = "rightStickPress", bit = (uint)Button.RightThumbstickPress)]
|
||||
[InputControl(name = "leftShoulder", bit = (uint)Button.LeftShoulder)]
|
||||
[InputControl(name = "rightShoulder", bit = (uint)Button.RightShoulder)]
|
||||
[InputControl(name = "buttonSouth", bit = (uint)Button.A, displayName = "A")]
|
||||
[InputControl(name = "buttonEast", bit = (uint)Button.B, displayName = "B")]
|
||||
[InputControl(name = "buttonWest", bit = (uint)Button.X, displayName = "X")]
|
||||
[InputControl(name = "buttonNorth", bit = (uint)Button.Y, displayName = "Y")]
|
||||
|
||||
[FieldOffset(0)]
|
||||
public ushort buttons;
|
||||
|
||||
[InputControl(name = "leftTrigger", format = "BYTE")]
|
||||
[FieldOffset(2)] public byte leftTrigger;
|
||||
[InputControl(name = "rightTrigger", format = "BYTE")]
|
||||
[FieldOffset(3)] public byte rightTrigger;
|
||||
|
||||
[InputControl(name = "leftStick", layout = "Stick", format = "VC2S")]
|
||||
[InputControl(name = "leftStick/x", offset = 0, format = "SHRT", parameters = "clamp=false,invert=false,normalize=false")]
|
||||
[InputControl(name = "leftStick/left", offset = 0, format = "SHRT")]
|
||||
[InputControl(name = "leftStick/right", offset = 0, format = "SHRT")]
|
||||
[InputControl(name = "leftStick/y", offset = 2, format = "SHRT", parameters = "clamp=false,invert=false,normalize=false")]
|
||||
[InputControl(name = "leftStick/up", offset = 2, format = "SHRT")]
|
||||
[InputControl(name = "leftStick/down", offset = 2, format = "SHRT")]
|
||||
[FieldOffset(4)] public short leftStickX;
|
||||
[FieldOffset(6)] public short leftStickY;
|
||||
|
||||
[InputControl(name = "rightStick", layout = "Stick", format = "VC2S")]
|
||||
[InputControl(name = "rightStick/x", offset = 0, format = "SHRT", parameters = "clamp=false,invert=false,normalize=false")]
|
||||
[InputControl(name = "rightStick/left", offset = 0, format = "SHRT")]
|
||||
[InputControl(name = "rightStick/right", offset = 0, format = "SHRT")]
|
||||
[InputControl(name = "rightStick/y", offset = 2, format = "SHRT", parameters = "clamp=false,invert=false,normalize=false")]
|
||||
[InputControl(name = "rightStick/up", offset = 2, format = "SHRT")]
|
||||
[InputControl(name = "rightStick/down", offset = 2, format = "SHRT")]
|
||||
[FieldOffset(8)] public short rightStickX;
|
||||
[FieldOffset(10)] public short rightStickY;
|
||||
|
||||
public XInputControllerWindowsState WithButton(Button button)
|
||||
{
|
||||
Debug.Assert((int)button < 16, $"Expected button < 16, so we fit into the 16 bit wide bitmask");
|
||||
buttons |= (ushort)(1U << (int)button);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace UnityEngine.InputSystem.XInput
|
||||
{
|
||||
/// <summary>
|
||||
/// An <see cref="XInputController"/> compatible game controller connected to a Windows desktop machine.
|
||||
/// </summary>
|
||||
[InputControlLayout(stateType = typeof(XInputControllerWindowsState), hideInUI = true)]
|
||||
public class XInputControllerWindows : XInputController
|
||||
{
|
||||
}
|
||||
}
|
||||
#endif // UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN || UNITY_WSA
|
||||
Reference in New Issue
Block a user