45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
|
using System;
|
||
|
using System.Runtime.InteropServices;
|
||
|
using UnityEngine.InputSystem.Utilities;
|
||
|
|
||
|
////TODO: remove this one; superseded by QueryPairedUserAccountCommand
|
||
|
|
||
|
namespace UnityEngine.InputSystem.LowLevel
|
||
|
{
|
||
|
[StructLayout(LayoutKind.Explicit, Size = kSize)]
|
||
|
internal unsafe struct QueryUserIdCommand : IInputDeviceCommandInfo
|
||
|
{
|
||
|
public static FourCC Type { get { return new FourCC('U', 'S', 'E', 'R'); } }
|
||
|
|
||
|
public const int kMaxIdLength = 256;
|
||
|
internal const int kSize = InputDeviceCommand.kBaseCommandSize + kMaxIdLength * 2;
|
||
|
|
||
|
[FieldOffset(0)]
|
||
|
public InputDeviceCommand baseCommand;
|
||
|
|
||
|
[FieldOffset(InputDeviceCommand.kBaseCommandSize)]
|
||
|
public fixed byte idBuffer[kMaxIdLength * 2];
|
||
|
|
||
|
public string ReadId()
|
||
|
{
|
||
|
fixed(QueryUserIdCommand * thisPtr = &this)
|
||
|
{
|
||
|
return StringHelpers.ReadStringFromBuffer(new IntPtr(thisPtr->idBuffer), kMaxIdLength);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public FourCC typeStatic
|
||
|
{
|
||
|
get { return Type; }
|
||
|
}
|
||
|
|
||
|
public static QueryUserIdCommand Create()
|
||
|
{
|
||
|
return new QueryUserIdCommand
|
||
|
{
|
||
|
baseCommand = new InputDeviceCommand(Type, kSize),
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
}
|