using System.Runtime.InteropServices; using UnityEngine.InputSystem.Utilities; namespace UnityEngine.InputSystem.LowLevel { /// <summary> /// Event that causes the state of an <see cref="InputDevice"/> to be reset (see <see cref="InputSystem.ResetDevice"/>). /// </summary> /// <seealso cref="InputSystem.ResetDevice"/> [StructLayout(LayoutKind.Explicit, Size = InputEvent.kBaseEventSize)] public struct DeviceResetEvent : IInputEventTypeInfo { public const int Type = 0x44525354; // DRST /// <summary> /// Common event data. /// </summary> [FieldOffset(0)] public InputEvent baseEvent; /// <summary> /// Whether to also reset <see cref="Layouts.InputControlAttribute.dontReset"/> controls. /// </summary> [FieldOffset(InputDeviceCommand.kBaseCommandSize)] public bool hardReset; public FourCC typeStatic => Type; public static DeviceResetEvent Create(int deviceId, bool hardReset = false, double time = -1) { var inputEvent = new DeviceResetEvent {baseEvent = new InputEvent(Type, InputEvent.kBaseEventSize, deviceId, time)}; inputEvent.hardReset = hardReset; return inputEvent; } } }