51 lines
1.6 KiB
C#
51 lines
1.6 KiB
C#
// ENABLE_VR is not defined on Game Core but the assembly is available with limited features when the XR module is enabled.
|
|
#if UNITY_INPUT_SYSTEM_ENABLE_XR && (ENABLE_VR || UNITY_GAMECORE) || PACKAGE_DOCS_GENERATION
|
|
using System.Runtime.InteropServices;
|
|
using UnityEngine.InputSystem.LowLevel;
|
|
using UnityEngine.InputSystem.Utilities;
|
|
|
|
namespace UnityEngine.InputSystem.XR.Haptics
|
|
{
|
|
public struct HapticState
|
|
{
|
|
public HapticState(uint samplesQueued, uint samplesAvailable)
|
|
{
|
|
this.samplesQueued = samplesQueued;
|
|
this.samplesAvailable = samplesAvailable;
|
|
}
|
|
|
|
public uint samplesQueued { get; private set; }
|
|
public uint samplesAvailable { get; private set; }
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Explicit, Size = kSize)]
|
|
public struct GetCurrentHapticStateCommand : IInputDeviceCommandInfo
|
|
{
|
|
static FourCC Type => new FourCC('X', 'H', 'S', '0');
|
|
|
|
const int kSize = InputDeviceCommand.kBaseCommandSize + (sizeof(uint) * 2);
|
|
|
|
public FourCC typeStatic => Type;
|
|
|
|
[FieldOffset(0)]
|
|
InputDeviceCommand baseCommand;
|
|
|
|
[FieldOffset(InputDeviceCommand.kBaseCommandSize)]
|
|
public uint samplesQueued;
|
|
|
|
[FieldOffset(InputDeviceCommand.kBaseCommandSize + sizeof(int))]
|
|
public uint samplesAvailable;
|
|
|
|
public HapticState currentState => new HapticState(samplesQueued, samplesAvailable);
|
|
|
|
public static GetCurrentHapticStateCommand Create()
|
|
{
|
|
return new GetCurrentHapticStateCommand
|
|
{
|
|
baseCommand = new InputDeviceCommand(Type, kSize),
|
|
};
|
|
}
|
|
}
|
|
}
|
|
#endif
|