using System.Runtime.InteropServices; using UnityEngine.InputSystem.Utilities; namespace UnityEngine.InputSystem.LowLevel { /// <summary> /// Notifies about the removal of an input device. /// </summary> /// <remarks> /// Device that got removed is the one identified by <see cref="InputEvent.deviceId"/> /// of <see cref="baseEvent"/>. /// </remarks> [StructLayout(LayoutKind.Explicit, Size = InputEvent.kBaseEventSize)] public struct DeviceRemoveEvent : IInputEventTypeInfo { public const int Type = 0x4452454D; /// <summary> /// Common event data. /// </summary> [FieldOffset(0)] public InputEvent baseEvent; public FourCC typeStatic => Type; public unsafe InputEventPtr ToEventPtr() { fixed(DeviceRemoveEvent * ptr = &this) { return new InputEventPtr((InputEvent*)ptr); } } public static DeviceRemoveEvent Create(int deviceId, double time = -1) { var inputEvent = new DeviceRemoveEvent {baseEvent = new InputEvent(Type, InputEvent.kBaseEventSize, deviceId, time)}; return inputEvent; } } }