From 534c14abe8c60179d1ebf626bf9420de11d08638 Mon Sep 17 00:00:00 2001 From: Natsumi Date: Sun, 18 Apr 2021 01:31:40 +1200 Subject: [PATCH] OpenVR SDK v1.16.8 --- OpenVR/openvr_api.cs | 72 +- OpenVR/win32/openvr_api.dll | Bin 621520 -> 620760 bytes OpenVR/win64/openvr_api.dll | Bin 819664 -> 818904 bytes VRCX.csproj | 5 +- openvr_api.cs | 8172 ----------------------------------- 5 files changed, 64 insertions(+), 8185 deletions(-) delete mode 100644 openvr_api.cs diff --git a/OpenVR/openvr_api.cs b/OpenVR/openvr_api.cs index 178724e9..4732b62e 100644 --- a/OpenVR/openvr_api.cs +++ b/OpenVR/openvr_api.cs @@ -731,7 +731,7 @@ public struct IVRCompositor internal _GetCurrentFadeColor GetCurrentFadeColor; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _FadeGrid(float fSeconds, bool bFadeIn); + internal delegate void _FadeGrid(float fSeconds, bool bFadeGridIn); [MarshalAs(UnmanagedType.FunctionPtr)] internal _FadeGrid FadeGrid; @@ -1120,6 +1120,11 @@ public struct IVROverlay [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetOverlayTransformCursor GetOverlayTransformCursor; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVROverlayError _SetOverlayTransformProjection(ulong ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform, ref VROverlayProjection_t pProjection, EVREye eEye); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _SetOverlayTransformProjection SetOverlayTransformProjection; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVROverlayError _ShowOverlay(ulong ulOverlayHandle); [MarshalAs(UnmanagedType.FunctionPtr)] @@ -2899,9 +2904,9 @@ public class CVRCompositor HmdColor_t result = FnTable.GetCurrentFadeColor(bBackground); return result; } - public void FadeGrid(float fSeconds,bool bFadeIn) + public void FadeGrid(float fSeconds,bool bFadeGridIn) { - FnTable.FadeGrid(fSeconds,bFadeIn); + FnTable.FadeGrid(fSeconds,bFadeGridIn); } public float GetCurrentGridAlpha() { @@ -3310,6 +3315,11 @@ public class CVROverlay EVROverlayError result = FnTable.GetOverlayTransformCursor(ulOverlayHandle,ref pvHotspot); return result; } + public EVROverlayError SetOverlayTransformProjection(ulong ulOverlayHandle,ETrackingUniverseOrigin eTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform,ref VROverlayProjection_t pProjection,EVREye eEye) + { + EVROverlayError result = FnTable.SetOverlayTransformProjection(ulOverlayHandle,eTrackingOrigin,ref pmatTrackingOriginToOverlayTransform,ref pProjection,eEye); + return result; + } public EVROverlayError ShowOverlay(ulong ulOverlayHandle) { EVROverlayError result = FnTable.ShowOverlay(ulOverlayHandle); @@ -4704,9 +4714,13 @@ public enum ETrackedDeviceProperty Prop_DisplaySupportsAnalogGain_Bool = 2085, Prop_DisplayMinAnalogGain_Float = 2086, Prop_DisplayMaxAnalogGain_Float = 2087, + Prop_CameraExposureTime_Float = 2088, + Prop_CameraGlobalGain_Float = 2089, Prop_DashboardScale_Float = 2091, Prop_IpdUIRangeMinMeters_Float = 2100, Prop_IpdUIRangeMaxMeters_Float = 2101, + Prop_Hmd_SupportsHDCP14LegacyCompat_Bool = 2102, + Prop_Hmd_SupportsMicMonitoring_Bool = 2103, Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, @@ -4801,6 +4815,8 @@ public enum EVRSubmitFlags Submit_TextureWithDepth = 16, Submit_FrameDiscontinuty = 32, Submit_VulkanTextureWithArrayData = 64, + Submit_GlArrayTexture = 128, + Submit_Reserved2 = 32768, } public enum EVRState { @@ -5153,8 +5169,11 @@ public enum EVRApplicationType VRApplication_SteamWatchdog = 6, VRApplication_Bootstrapper = 7, VRApplication_WebHelper = 8, - VRApplication_OpenXR = 9, - VRApplication_Max = 10, + VRApplication_OpenXRInstance = 9, + VRApplication_OpenXRScene = 10, + VRApplication_OpenXROverlay = 11, + VRApplication_Prism = 12, + VRApplication_Max = 13, } public enum EVRFirmwareError { @@ -5234,6 +5253,15 @@ public enum EVRInitError Init_FailedForVrMonitor = 144, Init_PropertyManagerInitFailed = 145, Init_WebServerFailed = 146, + Init_IllegalTypeTransition = 147, + Init_MismatchedRuntimes = 148, + Init_InvalidProcessId = 149, + Init_VRServiceStartupFailed = 150, + Init_PrismNeedsNewDrivers = 151, + Init_PrismStartupTimedOut = 152, + Init_CouldNotStartPrism = 153, + Init_CreateDriverDirectDeviceFailed = 154, + Init_PrismExitedUnexpectedly = 155, Driver_Failed = 200, Driver_Unknown = 201, Driver_HmdUnknown = 202, @@ -5349,6 +5377,9 @@ public enum EVRInitError Compositor_CreateOverlayInvalidCall = 488, Compositor_CreateOverlayAlreadyInitialized = 489, Compositor_FailedToCreateMailbox = 490, + Compositor_WindowInterfaceIsNull = 491, + Compositor_SystemLayerCreateInstance = 492, + Compositor_SystemLayerCreateSession = 493, VendorSpecific_UnableToConnectToOculusRuntime = 1000, VendorSpecific_WindowsNotInDevMode = 1001, VendorSpecific_HmdFound_CantOpenDevice = 1101, @@ -5466,6 +5497,7 @@ public enum EVRApplicationError PropertyNotSet = 201, UnknownProperty = 202, InvalidParameter = 203, + NotImplemented = 300, } public enum EVRApplicationProperty { @@ -5556,6 +5588,7 @@ public enum VROverlayTransformType VROverlayTransform_DashboardTab = 5, VROverlayTransform_DashboardThumb = 6, VROverlayTransform_Mountable = 7, + VROverlayTransform_Projection = 8, } public enum VROverlayFlags { @@ -5949,6 +5982,11 @@ public enum EBlockQueueReadType public HmdVector2_t vTopLeft; public HmdVector2_t vBottomRight; } +[StructLayout(LayoutKind.Sequential)] public struct VRBoneTransform_t +{ + public HmdVector4_t position; + public HmdQuaternionf_t orientation; +} [StructLayout(LayoutKind.Sequential)] public struct DistortionCoordinates_t { public float rfRed0; //float[2] @@ -6079,6 +6117,7 @@ public enum EBlockQueueReadType { public ulong overlayHandle; public ulong devicePath; + public ulong memoryBlockId; } [StructLayout(LayoutKind.Sequential)] public struct VREvent_Status_t { @@ -6301,11 +6340,6 @@ public enum EBlockQueueReadType unpacked.rAxis4 = this.rAxis4; } } -[StructLayout(LayoutKind.Sequential)] public struct VRBoneTransform_t -{ - public HmdVector4_t position; - public HmdQuaternionf_t orientation; -} [StructLayout(LayoutKind.Sequential)] public struct CameraVideoStreamFrameHeader_t { public EVRTrackedCameraFrameType eFrameType; @@ -6433,6 +6467,13 @@ public enum EBlockQueueReadType public EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType; public VROverlayIntersectionMaskPrimitive_Data_t m_Primitive; } +[StructLayout(LayoutKind.Sequential)] public struct VROverlayProjection_t +{ + public float fLeft; + public float fRight; + public float fTop; + public float fBottom; +} [StructLayout(LayoutKind.Sequential)] public struct VROverlayView_t { public ulong overlayHandle; @@ -7519,12 +7560,12 @@ public class OpenVR public const string IVRApplications_Version = "IVRApplications_007"; public const string IVRChaperone_Version = "IVRChaperone_004"; public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_006"; - public const string IVRCompositor_Version = "IVRCompositor_026"; + public const string IVRCompositor_Version = "IVRCompositor_027"; public const uint k_unVROverlayMaxKeyLength = 128; public const uint k_unVROverlayMaxNameLength = 128; public const uint k_unMaxOverlayCount = 128; public const uint k_unMaxOverlayIntersectionMaskPrimitivesCount = 32; - public const string IVROverlay_Version = "IVROverlay_024"; + public const string IVROverlay_Version = "IVROverlay_025"; public const string IVROverlayView_Version = "IVROverlayView_003"; public const uint k_unHeadsetViewMaxWidth = 3840; public const uint k_unHeadsetViewMaxHeight = 2160; @@ -7559,6 +7600,7 @@ public class OpenVR public const string k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; public const string k_pch_SteamVR_TrackingLossColor_String = "trackingLossColor"; public const string k_pch_SteamVR_ShowStage_Bool = "showStage"; + public const string k_pch_SteamVR_DrawTrackingReferences_Bool = "drawTrackingReferences"; public const string k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; public const string k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers"; public const string k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees"; @@ -7569,6 +7611,8 @@ public class OpenVR public const string k_pch_SteamVR_MaxRecommendedResolution_Int32 = "maxRecommendedResolution"; public const string k_pch_SteamVR_MotionSmoothing_Bool = "motionSmoothing"; public const string k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; + public const string k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; + public const string k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; public const string k_pch_SteamVR_DisableAsyncReprojection_Bool = "disableAsync"; public const string k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; public const string k_pch_SteamVR_DefaultMirrorView_Int32 = "mirrorView"; @@ -7611,6 +7655,8 @@ public class OpenVR public const string k_pch_SteamVR_OverlayRenderQuality = "overlayRenderQuality_2"; public const string k_pch_SteamVR_BlockOculusSDKOnOpenVRLaunchOption_Bool = "blockOculusSDKOnOpenVRLaunchOption"; public const string k_pch_SteamVR_BlockOculusSDKOnAllLaunches_Bool = "blockOculusSDKOnAllLaunches"; + public const string k_pch_SteamVR_HDCPLegacyCompatibility_Bool = "hdcp14legacyCompatibility"; + public const string k_pch_SteamVR_UsePrism_Bool = "usePrism"; public const string k_pch_DirectMode_Section = "direct_mode"; public const string k_pch_DirectMode_Enable_Bool = "enable"; public const string k_pch_DirectMode_Count_Int32 = "count"; @@ -7703,6 +7749,7 @@ public class OpenVR public const string k_pch_audio_LastHmdPlaybackDeviceId_String = "lastHmdPlaybackDeviceId"; public const string k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; public const string k_pch_audio_DualSpeakerAndJackOutput_Bool = "dualSpeakerAndJackOutput"; + public const string k_pch_audio_MuteMicMonitor_Bool = "muteMicMonitor"; public const string k_pch_Power_Section = "power"; public const string k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; public const string k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; @@ -7716,6 +7763,7 @@ public class OpenVR public const string k_pch_Dashboard_Position = "position"; public const string k_pch_Dashboard_DesktopScale = "desktopScale"; public const string k_pch_Dashboard_DashboardScale = "dashboardScale"; + public const string k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; public const string k_pch_modelskin_Section = "modelskins"; public const string k_pch_Driver_Enable_Bool = "enable"; public const string k_pch_Driver_BlockedBySafemode_Bool = "blocked_by_safe_mode"; diff --git a/OpenVR/win32/openvr_api.dll b/OpenVR/win32/openvr_api.dll index 2c79942b05aeb4dab3d0de3aa034400aa2958376..6e423e6cdd206bec98d72c9556d3c92aa36522aa 100644 GIT binary patch delta 151715 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 z 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 CzS7tL delta 152645 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�!#P&q?v_9 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 z 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 delta 189720 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 diff --git a/VRCX.csproj b/VRCX.csproj index fcd5cac0..b1e71cd2 100644 --- a/VRCX.csproj +++ b/VRCX.csproj @@ -102,6 +102,7 @@ + @@ -119,7 +120,6 @@ MainForm.cs - @@ -213,4 +213,7 @@ + + xcopy /y "$(ProjectDir)OpenVR\win64\openvr_api.dll" . + \ No newline at end of file diff --git a/openvr_api.cs b/openvr_api.cs deleted file mode 100644 index 178724e9..00000000 --- a/openvr_api.cs +++ /dev/null @@ -1,8172 +0,0 @@ -//======= Copyright (c) Valve Corporation, All rights reserved. =============== -// -// Purpose: This file contains C#/managed code bindings for the OpenVR interfaces -// This file is auto-generated, do not edit it. -// -//============================================================================= -#if !OPENVR_XR_API - -using System; -using System.Runtime.InteropServices; -using Valve.VR; - -#if UNITY_5_3_OR_NEWER -using UnityEngine; -#endif - -namespace Valve.VR -{ - -[StructLayout(LayoutKind.Sequential)] -public struct IVRSystem -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetRecommendedRenderTargetSize(ref uint pnWidth, ref uint pnHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRecommendedRenderTargetSize GetRecommendedRenderTargetSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HmdMatrix44_t _GetProjectionMatrix(EVREye eEye, float fNearZ, float fFarZ); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetProjectionMatrix GetProjectionMatrix; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetProjectionRaw(EVREye eEye, ref float pfLeft, ref float pfRight, ref float pfTop, ref float pfBottom); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetProjectionRaw GetProjectionRaw; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ComputeDistortion(EVREye eEye, float fU, float fV, ref DistortionCoordinates_t pDistortionCoordinates); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ComputeDistortion ComputeDistortion; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HmdMatrix34_t _GetEyeToHeadTransform(EVREye eEye); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetEyeToHeadTransform GetEyeToHeadTransform; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetTimeSinceLastVsync(ref float pfSecondsSinceLastVsync, ref ulong pulFrameCounter); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetTimeSinceLastVsync GetTimeSinceLastVsync; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate int _GetD3D9AdapterIndex(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetD3D9AdapterIndex GetD3D9AdapterIndex; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetDXGIOutputInfo(ref int pnAdapterIndex); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDXGIOutputInfo GetDXGIOutputInfo; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetOutputDevice(ref ulong pnDevice, ETextureType textureType, IntPtr pInstance); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOutputDevice GetOutputDevice; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsDisplayOnDesktop(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsDisplayOnDesktop IsDisplayOnDesktop; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _SetDisplayVisibility(bool bIsVisibleOnDesktop); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetDisplayVisibility SetDisplayVisibility; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin eOrigin, float fPredictedSecondsToPhotonsFromNow, [In, Out] TrackedDevicePose_t[] pTrackedDevicePoseArray, uint unTrackedDevicePoseArrayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDeviceToAbsoluteTrackingPose GetDeviceToAbsoluteTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HmdMatrix34_t _GetSeatedZeroPoseToStandingAbsoluteTrackingPose(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSeatedZeroPoseToStandingAbsoluteTrackingPose GetSeatedZeroPoseToStandingAbsoluteTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HmdMatrix34_t _GetRawZeroPoseToStandingAbsoluteTrackingPose(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRawZeroPoseToStandingAbsoluteTrackingPose GetRawZeroPoseToStandingAbsoluteTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetSortedTrackedDeviceIndicesOfClass(ETrackedDeviceClass eTrackedDeviceClass, [In, Out] uint[] punTrackedDeviceIndexArray, uint unTrackedDeviceIndexArrayCount, uint unRelativeToTrackedDeviceIndex); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSortedTrackedDeviceIndicesOfClass GetSortedTrackedDeviceIndicesOfClass; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EDeviceActivityLevel _GetTrackedDeviceActivityLevel(uint unDeviceId); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetTrackedDeviceActivityLevel GetTrackedDeviceActivityLevel; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ApplyTransform(ref TrackedDevicePose_t pOutputPose, ref TrackedDevicePose_t pTrackedDevicePose, ref HmdMatrix34_t pTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ApplyTransform ApplyTransform; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole unDeviceType); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetTrackedDeviceIndexForControllerRole GetTrackedDeviceIndexForControllerRole; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedControllerRole _GetControllerRoleForTrackedDeviceIndex(uint unDeviceIndex); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetControllerRoleForTrackedDeviceIndex GetControllerRoleForTrackedDeviceIndex; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedDeviceClass _GetTrackedDeviceClass(uint unDeviceIndex); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetTrackedDeviceClass GetTrackedDeviceClass; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsTrackedDeviceConnected(uint unDeviceIndex); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsTrackedDeviceConnected IsTrackedDeviceConnected; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetBoolTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBoolTrackedDeviceProperty GetBoolTrackedDeviceProperty; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate float _GetFloatTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetFloatTrackedDeviceProperty GetFloatTrackedDeviceProperty; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate int _GetInt32TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetInt32TrackedDeviceProperty GetInt32TrackedDeviceProperty; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ulong _GetUint64TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetUint64TrackedDeviceProperty GetUint64TrackedDeviceProperty; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HmdMatrix34_t _GetMatrix34TrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, ref ETrackedPropertyError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetMatrix34TrackedDeviceProperty GetMatrix34TrackedDeviceProperty; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetArrayTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, uint propType, IntPtr pBuffer, uint unBufferSize, ref ETrackedPropertyError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetArrayTrackedDeviceProperty GetArrayTrackedDeviceProperty; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetStringTrackedDeviceProperty(uint unDeviceIndex, ETrackedDeviceProperty prop, System.Text.StringBuilder pchValue, uint unBufferSize, ref ETrackedPropertyError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetStringTrackedDeviceProperty GetStringTrackedDeviceProperty; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetPropErrorNameFromEnum(ETrackedPropertyError error); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPropErrorNameFromEnum GetPropErrorNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _PollNextEvent(ref VREvent_t pEvent, uint uncbVREvent); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PollNextEvent PollNextEvent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _PollNextEventWithPose(ETrackingUniverseOrigin eOrigin, ref VREvent_t pEvent, uint uncbVREvent, ref TrackedDevicePose_t pTrackedDevicePose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PollNextEventWithPose PollNextEventWithPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetEventTypeNameFromEnum(EVREventType eType); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetEventTypeNameFromEnum GetEventTypeNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HiddenAreaMesh_t _GetHiddenAreaMesh(EVREye eEye, EHiddenAreaMeshType type); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetHiddenAreaMesh GetHiddenAreaMesh; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetControllerState(uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, uint unControllerStateSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetControllerState GetControllerState; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin, uint unControllerDeviceIndex, ref VRControllerState_t pControllerState, uint unControllerStateSize, ref TrackedDevicePose_t pTrackedDevicePose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetControllerStateWithPose GetControllerStateWithPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _TriggerHapticPulse(uint unControllerDeviceIndex, uint unAxisId, ushort usDurationMicroSec); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _TriggerHapticPulse TriggerHapticPulse; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetButtonIdNameFromEnum(EVRButtonId eButtonId); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetButtonIdNameFromEnum GetButtonIdNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetControllerAxisTypeNameFromEnum GetControllerAxisTypeNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsInputAvailable(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsInputAvailable IsInputAvailable; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsSteamVRDrawingControllers(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsSteamVRDrawingControllers IsSteamVRDrawingControllers; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ShouldApplicationPause(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShouldApplicationPause ShouldApplicationPause; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ShouldApplicationReduceRenderingWork(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShouldApplicationReduceRenderingWork ShouldApplicationReduceRenderingWork; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRFirmwareError _PerformFirmwareUpdate(uint unDeviceIndex); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PerformFirmwareUpdate PerformFirmwareUpdate; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _AcknowledgeQuit_Exiting(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _AcknowledgeQuit_Exiting AcknowledgeQuit_Exiting; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetAppContainerFilePaths(System.Text.StringBuilder pchBuffer, uint unBufferSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetAppContainerFilePaths GetAppContainerFilePaths; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetRuntimeVersion(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRuntimeVersion GetRuntimeVersion; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRExtendedDisplay -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetWindowBounds(ref int pnX, ref int pnY, ref uint pnWidth, ref uint pnHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetWindowBounds GetWindowBounds; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetEyeOutputViewport(EVREye eEye, ref uint pnX, ref uint pnY, ref uint pnWidth, ref uint pnHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetEyeOutputViewport GetEyeOutputViewport; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetDXGIOutputInfo(ref int pnAdapterIndex, ref int pnAdapterOutputIndex); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDXGIOutputInfo GetDXGIOutputInfo; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRTrackedCamera -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCameraErrorNameFromEnum GetCameraErrorNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _HasCamera(uint nDeviceIndex, ref bool pHasCamera); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HasCamera HasCamera; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _GetCameraFrameSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref uint pnWidth, ref uint pnHeight, ref uint pnFrameBufferSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCameraFrameSize GetCameraFrameSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _GetCameraIntrinsics(uint nDeviceIndex, uint nCameraIndex, EVRTrackedCameraFrameType eFrameType, ref HmdVector2_t pFocalLength, ref HmdVector2_t pCenter); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCameraIntrinsics GetCameraIntrinsics; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _GetCameraProjection(uint nDeviceIndex, uint nCameraIndex, EVRTrackedCameraFrameType eFrameType, float flZNear, float flZFar, ref HmdMatrix44_t pProjection); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCameraProjection GetCameraProjection; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _AcquireVideoStreamingService(uint nDeviceIndex, ref ulong pHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _AcquireVideoStreamingService AcquireVideoStreamingService; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _ReleaseVideoStreamingService(ulong hTrackedCamera); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseVideoStreamingService ReleaseVideoStreamingService; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _GetVideoStreamFrameBuffer(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pFrameBuffer, uint nFrameBufferSize, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetVideoStreamFrameBuffer GetVideoStreamFrameBuffer; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _GetVideoStreamTextureSize(uint nDeviceIndex, EVRTrackedCameraFrameType eFrameType, ref VRTextureBounds_t pTextureBounds, ref uint pnWidth, ref uint pnHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetVideoStreamTextureSize GetVideoStreamTextureSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _GetVideoStreamTextureD3D11(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetVideoStreamTextureD3D11 GetVideoStreamTextureD3D11; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _GetVideoStreamTextureGL(ulong hTrackedCamera, EVRTrackedCameraFrameType eFrameType, ref uint pglTextureId, ref CameraVideoStreamFrameHeader_t pFrameHeader, uint nFrameHeaderSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetVideoStreamTextureGL GetVideoStreamTextureGL; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRTrackedCameraError _ReleaseVideoStreamTextureGL(ulong hTrackedCamera, uint glTextureId); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseVideoStreamTextureGL ReleaseVideoStreamTextureGL; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetCameraTrackingSpace(ETrackingUniverseOrigin eUniverse); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetCameraTrackingSpace SetCameraTrackingSpace; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackingUniverseOrigin _GetCameraTrackingSpace(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCameraTrackingSpace GetCameraTrackingSpace; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRApplications -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _AddApplicationManifest(IntPtr pchApplicationManifestFullPath, bool bTemporary); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _AddApplicationManifest AddApplicationManifest; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _RemoveApplicationManifest(IntPtr pchApplicationManifestFullPath); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RemoveApplicationManifest RemoveApplicationManifest; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsApplicationInstalled(IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsApplicationInstalled IsApplicationInstalled; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetApplicationCount(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationCount GetApplicationCount; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _GetApplicationKeyByIndex(uint unApplicationIndex, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationKeyByIndex GetApplicationKeyByIndex; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _GetApplicationKeyByProcessId(uint unProcessId, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationKeyByProcessId GetApplicationKeyByProcessId; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _LaunchApplication(IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LaunchApplication LaunchApplication; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _LaunchTemplateApplication(IntPtr pchTemplateAppKey, IntPtr pchNewAppKey, [In, Out] AppOverrideKeys_t[] pKeys, uint unKeys); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LaunchTemplateApplication LaunchTemplateApplication; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _LaunchApplicationFromMimeType(IntPtr pchMimeType, IntPtr pchArgs); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LaunchApplicationFromMimeType LaunchApplicationFromMimeType; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _LaunchDashboardOverlay(IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LaunchDashboardOverlay LaunchDashboardOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _CancelApplicationLaunch(IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CancelApplicationLaunch CancelApplicationLaunch; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _IdentifyApplication(uint unProcessId, IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IdentifyApplication IdentifyApplication; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetApplicationProcessId(IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationProcessId GetApplicationProcessId; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetApplicationsErrorNameFromEnum(EVRApplicationError error); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationsErrorNameFromEnum GetApplicationsErrorNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetApplicationPropertyString(IntPtr pchAppKey, EVRApplicationProperty eProperty, System.Text.StringBuilder pchPropertyValueBuffer, uint unPropertyValueBufferLen, ref EVRApplicationError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationPropertyString GetApplicationPropertyString; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetApplicationPropertyBool(IntPtr pchAppKey, EVRApplicationProperty eProperty, ref EVRApplicationError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationPropertyBool GetApplicationPropertyBool; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ulong _GetApplicationPropertyUint64(IntPtr pchAppKey, EVRApplicationProperty eProperty, ref EVRApplicationError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationPropertyUint64 GetApplicationPropertyUint64; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _SetApplicationAutoLaunch(IntPtr pchAppKey, bool bAutoLaunch); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetApplicationAutoLaunch SetApplicationAutoLaunch; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetApplicationAutoLaunch(IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationAutoLaunch GetApplicationAutoLaunch; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _SetDefaultApplicationForMimeType(IntPtr pchAppKey, IntPtr pchMimeType); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetDefaultApplicationForMimeType SetDefaultApplicationForMimeType; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetDefaultApplicationForMimeType(IntPtr pchMimeType, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDefaultApplicationForMimeType GetDefaultApplicationForMimeType; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetApplicationSupportedMimeTypes(IntPtr pchAppKey, System.Text.StringBuilder pchMimeTypesBuffer, uint unMimeTypesBuffer); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationSupportedMimeTypes GetApplicationSupportedMimeTypes; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetApplicationsThatSupportMimeType(IntPtr pchMimeType, System.Text.StringBuilder pchAppKeysThatSupportBuffer, uint unAppKeysThatSupportBuffer); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationsThatSupportMimeType GetApplicationsThatSupportMimeType; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetApplicationLaunchArguments(uint unHandle, System.Text.StringBuilder pchArgs, uint unArgs); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetApplicationLaunchArguments GetApplicationLaunchArguments; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _GetStartingApplication(System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetStartingApplication GetStartingApplication; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRSceneApplicationState _GetSceneApplicationState(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSceneApplicationState GetSceneApplicationState; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _PerformApplicationPrelaunchCheck(IntPtr pchAppKey); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PerformApplicationPrelaunchCheck PerformApplicationPrelaunchCheck; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetSceneApplicationStateNameFromEnum(EVRSceneApplicationState state); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSceneApplicationStateNameFromEnum GetSceneApplicationStateNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRApplicationError _LaunchInternalProcess(IntPtr pchBinaryPath, IntPtr pchArguments, IntPtr pchWorkingDirectory); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LaunchInternalProcess LaunchInternalProcess; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetCurrentSceneProcessId(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCurrentSceneProcessId GetCurrentSceneProcessId; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRChaperone -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ChaperoneCalibrationState _GetCalibrationState(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCalibrationState GetCalibrationState; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetPlayAreaSize(ref float pSizeX, ref float pSizeZ); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPlayAreaSize GetPlayAreaSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetPlayAreaRect(ref HmdQuad_t rect); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPlayAreaRect GetPlayAreaRect; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ReloadInfo(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReloadInfo ReloadInfo; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetSceneColor(HmdColor_t color); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetSceneColor SetSceneColor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetBoundsColor(ref HmdColor_t pOutputColorArray, int nNumOutputColors, float flCollisionBoundsFadeDistance, ref HmdColor_t pOutputCameraColor); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBoundsColor GetBoundsColor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _AreBoundsVisible(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _AreBoundsVisible AreBoundsVisible; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ForceBoundsVisible(bool bForce); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ForceBoundsVisible ForceBoundsVisible; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ResetZeroPose(ETrackingUniverseOrigin eTrackingUniverseOrigin); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ResetZeroPose ResetZeroPose; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRChaperoneSetup -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _CommitWorkingCopy(EChaperoneConfigFile configFile); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CommitWorkingCopy CommitWorkingCopy; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _RevertWorkingCopy(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RevertWorkingCopy RevertWorkingCopy; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetWorkingPlayAreaSize(ref float pSizeX, ref float pSizeZ); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetWorkingPlayAreaSize GetWorkingPlayAreaSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetWorkingPlayAreaRect(ref HmdQuad_t rect); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetWorkingPlayAreaRect GetWorkingPlayAreaRect; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetWorkingCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetWorkingCollisionBoundsInfo GetWorkingCollisionBoundsInfo; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetLiveCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, ref uint punQuadsCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetLiveCollisionBoundsInfo GetLiveCollisionBoundsInfo; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetWorkingSeatedZeroPoseToRawTrackingPose GetWorkingSeatedZeroPoseToRawTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatStandingZeroPoseToRawTrackingPose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetWorkingStandingZeroPoseToRawTrackingPose GetWorkingStandingZeroPoseToRawTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetWorkingPlayAreaSize(float sizeX, float sizeZ); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetWorkingPlayAreaSize SetWorkingPlayAreaSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetWorkingCollisionBoundsInfo([In, Out] HmdQuad_t[] pQuadsBuffer, uint unQuadsCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetWorkingCollisionBoundsInfo SetWorkingCollisionBoundsInfo; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetWorkingPerimeter([In, Out] HmdVector2_t[] pPointBuffer, uint unPointCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetWorkingPerimeter SetWorkingPerimeter; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatSeatedZeroPoseToRawTrackingPose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetWorkingSeatedZeroPoseToRawTrackingPose SetWorkingSeatedZeroPoseToRawTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatStandingZeroPoseToRawTrackingPose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetWorkingStandingZeroPoseToRawTrackingPose SetWorkingStandingZeroPoseToRawTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ReloadFromDisk(EChaperoneConfigFile configFile); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReloadFromDisk ReloadFromDisk; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetLiveSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetLiveSeatedZeroPoseToRawTrackingPose GetLiveSeatedZeroPoseToRawTrackingPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ExportLiveToBuffer(System.Text.StringBuilder pBuffer, ref uint pnBufferLength); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ExportLiveToBuffer ExportLiveToBuffer; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ImportFromBufferToWorking(IntPtr pBuffer, uint nImportFlags); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ImportFromBufferToWorking ImportFromBufferToWorking; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ShowWorkingSetPreview(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowWorkingSetPreview ShowWorkingSetPreview; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _HideWorkingSetPreview(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HideWorkingSetPreview HideWorkingSetPreview; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _RoomSetupStarting(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RoomSetupStarting RoomSetupStarting; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRCompositor -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetTrackingSpace(ETrackingUniverseOrigin eOrigin); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetTrackingSpace SetTrackingSpace; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackingUniverseOrigin _GetTrackingSpace(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetTrackingSpace GetTrackingSpace; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _WaitGetPoses([In, Out] TrackedDevicePose_t[] pRenderPoseArray, uint unRenderPoseArrayCount, [In, Out] TrackedDevicePose_t[] pGamePoseArray, uint unGamePoseArrayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _WaitGetPoses WaitGetPoses; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _GetLastPoses([In, Out] TrackedDevicePose_t[] pRenderPoseArray, uint unRenderPoseArrayCount, [In, Out] TrackedDevicePose_t[] pGamePoseArray, uint unGamePoseArrayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetLastPoses GetLastPoses; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _GetLastPoseForTrackedDeviceIndex(uint unDeviceIndex, ref TrackedDevicePose_t pOutputPose, ref TrackedDevicePose_t pOutputGamePose); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetLastPoseForTrackedDeviceIndex GetLastPoseForTrackedDeviceIndex; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _Submit(EVREye eEye, ref Texture_t pTexture, ref VRTextureBounds_t pBounds, EVRSubmitFlags nSubmitFlags); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Submit Submit; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ClearLastSubmittedFrame(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ClearLastSubmittedFrame ClearLastSubmittedFrame; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _PostPresentHandoff(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PostPresentHandoff PostPresentHandoff; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetFrameTiming(ref Compositor_FrameTiming pTiming, uint unFramesAgo); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetFrameTiming GetFrameTiming; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetFrameTimings([In, Out] Compositor_FrameTiming[] pTiming, uint nFrames); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetFrameTimings GetFrameTimings; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate float _GetFrameTimeRemaining(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetFrameTimeRemaining GetFrameTimeRemaining; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetCumulativeStats(ref Compositor_CumulativeStats pStats, uint nStatsSizeInBytes); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCumulativeStats GetCumulativeStats; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _FadeToColor(float fSeconds, float fRed, float fGreen, float fBlue, float fAlpha, bool bBackground); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _FadeToColor FadeToColor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate HmdColor_t _GetCurrentFadeColor(bool bBackground); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCurrentFadeColor GetCurrentFadeColor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _FadeGrid(float fSeconds, bool bFadeIn); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _FadeGrid FadeGrid; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate float _GetCurrentGridAlpha(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCurrentGridAlpha GetCurrentGridAlpha; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _SetSkyboxOverride([In, Out] Texture_t[] pTextures, uint unTextureCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetSkyboxOverride SetSkyboxOverride; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ClearSkyboxOverride(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ClearSkyboxOverride ClearSkyboxOverride; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _CompositorBringToFront(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CompositorBringToFront CompositorBringToFront; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _CompositorGoToBack(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CompositorGoToBack CompositorGoToBack; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _CompositorQuit(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CompositorQuit CompositorQuit; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsFullscreen(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsFullscreen IsFullscreen; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetCurrentSceneFocusProcess(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCurrentSceneFocusProcess GetCurrentSceneFocusProcess; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetLastFrameRenderer(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetLastFrameRenderer GetLastFrameRenderer; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _CanRenderScene(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CanRenderScene CanRenderScene; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ShowMirrorWindow(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowMirrorWindow ShowMirrorWindow; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _HideMirrorWindow(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HideMirrorWindow HideMirrorWindow; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsMirrorWindowVisible(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsMirrorWindowVisible IsMirrorWindowVisible; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _CompositorDumpImages(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CompositorDumpImages CompositorDumpImages; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ShouldAppRenderWithLowResources(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShouldAppRenderWithLowResources ShouldAppRenderWithLowResources; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ForceInterleavedReprojectionOn(bool bOverride); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ForceInterleavedReprojectionOn ForceInterleavedReprojectionOn; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ForceReconnectProcess(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ForceReconnectProcess ForceReconnectProcess; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SuspendRendering(bool bSuspend); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SuspendRendering SuspendRendering; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _GetMirrorTextureD3D11(EVREye eEye, IntPtr pD3D11DeviceOrResource, ref IntPtr ppD3D11ShaderResourceView); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetMirrorTextureD3D11 GetMirrorTextureD3D11; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ReleaseMirrorTextureD3D11(IntPtr pD3D11ShaderResourceView); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseMirrorTextureD3D11 ReleaseMirrorTextureD3D11; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _GetMirrorTextureGL(EVREye eEye, ref uint pglTextureId, IntPtr pglSharedTextureHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetMirrorTextureGL GetMirrorTextureGL; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ReleaseSharedGLTexture(uint glTextureId, IntPtr glSharedTextureHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseSharedGLTexture ReleaseSharedGLTexture; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LockGLSharedTextureForAccess LockGLSharedTextureForAccess; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _UnlockGLSharedTextureForAccess UnlockGLSharedTextureForAccess; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetVulkanInstanceExtensionsRequired(System.Text.StringBuilder pchValue, uint unBufferSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetVulkanInstanceExtensionsRequired GetVulkanInstanceExtensionsRequired; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetVulkanDeviceExtensionsRequired(IntPtr pPhysicalDevice, System.Text.StringBuilder pchValue, uint unBufferSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetVulkanDeviceExtensionsRequired GetVulkanDeviceExtensionsRequired; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetExplicitTimingMode(EVRCompositorTimingMode eTimingMode); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetExplicitTimingMode SetExplicitTimingMode; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _SubmitExplicitTimingData(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SubmitExplicitTimingData SubmitExplicitTimingData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsMotionSmoothingEnabled(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsMotionSmoothingEnabled IsMotionSmoothingEnabled; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsMotionSmoothingSupported(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsMotionSmoothingSupported IsMotionSmoothingSupported; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsCurrentSceneFocusAppLoading(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsCurrentSceneFocusAppLoading IsCurrentSceneFocusAppLoading; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _SetStageOverride_Async(IntPtr pchRenderModelPath, ref HmdMatrix34_t pTransform, ref Compositor_StageRenderSettings pRenderSettings, uint nSizeOfRenderSettings); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetStageOverride_Async SetStageOverride_Async; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ClearStageOverride(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ClearStageOverride ClearStageOverride; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetCompositorBenchmarkResults(ref Compositor_BenchmarkResults pBenchmarkResults, uint nSizeOfBenchmarkResults); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetCompositorBenchmarkResults GetCompositorBenchmarkResults; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _GetLastPosePredictionIDs(ref uint pRenderPosePredictionID, ref uint pGamePosePredictionID); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetLastPosePredictionIDs GetLastPosePredictionIDs; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRCompositorError _GetPosesForFrame(uint unPosePredictionID, [In, Out] TrackedDevicePose_t[] pPoseArray, uint unPoseArrayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPosesForFrame GetPosesForFrame; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVROverlay -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _FindOverlay(IntPtr pchOverlayKey, ref ulong pOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _FindOverlay FindOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _CreateOverlay(IntPtr pchOverlayKey, IntPtr pchOverlayName, ref ulong pOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CreateOverlay CreateOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _DestroyOverlay(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _DestroyOverlay DestroyOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetOverlayKey(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref EVROverlayError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayKey GetOverlayKey; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetOverlayName(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref EVROverlayError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayName GetOverlayName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayName(ulong ulOverlayHandle, IntPtr pchName); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayName SetOverlayName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayImageData(ulong ulOverlayHandle, IntPtr pvBuffer, uint unBufferSize, ref uint punWidth, ref uint punHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayImageData GetOverlayImageData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetOverlayErrorNameFromEnum(EVROverlayError error); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayErrorNameFromEnum GetOverlayErrorNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayRenderingPid(ulong ulOverlayHandle, uint unPID); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayRenderingPid SetOverlayRenderingPid; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetOverlayRenderingPid(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayRenderingPid GetOverlayRenderingPid; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayFlag(ulong ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayFlag SetOverlayFlag; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayFlag(ulong ulOverlayHandle, VROverlayFlags eOverlayFlag, ref bool pbEnabled); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayFlag GetOverlayFlag; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayFlags(ulong ulOverlayHandle, ref uint pFlags); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayFlags GetOverlayFlags; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayColor(ulong ulOverlayHandle, float fRed, float fGreen, float fBlue); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayColor SetOverlayColor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayColor(ulong ulOverlayHandle, ref float pfRed, ref float pfGreen, ref float pfBlue); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayColor GetOverlayColor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayAlpha(ulong ulOverlayHandle, float fAlpha); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayAlpha SetOverlayAlpha; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayAlpha(ulong ulOverlayHandle, ref float pfAlpha); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayAlpha GetOverlayAlpha; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTexelAspect(ulong ulOverlayHandle, float fTexelAspect); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTexelAspect SetOverlayTexelAspect; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTexelAspect(ulong ulOverlayHandle, ref float pfTexelAspect); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTexelAspect GetOverlayTexelAspect; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlaySortOrder(ulong ulOverlayHandle, uint unSortOrder); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlaySortOrder SetOverlaySortOrder; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlaySortOrder(ulong ulOverlayHandle, ref uint punSortOrder); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlaySortOrder GetOverlaySortOrder; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayWidthInMeters(ulong ulOverlayHandle, float fWidthInMeters); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayWidthInMeters SetOverlayWidthInMeters; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayWidthInMeters(ulong ulOverlayHandle, ref float pfWidthInMeters); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayWidthInMeters GetOverlayWidthInMeters; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayCurvature(ulong ulOverlayHandle, float fCurvature); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayCurvature SetOverlayCurvature; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayCurvature(ulong ulOverlayHandle, ref float pfCurvature); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayCurvature GetOverlayCurvature; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTextureColorSpace(ulong ulOverlayHandle, EColorSpace eTextureColorSpace); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTextureColorSpace SetOverlayTextureColorSpace; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTextureColorSpace(ulong ulOverlayHandle, ref EColorSpace peTextureColorSpace); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTextureColorSpace GetOverlayTextureColorSpace; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTextureBounds(ulong ulOverlayHandle, ref VRTextureBounds_t pOverlayTextureBounds); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTextureBounds SetOverlayTextureBounds; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTextureBounds(ulong ulOverlayHandle, ref VRTextureBounds_t pOverlayTextureBounds); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTextureBounds GetOverlayTextureBounds; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTransformType(ulong ulOverlayHandle, ref VROverlayTransformType peTransformType); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTransformType GetOverlayTransformType; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTransformAbsolute(ulong ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTransformAbsolute SetOverlayTransformAbsolute; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTransformAbsolute(ulong ulOverlayHandle, ref ETrackingUniverseOrigin peTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTransformAbsolute GetOverlayTransformAbsolute; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle, uint unTrackedDevice, ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTransformTrackedDeviceRelative SetOverlayTransformTrackedDeviceRelative; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle, ref uint punTrackedDevice, ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTransformTrackedDeviceRelative GetOverlayTransformTrackedDeviceRelative; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, uint unDeviceIndex, IntPtr pchComponentName); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTransformTrackedDeviceComponent SetOverlayTransformTrackedDeviceComponent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, ref uint punDeviceIndex, System.Text.StringBuilder pchComponentName, uint unComponentNameSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTransformTrackedDeviceComponent GetOverlayTransformTrackedDeviceComponent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTransformOverlayRelative(ulong ulOverlayHandle, ref ulong ulOverlayHandleParent, ref HmdMatrix34_t pmatParentOverlayToOverlayTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTransformOverlayRelative GetOverlayTransformOverlayRelative; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTransformOverlayRelative(ulong ulOverlayHandle, ulong ulOverlayHandleParent, ref HmdMatrix34_t pmatParentOverlayToOverlayTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTransformOverlayRelative SetOverlayTransformOverlayRelative; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTransformCursor(ulong ulCursorOverlayHandle, ref HmdVector2_t pvHotspot); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTransformCursor SetOverlayTransformCursor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTransformCursor(ulong ulOverlayHandle, ref HmdVector2_t pvHotspot); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTransformCursor GetOverlayTransformCursor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _ShowOverlay(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowOverlay ShowOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _HideOverlay(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HideOverlay HideOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsOverlayVisible(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsOverlayVisible IsOverlayVisible; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetTransformForOverlayCoordinates(ulong ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, HmdVector2_t coordinatesInOverlay, ref HmdMatrix34_t pmatTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetTransformForOverlayCoordinates GetTransformForOverlayCoordinates; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _PollNextOverlayEvent(ulong ulOverlayHandle, ref VREvent_t pEvent, uint uncbVREvent); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PollNextOverlayEvent PollNextOverlayEvent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayInputMethod(ulong ulOverlayHandle, ref VROverlayInputMethod peInputMethod); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayInputMethod GetOverlayInputMethod; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayInputMethod(ulong ulOverlayHandle, VROverlayInputMethod eInputMethod); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayInputMethod SetOverlayInputMethod; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayMouseScale(ulong ulOverlayHandle, ref HmdVector2_t pvecMouseScale); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayMouseScale GetOverlayMouseScale; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayMouseScale(ulong ulOverlayHandle, ref HmdVector2_t pvecMouseScale); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayMouseScale SetOverlayMouseScale; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _ComputeOverlayIntersection(ulong ulOverlayHandle, ref VROverlayIntersectionParams_t pParams, ref VROverlayIntersectionResults_t pResults); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ComputeOverlayIntersection ComputeOverlayIntersection; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsHoverTargetOverlay(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsHoverTargetOverlay IsHoverTargetOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayIntersectionMask(ulong ulOverlayHandle, ref VROverlayIntersectionMaskPrimitive_t pMaskPrimitives, uint unNumMaskPrimitives, uint unPrimitiveSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayIntersectionMask SetOverlayIntersectionMask; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _TriggerLaserMouseHapticVibration(ulong ulOverlayHandle, float fDurationSeconds, float fFrequency, float fAmplitude); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _TriggerLaserMouseHapticVibration TriggerLaserMouseHapticVibration; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayCursor(ulong ulOverlayHandle, ulong ulCursorHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayCursor SetOverlayCursor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayCursorPositionOverride(ulong ulOverlayHandle, ref HmdVector2_t pvCursor); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayCursorPositionOverride SetOverlayCursorPositionOverride; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _ClearOverlayCursorPositionOverride(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ClearOverlayCursorPositionOverride ClearOverlayCursorPositionOverride; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayTexture(ulong ulOverlayHandle, ref Texture_t pTexture); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayTexture SetOverlayTexture; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _ClearOverlayTexture(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ClearOverlayTexture ClearOverlayTexture; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayRaw(ulong ulOverlayHandle, IntPtr pvBuffer, uint unWidth, uint unHeight, uint unBytesPerPixel); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayRaw SetOverlayRaw; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetOverlayFromFile(ulong ulOverlayHandle, IntPtr pchFilePath); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetOverlayFromFile SetOverlayFromFile; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTexture(ulong ulOverlayHandle, ref IntPtr pNativeTextureHandle, IntPtr pNativeTextureRef, ref uint pWidth, ref uint pHeight, ref uint pNativeFormat, ref ETextureType pAPIType, ref EColorSpace pColorSpace, ref VRTextureBounds_t pTextureBounds); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTexture GetOverlayTexture; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _ReleaseNativeOverlayHandle(ulong ulOverlayHandle, IntPtr pNativeTextureHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseNativeOverlayHandle ReleaseNativeOverlayHandle; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetOverlayTextureSize(ulong ulOverlayHandle, ref uint pWidth, ref uint pHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOverlayTextureSize GetOverlayTextureSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _CreateDashboardOverlay(IntPtr pchOverlayKey, IntPtr pchOverlayFriendlyName, ref ulong pMainHandle, ref ulong pThumbnailHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CreateDashboardOverlay CreateDashboardOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsDashboardVisible(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsDashboardVisible IsDashboardVisible; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsActiveDashboardOverlay(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsActiveDashboardOverlay IsActiveDashboardOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _SetDashboardOverlaySceneProcess(ulong ulOverlayHandle, uint unProcessId); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetDashboardOverlaySceneProcess SetDashboardOverlaySceneProcess; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _GetDashboardOverlaySceneProcess(ulong ulOverlayHandle, ref uint punProcessId); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDashboardOverlaySceneProcess GetDashboardOverlaySceneProcess; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _ShowDashboard(IntPtr pchOverlayToShow); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowDashboard ShowDashboard; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetPrimaryDashboardDevice(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPrimaryDashboardDevice GetPrimaryDashboardDevice; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _ShowKeyboard(int eInputMode, int eLineInputMode, uint unFlags, IntPtr pchDescription, uint unCharMax, IntPtr pchExistingText, ulong uUserValue); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowKeyboard ShowKeyboard; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _ShowKeyboardForOverlay(ulong ulOverlayHandle, int eInputMode, int eLineInputMode, uint unFlags, IntPtr pchDescription, uint unCharMax, IntPtr pchExistingText, ulong uUserValue); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowKeyboardForOverlay ShowKeyboardForOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetKeyboardText(System.Text.StringBuilder pchText, uint cchText); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetKeyboardText GetKeyboardText; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _HideKeyboard(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HideKeyboard HideKeyboard; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin, ref HmdMatrix34_t pmatTrackingOriginToKeyboardTransform); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetKeyboardTransformAbsolute SetKeyboardTransformAbsolute; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetKeyboardPositionForOverlay(ulong ulOverlayHandle, HmdRect2_t avoidRect); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetKeyboardPositionForOverlay SetKeyboardPositionForOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate VRMessageOverlayResponse _ShowMessageOverlay(IntPtr pchText, IntPtr pchCaption, IntPtr pchButton0Text, IntPtr pchButton1Text, IntPtr pchButton2Text, IntPtr pchButton3Text); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowMessageOverlay ShowMessageOverlay; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _CloseMessageOverlay(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CloseMessageOverlay CloseMessageOverlay; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVROverlayView -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _AcquireOverlayView(ulong ulOverlayHandle, ref VRNativeDevice_t pNativeDevice, ref VROverlayView_t pOverlayView, uint unOverlayViewSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _AcquireOverlayView AcquireOverlayView; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVROverlayError _ReleaseOverlayView(ref VROverlayView_t pOverlayView); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseOverlayView ReleaseOverlayView; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _PostOverlayEvent(ulong ulOverlayHandle, ref VREvent_t pvrEvent); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PostOverlayEvent PostOverlayEvent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsViewingPermitted(ulong ulOverlayHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsViewingPermitted IsViewingPermitted; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRHeadsetView -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetHeadsetViewSize(uint nWidth, uint nHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetHeadsetViewSize SetHeadsetViewSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetHeadsetViewSize(ref uint pnWidth, ref uint pnHeight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetHeadsetViewSize GetHeadsetViewSize; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetHeadsetViewMode(uint eHeadsetViewMode); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetHeadsetViewMode SetHeadsetViewMode; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetHeadsetViewMode(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetHeadsetViewMode GetHeadsetViewMode; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetHeadsetViewCropped(bool bCropped); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetHeadsetViewCropped SetHeadsetViewCropped; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetHeadsetViewCropped(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetHeadsetViewCropped GetHeadsetViewCropped; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate float _GetHeadsetViewAspectRatio(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetHeadsetViewAspectRatio GetHeadsetViewAspectRatio; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetHeadsetViewBlendRange(float flStartPct, float flEndPct); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetHeadsetViewBlendRange SetHeadsetViewBlendRange; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetHeadsetViewBlendRange(ref float pStartPct, ref float pEndPct); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetHeadsetViewBlendRange GetHeadsetViewBlendRange; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRRenderModels -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRRenderModelError _LoadRenderModel_Async(IntPtr pchRenderModelName, ref IntPtr ppRenderModel); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LoadRenderModel_Async LoadRenderModel_Async; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _FreeRenderModel(IntPtr pRenderModel); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _FreeRenderModel FreeRenderModel; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRRenderModelError _LoadTexture_Async(int textureId, ref IntPtr ppTexture); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LoadTexture_Async LoadTexture_Async; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _FreeTexture(IntPtr pTexture); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _FreeTexture FreeTexture; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRRenderModelError _LoadTextureD3D11_Async(int textureId, IntPtr pD3D11Device, ref IntPtr ppD3D11Texture2D); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LoadTextureD3D11_Async LoadTextureD3D11_Async; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRRenderModelError _LoadIntoTextureD3D11_Async(int textureId, IntPtr pDstTexture); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LoadIntoTextureD3D11_Async LoadIntoTextureD3D11_Async; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _FreeTextureD3D11(IntPtr pD3D11Texture2D); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _FreeTextureD3D11 FreeTextureD3D11; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetRenderModelName(uint unRenderModelIndex, System.Text.StringBuilder pchRenderModelName, uint unRenderModelNameLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRenderModelName GetRenderModelName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetRenderModelCount(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRenderModelCount GetRenderModelCount; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetComponentCount(IntPtr pchRenderModelName); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetComponentCount GetComponentCount; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetComponentName(IntPtr pchRenderModelName, uint unComponentIndex, System.Text.StringBuilder pchComponentName, uint unComponentNameLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetComponentName GetComponentName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ulong _GetComponentButtonMask(IntPtr pchRenderModelName, IntPtr pchComponentName); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetComponentButtonMask GetComponentButtonMask; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetComponentRenderModelName(IntPtr pchRenderModelName, IntPtr pchComponentName, System.Text.StringBuilder pchComponentRenderModelName, uint unComponentRenderModelNameLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetComponentRenderModelName GetComponentRenderModelName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetComponentStateForDevicePath(IntPtr pchRenderModelName, IntPtr pchComponentName, ulong devicePath, ref RenderModel_ControllerMode_State_t pState, ref RenderModel_ComponentState_t pComponentState); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetComponentStateForDevicePath GetComponentStateForDevicePath; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetComponentState(IntPtr pchRenderModelName, IntPtr pchComponentName, ref VRControllerState_t pControllerState, ref RenderModel_ControllerMode_State_t pState, ref RenderModel_ComponentState_t pComponentState); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetComponentState GetComponentState; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _RenderModelHasComponent(IntPtr pchRenderModelName, IntPtr pchComponentName); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RenderModelHasComponent RenderModelHasComponent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetRenderModelThumbnailURL(IntPtr pchRenderModelName, System.Text.StringBuilder pchThumbnailURL, uint unThumbnailURLLen, ref EVRRenderModelError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRenderModelThumbnailURL GetRenderModelThumbnailURL; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetRenderModelOriginalPath(IntPtr pchRenderModelName, System.Text.StringBuilder pchOriginalPath, uint unOriginalPathLen, ref EVRRenderModelError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRenderModelOriginalPath GetRenderModelOriginalPath; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetRenderModelErrorNameFromEnum(EVRRenderModelError error); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetRenderModelErrorNameFromEnum GetRenderModelErrorNameFromEnum; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRNotifications -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRNotificationError _CreateNotification(ulong ulOverlayHandle, ulong ulUserValue, EVRNotificationType type, IntPtr pchText, EVRNotificationStyle style, ref NotificationBitmap_t pImage, ref uint pNotificationId); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CreateNotification CreateNotification; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRNotificationError _RemoveNotification(uint notificationId); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RemoveNotification RemoveNotification; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRSettings -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetSettingsErrorNameFromEnum(EVRSettingsError eError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSettingsErrorNameFromEnum GetSettingsErrorNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetBool(IntPtr pchSection, IntPtr pchSettingsKey, bool bValue, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetBool SetBool; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetInt32(IntPtr pchSection, IntPtr pchSettingsKey, int nValue, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetInt32 SetInt32; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetFloat(IntPtr pchSection, IntPtr pchSettingsKey, float flValue, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetFloat SetFloat; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _SetString(IntPtr pchSection, IntPtr pchSettingsKey, IntPtr pchValue, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetString SetString; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetBool(IntPtr pchSection, IntPtr pchSettingsKey, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBool GetBool; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate int _GetInt32(IntPtr pchSection, IntPtr pchSettingsKey, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetInt32 GetInt32; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate float _GetFloat(IntPtr pchSection, IntPtr pchSettingsKey, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetFloat GetFloat; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _GetString(IntPtr pchSection, IntPtr pchSettingsKey, System.Text.StringBuilder pchValue, uint unValueLen, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetString GetString; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _RemoveSection(IntPtr pchSection, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RemoveSection RemoveSection; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate void _RemoveKeyInSection(IntPtr pchSection, IntPtr pchSettingsKey, ref EVRSettingsError peError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RemoveKeyInSection RemoveKeyInSection; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRScreenshots -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRScreenshotError _RequestScreenshot(ref uint pOutScreenshotHandle, EVRScreenshotType type, IntPtr pchPreviewFilename, IntPtr pchVRFilename); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _RequestScreenshot RequestScreenshot; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRScreenshotError _HookScreenshot([In, Out] EVRScreenshotType[] pSupportedTypes, int numTypes); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HookScreenshot HookScreenshot; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRScreenshotType _GetScreenshotPropertyType(uint screenshotHandle, ref EVRScreenshotError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetScreenshotPropertyType GetScreenshotPropertyType; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetScreenshotPropertyFilename(uint screenshotHandle, EVRScreenshotPropertyFilenames filenameType, System.Text.StringBuilder pchFilename, uint cchFilename, ref EVRScreenshotError pError); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetScreenshotPropertyFilename GetScreenshotPropertyFilename; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRScreenshotError _UpdateScreenshotProgress(uint screenshotHandle, float flProgress); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _UpdateScreenshotProgress UpdateScreenshotProgress; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRScreenshotError _TakeStereoScreenshot(ref uint pOutScreenshotHandle, IntPtr pchPreviewFilename, IntPtr pchVRFilename); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _TakeStereoScreenshot TakeStereoScreenshot; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRScreenshotError _SubmitScreenshot(uint screenshotHandle, EVRScreenshotType type, IntPtr pchSourcePreviewFilename, IntPtr pchSourceVRFilename); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SubmitScreenshot SubmitScreenshot; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRResources -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _LoadSharedResource(IntPtr pchResourceName, string pchBuffer, uint unBufferLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _LoadSharedResource LoadSharedResource; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetResourceFullPath(IntPtr pchResourceName, IntPtr pchResourceTypeDirectory, System.Text.StringBuilder pchPathBuffer, uint unBufferLen); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetResourceFullPath GetResourceFullPath; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRDriverManager -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetDriverCount(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDriverCount GetDriverCount; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _GetDriverName(uint nDriver, System.Text.StringBuilder pchValue, uint unBufferSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDriverName GetDriverName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ulong _GetDriverHandle(IntPtr pchDriverName); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDriverHandle GetDriverHandle; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsEnabled(uint nDriver); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsEnabled IsEnabled; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRInput -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _SetActionManifestPath(IntPtr pchActionManifestPath); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetActionManifestPath SetActionManifestPath; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetActionSetHandle(IntPtr pchActionSetName, ref ulong pHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetActionSetHandle GetActionSetHandle; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetActionHandle(IntPtr pchActionName, ref ulong pHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetActionHandle GetActionHandle; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetInputSourceHandle(IntPtr pchInputSourcePath, ref ulong pHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetInputSourceHandle GetInputSourceHandle; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _UpdateActionState([In, Out] VRActiveActionSet_t[] pSets, uint unSizeOfVRSelectedActionSet_t, uint unSetCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _UpdateActionState UpdateActionState; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetDigitalActionData(ulong action, ref InputDigitalActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDigitalActionData GetDigitalActionData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetAnalogActionData(ulong action, ref InputAnalogActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetAnalogActionData GetAnalogActionData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetPoseActionDataRelativeToNow(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPoseActionDataRelativeToNow GetPoseActionDataRelativeToNow; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetPoseActionDataForNextFrame(ulong action, ETrackingUniverseOrigin eOrigin, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPoseActionDataForNextFrame GetPoseActionDataForNextFrame; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalActionData(ulong action, ref InputSkeletalActionData_t pActionData, uint unActionDataSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSkeletalActionData GetSkeletalActionData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetDominantHand(ref ETrackedControllerRole peDominantHand); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetDominantHand GetDominantHand; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _SetDominantHand(ETrackedControllerRole eDominantHand); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _SetDominantHand SetDominantHand; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetBoneCount(ulong action, ref uint pBoneCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBoneCount GetBoneCount; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetBoneHierarchy(ulong action, [In, Out] int[] pParentIndices, uint unIndexArayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBoneHierarchy GetBoneHierarchy; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetBoneName(ulong action, int nBoneIndex, System.Text.StringBuilder pchBoneName, uint unNameBufferSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBoneName GetBoneName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalReferenceTransforms(ulong action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalReferencePose eReferencePose, [In, Out] VRBoneTransform_t[] pTransformArray, uint unTransformArrayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSkeletalReferenceTransforms GetSkeletalReferenceTransforms; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalTrackingLevel(ulong action, ref EVRSkeletalTrackingLevel pSkeletalTrackingLevel); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSkeletalTrackingLevel GetSkeletalTrackingLevel; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalBoneData(ulong action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, [In, Out] VRBoneTransform_t[] pTransformArray, uint unTransformArrayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSkeletalBoneData GetSkeletalBoneData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalSummaryData(ulong action, EVRSummaryType eSummaryType, ref VRSkeletalSummaryData_t pSkeletalSummaryData); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSkeletalSummaryData GetSkeletalSummaryData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalBoneDataCompressed(ulong action, EVRSkeletalMotionRange eMotionRange, IntPtr pvCompressedData, uint unCompressedSize, ref uint punRequiredCompressedSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSkeletalBoneDataCompressed GetSkeletalBoneDataCompressed; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _DecompressSkeletalBoneData(IntPtr pvCompressedBuffer, uint unCompressedBufferSize, EVRSkeletalTransformSpace eTransformSpace, [In, Out] VRBoneTransform_t[] pTransformArray, uint unTransformArrayCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _DecompressSkeletalBoneData DecompressSkeletalBoneData; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _TriggerHapticVibrationAction(ulong action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, ulong ulRestrictToDevice); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _TriggerHapticVibrationAction TriggerHapticVibrationAction; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetActionOrigins(ulong actionSetHandle, ulong digitalActionHandle, [In, Out] ulong[] originsOut, uint originOutCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetActionOrigins GetActionOrigins; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetOriginLocalizedName(ulong origin, System.Text.StringBuilder pchNameArray, uint unNameArraySize, int unStringSectionsToInclude); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOriginLocalizedName GetOriginLocalizedName; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetOriginTrackedDeviceInfo(ulong origin, ref InputOriginInfo_t pOriginInfo, uint unOriginInfoSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetOriginTrackedDeviceInfo GetOriginTrackedDeviceInfo; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetActionBindingInfo(ulong action, ref InputBindingInfo_t pOriginInfo, uint unBindingInfoSize, uint unBindingInfoCount, ref uint punReturnedBindingInfoCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetActionBindingInfo GetActionBindingInfo; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _ShowActionOrigins(ulong actionSetHandle, ulong ulActionHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowActionOrigins ShowActionOrigins; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _ShowBindingsForActionSet([In, Out] VRActiveActionSet_t[] pSets, uint unSizeOfVRSelectedActionSet_t, uint unSetCount, ulong originToHighlight); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ShowBindingsForActionSet ShowBindingsForActionSet; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetComponentStateForBinding(IntPtr pchRenderModelName, IntPtr pchComponentName, ref InputBindingInfo_t pOriginInfo, uint unBindingInfoSize, uint unBindingInfoCount, ref RenderModel_ComponentState_t pComponentState); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetComponentStateForBinding GetComponentStateForBinding; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _IsUsingLegacyInput(); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _IsUsingLegacyInput IsUsingLegacyInput; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _OpenBindingUI(IntPtr pchAppKey, ulong ulActionSetHandle, ulong ulDeviceHandle, bool bShowOnDesktop); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _OpenBindingUI OpenBindingUI; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetBindingVariant(ulong ulDevicePath, System.Text.StringBuilder pchVariantArray, uint unVariantArraySize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetBindingVariant GetBindingVariant; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRIOBuffer -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EIOBufferError _Open(IntPtr pchPath, EIOBufferMode mode, uint unElementSize, uint unElements, ref ulong pulBuffer); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Open Open; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EIOBufferError _Close(ulong ulBuffer); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Close Close; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EIOBufferError _Read(ulong ulBuffer, IntPtr pDst, uint unBytes, ref uint punRead); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Read Read; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EIOBufferError _Write(ulong ulBuffer, IntPtr pSrc, uint unBytes); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Write Write; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ulong _PropertyContainer(ulong ulBuffer); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _PropertyContainer PropertyContainer; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _HasReaders(ulong ulBuffer); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HasReaders HasReaders; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRSpatialAnchors -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRSpatialAnchorError _CreateSpatialAnchorFromDescriptor(IntPtr pchDescriptor, ref uint pHandleOut); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CreateSpatialAnchorFromDescriptor CreateSpatialAnchorFromDescriptor; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRSpatialAnchorError _CreateSpatialAnchorFromPose(uint unDeviceIndex, ETrackingUniverseOrigin eOrigin, ref SpatialAnchorPose_t pPose, ref uint pHandleOut); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _CreateSpatialAnchorFromPose CreateSpatialAnchorFromPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRSpatialAnchorError _GetSpatialAnchorPose(uint unHandle, ETrackingUniverseOrigin eOrigin, ref SpatialAnchorPose_t pPoseOut); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSpatialAnchorPose GetSpatialAnchorPose; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRSpatialAnchorError _GetSpatialAnchorDescriptor(uint unHandle, System.Text.StringBuilder pchDescriptorOut, ref uint punDescriptorBufferLenInOut); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetSpatialAnchorDescriptor GetSpatialAnchorDescriptor; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRDebug -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRDebugError _EmitVrProfilerEvent(IntPtr pchMessage); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _EmitVrProfilerEvent EmitVrProfilerEvent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRDebugError _BeginVrProfilerEvent(ref ulong pHandleOut); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _BeginVrProfilerEvent BeginVrProfilerEvent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRDebugError _FinishVrProfilerEvent(ulong hHandle, IntPtr pchMessage); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _FinishVrProfilerEvent FinishVrProfilerEvent; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate uint _DriverDebugRequest(uint unDeviceIndex, IntPtr pchRequest, System.Text.StringBuilder pchResponseBuffer, uint unResponseBufferSize); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _DriverDebugRequest DriverDebugRequest; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRProperties -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedPropertyError _ReadPropertyBatch(ulong ulContainerHandle, ref PropertyRead_t pBatch, uint unBatchEntryCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReadPropertyBatch ReadPropertyBatch; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedPropertyError _WritePropertyBatch(ulong ulContainerHandle, ref PropertyWrite_t pBatch, uint unBatchEntryCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _WritePropertyBatch WritePropertyBatch; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate IntPtr _GetPropErrorNameFromEnum(ETrackedPropertyError error); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPropErrorNameFromEnum GetPropErrorNameFromEnum; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ulong _TrackedDeviceToPropertyContainer(uint nDevice); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _TrackedDeviceToPropertyContainer TrackedDeviceToPropertyContainer; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRPaths -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedPropertyError _ReadPathBatch(ulong ulRootHandle, ref PathRead_t pBatch, uint unBatchEntryCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReadPathBatch ReadPathBatch; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedPropertyError _WritePathBatch(ulong ulRootHandle, ref PathWrite_t pBatch, uint unBatchEntryCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _WritePathBatch WritePathBatch; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedPropertyError _StringToHandle(ref ulong pHandle, IntPtr pchPath); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _StringToHandle StringToHandle; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate ETrackedPropertyError _HandleToString(ulong pHandle, string pchBuffer, uint unBufferSize, ref uint punBufferSizeUsed); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _HandleToString HandleToString; - -} - -[StructLayout(LayoutKind.Sequential)] -public struct IVRBlockQueue -{ - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _Create(ref ulong pulQueueHandle, IntPtr pchPath, uint unBlockDataSize, uint unBlockHeaderSize, uint unBlockCount); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Create Create; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _Connect(ref ulong pulQueueHandle, IntPtr pchPath); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Connect Connect; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _Destroy(ulong ulQueueHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _Destroy Destroy; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _AcquireWriteOnlyBlock(ulong ulQueueHandle, ref ulong pulBlockHandle, ref IntPtr ppvBuffer); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _AcquireWriteOnlyBlock AcquireWriteOnlyBlock; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _ReleaseWriteOnlyBlock(ulong ulQueueHandle, ulong ulBlockHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseWriteOnlyBlock ReleaseWriteOnlyBlock; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _WaitAndAcquireReadOnlyBlock(ulong ulQueueHandle, ref ulong pulBlockHandle, ref IntPtr ppvBuffer, EBlockQueueReadType eReadType, uint unTimeoutMs); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _WaitAndAcquireReadOnlyBlock WaitAndAcquireReadOnlyBlock; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _AcquireReadOnlyBlock(ulong ulQueueHandle, ref ulong pulBlockHandle, ref IntPtr ppvBuffer, EBlockQueueReadType eReadType); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _AcquireReadOnlyBlock AcquireReadOnlyBlock; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _ReleaseReadOnlyBlock(ulong ulQueueHandle, ulong ulBlockHandle); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _ReleaseReadOnlyBlock ReleaseReadOnlyBlock; - - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EBlockQueueError _QueueHasReader(ulong ulQueueHandle, ref bool pbHasReaders); - [MarshalAs(UnmanagedType.FunctionPtr)] - internal _QueueHasReader QueueHasReader; - -} - - -public class Utils -{ - public static IntPtr ToUtf8(string managedString) - { - if (managedString == null) - { - return IntPtr.Zero; - } - - int size = System.Text.Encoding.UTF8.GetByteCount(managedString) + 1; - if (buffer.Length < size) buffer = new byte[size]; - int written = System.Text.Encoding.UTF8.GetBytes(managedString, 0, managedString.Length, buffer, 0); - buffer[written] = 0x00; // null terminate - IntPtr nativeUtf8 = Marshal.AllocHGlobal(written+1); - Marshal.Copy(buffer, 0, nativeUtf8, written+1); - return nativeUtf8; - } - private static byte[] buffer = new byte[1024]; -} - -public class CVRSystem -{ - IVRSystem FnTable; - internal CVRSystem(IntPtr pInterface) - { - FnTable = (IVRSystem)Marshal.PtrToStructure(pInterface, typeof(IVRSystem)); - } - public void GetRecommendedRenderTargetSize(ref uint pnWidth,ref uint pnHeight) - { - pnWidth = 0; - pnHeight = 0; - FnTable.GetRecommendedRenderTargetSize(ref pnWidth,ref pnHeight); - } - public HmdMatrix44_t GetProjectionMatrix(EVREye eEye,float fNearZ,float fFarZ) - { - HmdMatrix44_t result = FnTable.GetProjectionMatrix(eEye,fNearZ,fFarZ); - return result; - } - public void GetProjectionRaw(EVREye eEye,ref float pfLeft,ref float pfRight,ref float pfTop,ref float pfBottom) - { - pfLeft = 0; - pfRight = 0; - pfTop = 0; - pfBottom = 0; - FnTable.GetProjectionRaw(eEye,ref pfLeft,ref pfRight,ref pfTop,ref pfBottom); - } - public bool ComputeDistortion(EVREye eEye,float fU,float fV,ref DistortionCoordinates_t pDistortionCoordinates) - { - bool result = FnTable.ComputeDistortion(eEye,fU,fV,ref pDistortionCoordinates); - return result; - } - public HmdMatrix34_t GetEyeToHeadTransform(EVREye eEye) - { - HmdMatrix34_t result = FnTable.GetEyeToHeadTransform(eEye); - return result; - } - public bool GetTimeSinceLastVsync(ref float pfSecondsSinceLastVsync,ref ulong pulFrameCounter) - { - pfSecondsSinceLastVsync = 0; - pulFrameCounter = 0; - bool result = FnTable.GetTimeSinceLastVsync(ref pfSecondsSinceLastVsync,ref pulFrameCounter); - return result; - } - public int GetD3D9AdapterIndex() - { - int result = FnTable.GetD3D9AdapterIndex(); - return result; - } - public void GetDXGIOutputInfo(ref int pnAdapterIndex) - { - pnAdapterIndex = 0; - FnTable.GetDXGIOutputInfo(ref pnAdapterIndex); - } - public void GetOutputDevice(ref ulong pnDevice,ETextureType textureType,IntPtr pInstance) - { - pnDevice = 0; - FnTable.GetOutputDevice(ref pnDevice,textureType,pInstance); - } - public bool IsDisplayOnDesktop() - { - bool result = FnTable.IsDisplayOnDesktop(); - return result; - } - public bool SetDisplayVisibility(bool bIsVisibleOnDesktop) - { - bool result = FnTable.SetDisplayVisibility(bIsVisibleOnDesktop); - return result; - } - public void GetDeviceToAbsoluteTrackingPose(ETrackingUniverseOrigin eOrigin,float fPredictedSecondsToPhotonsFromNow,TrackedDevicePose_t [] pTrackedDevicePoseArray) - { - FnTable.GetDeviceToAbsoluteTrackingPose(eOrigin,fPredictedSecondsToPhotonsFromNow,pTrackedDevicePoseArray,(uint) pTrackedDevicePoseArray.Length); - } - public HmdMatrix34_t GetSeatedZeroPoseToStandingAbsoluteTrackingPose() - { - HmdMatrix34_t result = FnTable.GetSeatedZeroPoseToStandingAbsoluteTrackingPose(); - return result; - } - public HmdMatrix34_t GetRawZeroPoseToStandingAbsoluteTrackingPose() - { - HmdMatrix34_t result = FnTable.GetRawZeroPoseToStandingAbsoluteTrackingPose(); - return result; - } - public uint GetSortedTrackedDeviceIndicesOfClass(ETrackedDeviceClass eTrackedDeviceClass,uint [] punTrackedDeviceIndexArray,uint unRelativeToTrackedDeviceIndex) - { - uint result = FnTable.GetSortedTrackedDeviceIndicesOfClass(eTrackedDeviceClass,punTrackedDeviceIndexArray,(uint) punTrackedDeviceIndexArray.Length,unRelativeToTrackedDeviceIndex); - return result; - } - public EDeviceActivityLevel GetTrackedDeviceActivityLevel(uint unDeviceId) - { - EDeviceActivityLevel result = FnTable.GetTrackedDeviceActivityLevel(unDeviceId); - return result; - } - public void ApplyTransform(ref TrackedDevicePose_t pOutputPose,ref TrackedDevicePose_t pTrackedDevicePose,ref HmdMatrix34_t pTransform) - { - FnTable.ApplyTransform(ref pOutputPose,ref pTrackedDevicePose,ref pTransform); - } - public uint GetTrackedDeviceIndexForControllerRole(ETrackedControllerRole unDeviceType) - { - uint result = FnTable.GetTrackedDeviceIndexForControllerRole(unDeviceType); - return result; - } - public ETrackedControllerRole GetControllerRoleForTrackedDeviceIndex(uint unDeviceIndex) - { - ETrackedControllerRole result = FnTable.GetControllerRoleForTrackedDeviceIndex(unDeviceIndex); - return result; - } - public ETrackedDeviceClass GetTrackedDeviceClass(uint unDeviceIndex) - { - ETrackedDeviceClass result = FnTable.GetTrackedDeviceClass(unDeviceIndex); - return result; - } - public bool IsTrackedDeviceConnected(uint unDeviceIndex) - { - bool result = FnTable.IsTrackedDeviceConnected(unDeviceIndex); - return result; - } - public bool GetBoolTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) - { - bool result = FnTable.GetBoolTrackedDeviceProperty(unDeviceIndex,prop,ref pError); - return result; - } - public float GetFloatTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) - { - float result = FnTable.GetFloatTrackedDeviceProperty(unDeviceIndex,prop,ref pError); - return result; - } - public int GetInt32TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) - { - int result = FnTable.GetInt32TrackedDeviceProperty(unDeviceIndex,prop,ref pError); - return result; - } - public ulong GetUint64TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) - { - ulong result = FnTable.GetUint64TrackedDeviceProperty(unDeviceIndex,prop,ref pError); - return result; - } - public HmdMatrix34_t GetMatrix34TrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,ref ETrackedPropertyError pError) - { - HmdMatrix34_t result = FnTable.GetMatrix34TrackedDeviceProperty(unDeviceIndex,prop,ref pError); - return result; - } - public uint GetArrayTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,uint propType,IntPtr pBuffer,uint unBufferSize,ref ETrackedPropertyError pError) - { - uint result = FnTable.GetArrayTrackedDeviceProperty(unDeviceIndex,prop,propType,pBuffer,unBufferSize,ref pError); - return result; - } - public uint GetStringTrackedDeviceProperty(uint unDeviceIndex,ETrackedDeviceProperty prop,System.Text.StringBuilder pchValue,uint unBufferSize,ref ETrackedPropertyError pError) - { - uint result = FnTable.GetStringTrackedDeviceProperty(unDeviceIndex,prop,pchValue,unBufferSize,ref pError); - return result; - } - public string GetPropErrorNameFromEnum(ETrackedPropertyError error) - { - IntPtr result = FnTable.GetPropErrorNameFromEnum(error); - return Marshal.PtrToStringAnsi(result); - } -// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were -// originally mis-compiled with the wrong packing for Linux and OSX. - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _PollNextEventPacked(ref VREvent_t_Packed pEvent,uint uncbVREvent); - [StructLayout(LayoutKind.Explicit)] - struct PollNextEventUnion - { - [FieldOffset(0)] - public IVRSystem._PollNextEvent pPollNextEvent; - [FieldOffset(0)] - public _PollNextEventPacked pPollNextEventPacked; - } - public bool PollNextEvent(ref VREvent_t pEvent,uint uncbVREvent) - { -#if !UNITY_METRO - if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || - (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) - { - PollNextEventUnion u; - VREvent_t_Packed event_packed = new VREvent_t_Packed(); - u.pPollNextEventPacked = null; - u.pPollNextEvent = FnTable.PollNextEvent; - bool packed_result = u.pPollNextEventPacked(ref event_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VREvent_t_Packed))); - - event_packed.Unpack(ref pEvent); - return packed_result; - } -#endif - bool result = FnTable.PollNextEvent(ref pEvent,uncbVREvent); - return result; - } - public bool PollNextEventWithPose(ETrackingUniverseOrigin eOrigin,ref VREvent_t pEvent,uint uncbVREvent,ref TrackedDevicePose_t pTrackedDevicePose) - { - bool result = FnTable.PollNextEventWithPose(eOrigin,ref pEvent,uncbVREvent,ref pTrackedDevicePose); - return result; - } - public string GetEventTypeNameFromEnum(EVREventType eType) - { - IntPtr result = FnTable.GetEventTypeNameFromEnum(eType); - return Marshal.PtrToStringAnsi(result); - } - public HiddenAreaMesh_t GetHiddenAreaMesh(EVREye eEye,EHiddenAreaMeshType type) - { - HiddenAreaMesh_t result = FnTable.GetHiddenAreaMesh(eEye,type); - return result; - } -// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were -// originally mis-compiled with the wrong packing for Linux and OSX. - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetControllerStatePacked(uint unControllerDeviceIndex,ref VRControllerState_t_Packed pControllerState,uint unControllerStateSize); - [StructLayout(LayoutKind.Explicit)] - struct GetControllerStateUnion - { - [FieldOffset(0)] - public IVRSystem._GetControllerState pGetControllerState; - [FieldOffset(0)] - public _GetControllerStatePacked pGetControllerStatePacked; - } - public bool GetControllerState(uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,uint unControllerStateSize) - { -#if !UNITY_METRO - if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || - (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) - { - GetControllerStateUnion u; - VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(pControllerState); - u.pGetControllerStatePacked = null; - u.pGetControllerState = FnTable.GetControllerState; - bool packed_result = u.pGetControllerStatePacked(unControllerDeviceIndex,ref state_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t_Packed))); - - state_packed.Unpack(ref pControllerState); - return packed_result; - } -#endif - bool result = FnTable.GetControllerState(unControllerDeviceIndex,ref pControllerState,unControllerStateSize); - return result; - } -// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were -// originally mis-compiled with the wrong packing for Linux and OSX. - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetControllerStateWithPosePacked(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t_Packed pControllerState,uint unControllerStateSize,ref TrackedDevicePose_t pTrackedDevicePose); - [StructLayout(LayoutKind.Explicit)] - struct GetControllerStateWithPoseUnion - { - [FieldOffset(0)] - public IVRSystem._GetControllerStateWithPose pGetControllerStateWithPose; - [FieldOffset(0)] - public _GetControllerStateWithPosePacked pGetControllerStateWithPosePacked; - } - public bool GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin,uint unControllerDeviceIndex,ref VRControllerState_t pControllerState,uint unControllerStateSize,ref TrackedDevicePose_t pTrackedDevicePose) - { -#if !UNITY_METRO - if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || - (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) - { - GetControllerStateWithPoseUnion u; - VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(pControllerState); - u.pGetControllerStateWithPosePacked = null; - u.pGetControllerStateWithPose = FnTable.GetControllerStateWithPose; - bool packed_result = u.pGetControllerStateWithPosePacked(eOrigin,unControllerDeviceIndex,ref state_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t_Packed)),ref pTrackedDevicePose); - - state_packed.Unpack(ref pControllerState); - return packed_result; - } -#endif - bool result = FnTable.GetControllerStateWithPose(eOrigin,unControllerDeviceIndex,ref pControllerState,unControllerStateSize,ref pTrackedDevicePose); - return result; - } - public void TriggerHapticPulse(uint unControllerDeviceIndex,uint unAxisId,ushort usDurationMicroSec) - { - FnTable.TriggerHapticPulse(unControllerDeviceIndex,unAxisId,usDurationMicroSec); - } - public string GetButtonIdNameFromEnum(EVRButtonId eButtonId) - { - IntPtr result = FnTable.GetButtonIdNameFromEnum(eButtonId); - return Marshal.PtrToStringAnsi(result); - } - public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType) - { - IntPtr result = FnTable.GetControllerAxisTypeNameFromEnum(eAxisType); - return Marshal.PtrToStringAnsi(result); - } - public bool IsInputAvailable() - { - bool result = FnTable.IsInputAvailable(); - return result; - } - public bool IsSteamVRDrawingControllers() - { - bool result = FnTable.IsSteamVRDrawingControllers(); - return result; - } - public bool ShouldApplicationPause() - { - bool result = FnTable.ShouldApplicationPause(); - return result; - } - public bool ShouldApplicationReduceRenderingWork() - { - bool result = FnTable.ShouldApplicationReduceRenderingWork(); - return result; - } - public EVRFirmwareError PerformFirmwareUpdate(uint unDeviceIndex) - { - EVRFirmwareError result = FnTable.PerformFirmwareUpdate(unDeviceIndex); - return result; - } - public void AcknowledgeQuit_Exiting() - { - FnTable.AcknowledgeQuit_Exiting(); - } - public uint GetAppContainerFilePaths(System.Text.StringBuilder pchBuffer,uint unBufferSize) - { - uint result = FnTable.GetAppContainerFilePaths(pchBuffer,unBufferSize); - return result; - } - public string GetRuntimeVersion() - { - IntPtr result = FnTable.GetRuntimeVersion(); - return Marshal.PtrToStringAnsi(result); - } -} - - -public class CVRExtendedDisplay -{ - IVRExtendedDisplay FnTable; - internal CVRExtendedDisplay(IntPtr pInterface) - { - FnTable = (IVRExtendedDisplay)Marshal.PtrToStructure(pInterface, typeof(IVRExtendedDisplay)); - } - public void GetWindowBounds(ref int pnX,ref int pnY,ref uint pnWidth,ref uint pnHeight) - { - pnX = 0; - pnY = 0; - pnWidth = 0; - pnHeight = 0; - FnTable.GetWindowBounds(ref pnX,ref pnY,ref pnWidth,ref pnHeight); - } - public void GetEyeOutputViewport(EVREye eEye,ref uint pnX,ref uint pnY,ref uint pnWidth,ref uint pnHeight) - { - pnX = 0; - pnY = 0; - pnWidth = 0; - pnHeight = 0; - FnTable.GetEyeOutputViewport(eEye,ref pnX,ref pnY,ref pnWidth,ref pnHeight); - } - public void GetDXGIOutputInfo(ref int pnAdapterIndex,ref int pnAdapterOutputIndex) - { - pnAdapterIndex = 0; - pnAdapterOutputIndex = 0; - FnTable.GetDXGIOutputInfo(ref pnAdapterIndex,ref pnAdapterOutputIndex); - } -} - - -public class CVRTrackedCamera -{ - IVRTrackedCamera FnTable; - internal CVRTrackedCamera(IntPtr pInterface) - { - FnTable = (IVRTrackedCamera)Marshal.PtrToStructure(pInterface, typeof(IVRTrackedCamera)); - } - public string GetCameraErrorNameFromEnum(EVRTrackedCameraError eCameraError) - { - IntPtr result = FnTable.GetCameraErrorNameFromEnum(eCameraError); - return Marshal.PtrToStringAnsi(result); - } - public EVRTrackedCameraError HasCamera(uint nDeviceIndex,ref bool pHasCamera) - { - pHasCamera = false; - EVRTrackedCameraError result = FnTable.HasCamera(nDeviceIndex,ref pHasCamera); - return result; - } - public EVRTrackedCameraError GetCameraFrameSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref uint pnWidth,ref uint pnHeight,ref uint pnFrameBufferSize) - { - pnWidth = 0; - pnHeight = 0; - pnFrameBufferSize = 0; - EVRTrackedCameraError result = FnTable.GetCameraFrameSize(nDeviceIndex,eFrameType,ref pnWidth,ref pnHeight,ref pnFrameBufferSize); - return result; - } - public EVRTrackedCameraError GetCameraIntrinsics(uint nDeviceIndex,uint nCameraIndex,EVRTrackedCameraFrameType eFrameType,ref HmdVector2_t pFocalLength,ref HmdVector2_t pCenter) - { - EVRTrackedCameraError result = FnTable.GetCameraIntrinsics(nDeviceIndex,nCameraIndex,eFrameType,ref pFocalLength,ref pCenter); - return result; - } - public EVRTrackedCameraError GetCameraProjection(uint nDeviceIndex,uint nCameraIndex,EVRTrackedCameraFrameType eFrameType,float flZNear,float flZFar,ref HmdMatrix44_t pProjection) - { - EVRTrackedCameraError result = FnTable.GetCameraProjection(nDeviceIndex,nCameraIndex,eFrameType,flZNear,flZFar,ref pProjection); - return result; - } - public EVRTrackedCameraError AcquireVideoStreamingService(uint nDeviceIndex,ref ulong pHandle) - { - pHandle = 0; - EVRTrackedCameraError result = FnTable.AcquireVideoStreamingService(nDeviceIndex,ref pHandle); - return result; - } - public EVRTrackedCameraError ReleaseVideoStreamingService(ulong hTrackedCamera) - { - EVRTrackedCameraError result = FnTable.ReleaseVideoStreamingService(hTrackedCamera); - return result; - } - public EVRTrackedCameraError GetVideoStreamFrameBuffer(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pFrameBuffer,uint nFrameBufferSize,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) - { - EVRTrackedCameraError result = FnTable.GetVideoStreamFrameBuffer(hTrackedCamera,eFrameType,pFrameBuffer,nFrameBufferSize,ref pFrameHeader,nFrameHeaderSize); - return result; - } - public EVRTrackedCameraError GetVideoStreamTextureSize(uint nDeviceIndex,EVRTrackedCameraFrameType eFrameType,ref VRTextureBounds_t pTextureBounds,ref uint pnWidth,ref uint pnHeight) - { - pnWidth = 0; - pnHeight = 0; - EVRTrackedCameraError result = FnTable.GetVideoStreamTextureSize(nDeviceIndex,eFrameType,ref pTextureBounds,ref pnWidth,ref pnHeight); - return result; - } - public EVRTrackedCameraError GetVideoStreamTextureD3D11(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) - { - EVRTrackedCameraError result = FnTable.GetVideoStreamTextureD3D11(hTrackedCamera,eFrameType,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView,ref pFrameHeader,nFrameHeaderSize); - return result; - } - public EVRTrackedCameraError GetVideoStreamTextureGL(ulong hTrackedCamera,EVRTrackedCameraFrameType eFrameType,ref uint pglTextureId,ref CameraVideoStreamFrameHeader_t pFrameHeader,uint nFrameHeaderSize) - { - pglTextureId = 0; - EVRTrackedCameraError result = FnTable.GetVideoStreamTextureGL(hTrackedCamera,eFrameType,ref pglTextureId,ref pFrameHeader,nFrameHeaderSize); - return result; - } - public EVRTrackedCameraError ReleaseVideoStreamTextureGL(ulong hTrackedCamera,uint glTextureId) - { - EVRTrackedCameraError result = FnTable.ReleaseVideoStreamTextureGL(hTrackedCamera,glTextureId); - return result; - } - public void SetCameraTrackingSpace(ETrackingUniverseOrigin eUniverse) - { - FnTable.SetCameraTrackingSpace(eUniverse); - } - public ETrackingUniverseOrigin GetCameraTrackingSpace() - { - ETrackingUniverseOrigin result = FnTable.GetCameraTrackingSpace(); - return result; - } -} - - -public class CVRApplications -{ - IVRApplications FnTable; - internal CVRApplications(IntPtr pInterface) - { - FnTable = (IVRApplications)Marshal.PtrToStructure(pInterface, typeof(IVRApplications)); - } - public EVRApplicationError AddApplicationManifest(string pchApplicationManifestFullPath,bool bTemporary) - { - IntPtr pchApplicationManifestFullPathUtf8 = Utils.ToUtf8(pchApplicationManifestFullPath); - EVRApplicationError result = FnTable.AddApplicationManifest(pchApplicationManifestFullPathUtf8,bTemporary); - Marshal.FreeHGlobal(pchApplicationManifestFullPathUtf8); - return result; - } - public EVRApplicationError RemoveApplicationManifest(string pchApplicationManifestFullPath) - { - IntPtr pchApplicationManifestFullPathUtf8 = Utils.ToUtf8(pchApplicationManifestFullPath); - EVRApplicationError result = FnTable.RemoveApplicationManifest(pchApplicationManifestFullPathUtf8); - Marshal.FreeHGlobal(pchApplicationManifestFullPathUtf8); - return result; - } - public bool IsApplicationInstalled(string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - bool result = FnTable.IsApplicationInstalled(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public uint GetApplicationCount() - { - uint result = FnTable.GetApplicationCount(); - return result; - } - public EVRApplicationError GetApplicationKeyByIndex(uint unApplicationIndex,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) - { - EVRApplicationError result = FnTable.GetApplicationKeyByIndex(unApplicationIndex,pchAppKeyBuffer,unAppKeyBufferLen); - return result; - } - public EVRApplicationError GetApplicationKeyByProcessId(uint unProcessId,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) - { - EVRApplicationError result = FnTable.GetApplicationKeyByProcessId(unProcessId,pchAppKeyBuffer,unAppKeyBufferLen); - return result; - } - public EVRApplicationError LaunchApplication(string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - EVRApplicationError result = FnTable.LaunchApplication(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public EVRApplicationError LaunchTemplateApplication(string pchTemplateAppKey,string pchNewAppKey,AppOverrideKeys_t [] pKeys) - { - IntPtr pchTemplateAppKeyUtf8 = Utils.ToUtf8(pchTemplateAppKey); - IntPtr pchNewAppKeyUtf8 = Utils.ToUtf8(pchNewAppKey); - EVRApplicationError result = FnTable.LaunchTemplateApplication(pchTemplateAppKeyUtf8,pchNewAppKeyUtf8,pKeys,(uint) pKeys.Length); - Marshal.FreeHGlobal(pchTemplateAppKeyUtf8); - Marshal.FreeHGlobal(pchNewAppKeyUtf8); - return result; - } - public EVRApplicationError LaunchApplicationFromMimeType(string pchMimeType,string pchArgs) - { - IntPtr pchMimeTypeUtf8 = Utils.ToUtf8(pchMimeType); - IntPtr pchArgsUtf8 = Utils.ToUtf8(pchArgs); - EVRApplicationError result = FnTable.LaunchApplicationFromMimeType(pchMimeTypeUtf8,pchArgsUtf8); - Marshal.FreeHGlobal(pchMimeTypeUtf8); - Marshal.FreeHGlobal(pchArgsUtf8); - return result; - } - public EVRApplicationError LaunchDashboardOverlay(string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - EVRApplicationError result = FnTable.LaunchDashboardOverlay(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public bool CancelApplicationLaunch(string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - bool result = FnTable.CancelApplicationLaunch(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public EVRApplicationError IdentifyApplication(uint unProcessId,string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - EVRApplicationError result = FnTable.IdentifyApplication(unProcessId,pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public uint GetApplicationProcessId(string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - uint result = FnTable.GetApplicationProcessId(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public string GetApplicationsErrorNameFromEnum(EVRApplicationError error) - { - IntPtr result = FnTable.GetApplicationsErrorNameFromEnum(error); - return Marshal.PtrToStringAnsi(result); - } - public uint GetApplicationPropertyString(string pchAppKey,EVRApplicationProperty eProperty,System.Text.StringBuilder pchPropertyValueBuffer,uint unPropertyValueBufferLen,ref EVRApplicationError peError) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - uint result = FnTable.GetApplicationPropertyString(pchAppKeyUtf8,eProperty,pchPropertyValueBuffer,unPropertyValueBufferLen,ref peError); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public bool GetApplicationPropertyBool(string pchAppKey,EVRApplicationProperty eProperty,ref EVRApplicationError peError) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - bool result = FnTable.GetApplicationPropertyBool(pchAppKeyUtf8,eProperty,ref peError); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public ulong GetApplicationPropertyUint64(string pchAppKey,EVRApplicationProperty eProperty,ref EVRApplicationError peError) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - ulong result = FnTable.GetApplicationPropertyUint64(pchAppKeyUtf8,eProperty,ref peError); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public EVRApplicationError SetApplicationAutoLaunch(string pchAppKey,bool bAutoLaunch) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - EVRApplicationError result = FnTable.SetApplicationAutoLaunch(pchAppKeyUtf8,bAutoLaunch); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public bool GetApplicationAutoLaunch(string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - bool result = FnTable.GetApplicationAutoLaunch(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public EVRApplicationError SetDefaultApplicationForMimeType(string pchAppKey,string pchMimeType) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - IntPtr pchMimeTypeUtf8 = Utils.ToUtf8(pchMimeType); - EVRApplicationError result = FnTable.SetDefaultApplicationForMimeType(pchAppKeyUtf8,pchMimeTypeUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchMimeTypeUtf8); - return result; - } - public bool GetDefaultApplicationForMimeType(string pchMimeType,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) - { - IntPtr pchMimeTypeUtf8 = Utils.ToUtf8(pchMimeType); - bool result = FnTable.GetDefaultApplicationForMimeType(pchMimeTypeUtf8,pchAppKeyBuffer,unAppKeyBufferLen); - Marshal.FreeHGlobal(pchMimeTypeUtf8); - return result; - } - public bool GetApplicationSupportedMimeTypes(string pchAppKey,System.Text.StringBuilder pchMimeTypesBuffer,uint unMimeTypesBuffer) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - bool result = FnTable.GetApplicationSupportedMimeTypes(pchAppKeyUtf8,pchMimeTypesBuffer,unMimeTypesBuffer); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public uint GetApplicationsThatSupportMimeType(string pchMimeType,System.Text.StringBuilder pchAppKeysThatSupportBuffer,uint unAppKeysThatSupportBuffer) - { - IntPtr pchMimeTypeUtf8 = Utils.ToUtf8(pchMimeType); - uint result = FnTable.GetApplicationsThatSupportMimeType(pchMimeTypeUtf8,pchAppKeysThatSupportBuffer,unAppKeysThatSupportBuffer); - Marshal.FreeHGlobal(pchMimeTypeUtf8); - return result; - } - public uint GetApplicationLaunchArguments(uint unHandle,System.Text.StringBuilder pchArgs,uint unArgs) - { - uint result = FnTable.GetApplicationLaunchArguments(unHandle,pchArgs,unArgs); - return result; - } - public EVRApplicationError GetStartingApplication(System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen) - { - EVRApplicationError result = FnTable.GetStartingApplication(pchAppKeyBuffer,unAppKeyBufferLen); - return result; - } - public EVRSceneApplicationState GetSceneApplicationState() - { - EVRSceneApplicationState result = FnTable.GetSceneApplicationState(); - return result; - } - public EVRApplicationError PerformApplicationPrelaunchCheck(string pchAppKey) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - EVRApplicationError result = FnTable.PerformApplicationPrelaunchCheck(pchAppKeyUtf8); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public string GetSceneApplicationStateNameFromEnum(EVRSceneApplicationState state) - { - IntPtr result = FnTable.GetSceneApplicationStateNameFromEnum(state); - return Marshal.PtrToStringAnsi(result); - } - public EVRApplicationError LaunchInternalProcess(string pchBinaryPath,string pchArguments,string pchWorkingDirectory) - { - IntPtr pchBinaryPathUtf8 = Utils.ToUtf8(pchBinaryPath); - IntPtr pchArgumentsUtf8 = Utils.ToUtf8(pchArguments); - IntPtr pchWorkingDirectoryUtf8 = Utils.ToUtf8(pchWorkingDirectory); - EVRApplicationError result = FnTable.LaunchInternalProcess(pchBinaryPathUtf8,pchArgumentsUtf8,pchWorkingDirectoryUtf8); - Marshal.FreeHGlobal(pchBinaryPathUtf8); - Marshal.FreeHGlobal(pchArgumentsUtf8); - Marshal.FreeHGlobal(pchWorkingDirectoryUtf8); - return result; - } - public uint GetCurrentSceneProcessId() - { - uint result = FnTable.GetCurrentSceneProcessId(); - return result; - } -} - - -public class CVRChaperone -{ - IVRChaperone FnTable; - internal CVRChaperone(IntPtr pInterface) - { - FnTable = (IVRChaperone)Marshal.PtrToStructure(pInterface, typeof(IVRChaperone)); - } - public ChaperoneCalibrationState GetCalibrationState() - { - ChaperoneCalibrationState result = FnTable.GetCalibrationState(); - return result; - } - public bool GetPlayAreaSize(ref float pSizeX,ref float pSizeZ) - { - pSizeX = 0; - pSizeZ = 0; - bool result = FnTable.GetPlayAreaSize(ref pSizeX,ref pSizeZ); - return result; - } - public bool GetPlayAreaRect(ref HmdQuad_t rect) - { - bool result = FnTable.GetPlayAreaRect(ref rect); - return result; - } - public void ReloadInfo() - { - FnTable.ReloadInfo(); - } - public void SetSceneColor(HmdColor_t color) - { - FnTable.SetSceneColor(color); - } - public void GetBoundsColor(ref HmdColor_t pOutputColorArray,int nNumOutputColors,float flCollisionBoundsFadeDistance,ref HmdColor_t pOutputCameraColor) - { - FnTable.GetBoundsColor(ref pOutputColorArray,nNumOutputColors,flCollisionBoundsFadeDistance,ref pOutputCameraColor); - } - public bool AreBoundsVisible() - { - bool result = FnTable.AreBoundsVisible(); - return result; - } - public void ForceBoundsVisible(bool bForce) - { - FnTable.ForceBoundsVisible(bForce); - } - public void ResetZeroPose(ETrackingUniverseOrigin eTrackingUniverseOrigin) - { - FnTable.ResetZeroPose(eTrackingUniverseOrigin); - } -} - - -public class CVRChaperoneSetup -{ - IVRChaperoneSetup FnTable; - internal CVRChaperoneSetup(IntPtr pInterface) - { - FnTable = (IVRChaperoneSetup)Marshal.PtrToStructure(pInterface, typeof(IVRChaperoneSetup)); - } - public bool CommitWorkingCopy(EChaperoneConfigFile configFile) - { - bool result = FnTable.CommitWorkingCopy(configFile); - return result; - } - public void RevertWorkingCopy() - { - FnTable.RevertWorkingCopy(); - } - public bool GetWorkingPlayAreaSize(ref float pSizeX,ref float pSizeZ) - { - pSizeX = 0; - pSizeZ = 0; - bool result = FnTable.GetWorkingPlayAreaSize(ref pSizeX,ref pSizeZ); - return result; - } - public bool GetWorkingPlayAreaRect(ref HmdQuad_t rect) - { - bool result = FnTable.GetWorkingPlayAreaRect(ref rect); - return result; - } - public bool GetWorkingCollisionBoundsInfo(out HmdQuad_t [] pQuadsBuffer) - { - uint punQuadsCount = 0; - bool result = FnTable.GetWorkingCollisionBoundsInfo(null,ref punQuadsCount); - pQuadsBuffer= new HmdQuad_t[punQuadsCount]; - result = FnTable.GetWorkingCollisionBoundsInfo(pQuadsBuffer,ref punQuadsCount); - return result; - } - public bool GetLiveCollisionBoundsInfo(out HmdQuad_t [] pQuadsBuffer) - { - uint punQuadsCount = 0; - bool result = FnTable.GetLiveCollisionBoundsInfo(null,ref punQuadsCount); - pQuadsBuffer= new HmdQuad_t[punQuadsCount]; - result = FnTable.GetLiveCollisionBoundsInfo(pQuadsBuffer,ref punQuadsCount); - return result; - } - public bool GetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose) - { - bool result = FnTable.GetWorkingSeatedZeroPoseToRawTrackingPose(ref pmatSeatedZeroPoseToRawTrackingPose); - return result; - } - public bool GetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatStandingZeroPoseToRawTrackingPose) - { - bool result = FnTable.GetWorkingStandingZeroPoseToRawTrackingPose(ref pmatStandingZeroPoseToRawTrackingPose); - return result; - } - public void SetWorkingPlayAreaSize(float sizeX,float sizeZ) - { - FnTable.SetWorkingPlayAreaSize(sizeX,sizeZ); - } - public void SetWorkingCollisionBoundsInfo(HmdQuad_t [] pQuadsBuffer) - { - FnTable.SetWorkingCollisionBoundsInfo(pQuadsBuffer,(uint) pQuadsBuffer.Length); - } - public void SetWorkingPerimeter(HmdVector2_t [] pPointBuffer) - { - FnTable.SetWorkingPerimeter(pPointBuffer,(uint) pPointBuffer.Length); - } - public void SetWorkingSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatSeatedZeroPoseToRawTrackingPose) - { - FnTable.SetWorkingSeatedZeroPoseToRawTrackingPose(ref pMatSeatedZeroPoseToRawTrackingPose); - } - public void SetWorkingStandingZeroPoseToRawTrackingPose(ref HmdMatrix34_t pMatStandingZeroPoseToRawTrackingPose) - { - FnTable.SetWorkingStandingZeroPoseToRawTrackingPose(ref pMatStandingZeroPoseToRawTrackingPose); - } - public void ReloadFromDisk(EChaperoneConfigFile configFile) - { - FnTable.ReloadFromDisk(configFile); - } - public bool GetLiveSeatedZeroPoseToRawTrackingPose(ref HmdMatrix34_t pmatSeatedZeroPoseToRawTrackingPose) - { - bool result = FnTable.GetLiveSeatedZeroPoseToRawTrackingPose(ref pmatSeatedZeroPoseToRawTrackingPose); - return result; - } - public bool ExportLiveToBuffer(System.Text.StringBuilder pBuffer,ref uint pnBufferLength) - { - pnBufferLength = 0; - bool result = FnTable.ExportLiveToBuffer(pBuffer,ref pnBufferLength); - return result; - } - public bool ImportFromBufferToWorking(string pBuffer,uint nImportFlags) - { - IntPtr pBufferUtf8 = Utils.ToUtf8(pBuffer); - bool result = FnTable.ImportFromBufferToWorking(pBufferUtf8,nImportFlags); - Marshal.FreeHGlobal(pBufferUtf8); - return result; - } - public void ShowWorkingSetPreview() - { - FnTable.ShowWorkingSetPreview(); - } - public void HideWorkingSetPreview() - { - FnTable.HideWorkingSetPreview(); - } - public void RoomSetupStarting() - { - FnTable.RoomSetupStarting(); - } -} - - -public class CVRCompositor -{ - IVRCompositor FnTable; - internal CVRCompositor(IntPtr pInterface) - { - FnTable = (IVRCompositor)Marshal.PtrToStructure(pInterface, typeof(IVRCompositor)); - } - public void SetTrackingSpace(ETrackingUniverseOrigin eOrigin) - { - FnTable.SetTrackingSpace(eOrigin); - } - public ETrackingUniverseOrigin GetTrackingSpace() - { - ETrackingUniverseOrigin result = FnTable.GetTrackingSpace(); - return result; - } - public EVRCompositorError WaitGetPoses(TrackedDevicePose_t [] pRenderPoseArray,TrackedDevicePose_t [] pGamePoseArray) - { - EVRCompositorError result = FnTable.WaitGetPoses(pRenderPoseArray,(uint) pRenderPoseArray.Length,pGamePoseArray,(uint) pGamePoseArray.Length); - return result; - } - public EVRCompositorError GetLastPoses(TrackedDevicePose_t [] pRenderPoseArray,TrackedDevicePose_t [] pGamePoseArray) - { - EVRCompositorError result = FnTable.GetLastPoses(pRenderPoseArray,(uint) pRenderPoseArray.Length,pGamePoseArray,(uint) pGamePoseArray.Length); - return result; - } - public EVRCompositorError GetLastPoseForTrackedDeviceIndex(uint unDeviceIndex,ref TrackedDevicePose_t pOutputPose,ref TrackedDevicePose_t pOutputGamePose) - { - EVRCompositorError result = FnTable.GetLastPoseForTrackedDeviceIndex(unDeviceIndex,ref pOutputPose,ref pOutputGamePose); - return result; - } - public EVRCompositorError Submit(EVREye eEye,ref Texture_t pTexture,ref VRTextureBounds_t pBounds,EVRSubmitFlags nSubmitFlags) - { - EVRCompositorError result = FnTable.Submit(eEye,ref pTexture,ref pBounds,nSubmitFlags); - return result; - } - public void ClearLastSubmittedFrame() - { - FnTable.ClearLastSubmittedFrame(); - } - public void PostPresentHandoff() - { - FnTable.PostPresentHandoff(); - } - public bool GetFrameTiming(ref Compositor_FrameTiming pTiming,uint unFramesAgo) - { - bool result = FnTable.GetFrameTiming(ref pTiming,unFramesAgo); - return result; - } - public uint GetFrameTimings(Compositor_FrameTiming [] pTiming) - { - uint result = FnTable.GetFrameTimings(pTiming,(uint) pTiming.Length); - return result; - } - public float GetFrameTimeRemaining() - { - float result = FnTable.GetFrameTimeRemaining(); - return result; - } - public void GetCumulativeStats(ref Compositor_CumulativeStats pStats,uint nStatsSizeInBytes) - { - FnTable.GetCumulativeStats(ref pStats,nStatsSizeInBytes); - } - public void FadeToColor(float fSeconds,float fRed,float fGreen,float fBlue,float fAlpha,bool bBackground) - { - FnTable.FadeToColor(fSeconds,fRed,fGreen,fBlue,fAlpha,bBackground); - } - public HmdColor_t GetCurrentFadeColor(bool bBackground) - { - HmdColor_t result = FnTable.GetCurrentFadeColor(bBackground); - return result; - } - public void FadeGrid(float fSeconds,bool bFadeIn) - { - FnTable.FadeGrid(fSeconds,bFadeIn); - } - public float GetCurrentGridAlpha() - { - float result = FnTable.GetCurrentGridAlpha(); - return result; - } - public EVRCompositorError SetSkyboxOverride(Texture_t [] pTextures) - { - EVRCompositorError result = FnTable.SetSkyboxOverride(pTextures,(uint) pTextures.Length); - return result; - } - public void ClearSkyboxOverride() - { - FnTable.ClearSkyboxOverride(); - } - public void CompositorBringToFront() - { - FnTable.CompositorBringToFront(); - } - public void CompositorGoToBack() - { - FnTable.CompositorGoToBack(); - } - public void CompositorQuit() - { - FnTable.CompositorQuit(); - } - public bool IsFullscreen() - { - bool result = FnTable.IsFullscreen(); - return result; - } - public uint GetCurrentSceneFocusProcess() - { - uint result = FnTable.GetCurrentSceneFocusProcess(); - return result; - } - public uint GetLastFrameRenderer() - { - uint result = FnTable.GetLastFrameRenderer(); - return result; - } - public bool CanRenderScene() - { - bool result = FnTable.CanRenderScene(); - return result; - } - public void ShowMirrorWindow() - { - FnTable.ShowMirrorWindow(); - } - public void HideMirrorWindow() - { - FnTable.HideMirrorWindow(); - } - public bool IsMirrorWindowVisible() - { - bool result = FnTable.IsMirrorWindowVisible(); - return result; - } - public void CompositorDumpImages() - { - FnTable.CompositorDumpImages(); - } - public bool ShouldAppRenderWithLowResources() - { - bool result = FnTable.ShouldAppRenderWithLowResources(); - return result; - } - public void ForceInterleavedReprojectionOn(bool bOverride) - { - FnTable.ForceInterleavedReprojectionOn(bOverride); - } - public void ForceReconnectProcess() - { - FnTable.ForceReconnectProcess(); - } - public void SuspendRendering(bool bSuspend) - { - FnTable.SuspendRendering(bSuspend); - } - public EVRCompositorError GetMirrorTextureD3D11(EVREye eEye,IntPtr pD3D11DeviceOrResource,ref IntPtr ppD3D11ShaderResourceView) - { - EVRCompositorError result = FnTable.GetMirrorTextureD3D11(eEye,pD3D11DeviceOrResource,ref ppD3D11ShaderResourceView); - return result; - } - public void ReleaseMirrorTextureD3D11(IntPtr pD3D11ShaderResourceView) - { - FnTable.ReleaseMirrorTextureD3D11(pD3D11ShaderResourceView); - } - public EVRCompositorError GetMirrorTextureGL(EVREye eEye,ref uint pglTextureId,IntPtr pglSharedTextureHandle) - { - pglTextureId = 0; - EVRCompositorError result = FnTable.GetMirrorTextureGL(eEye,ref pglTextureId,pglSharedTextureHandle); - return result; - } - public bool ReleaseSharedGLTexture(uint glTextureId,IntPtr glSharedTextureHandle) - { - bool result = FnTable.ReleaseSharedGLTexture(glTextureId,glSharedTextureHandle); - return result; - } - public void LockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) - { - FnTable.LockGLSharedTextureForAccess(glSharedTextureHandle); - } - public void UnlockGLSharedTextureForAccess(IntPtr glSharedTextureHandle) - { - FnTable.UnlockGLSharedTextureForAccess(glSharedTextureHandle); - } - public uint GetVulkanInstanceExtensionsRequired(System.Text.StringBuilder pchValue,uint unBufferSize) - { - uint result = FnTable.GetVulkanInstanceExtensionsRequired(pchValue,unBufferSize); - return result; - } - public uint GetVulkanDeviceExtensionsRequired(IntPtr pPhysicalDevice,System.Text.StringBuilder pchValue,uint unBufferSize) - { - uint result = FnTable.GetVulkanDeviceExtensionsRequired(pPhysicalDevice,pchValue,unBufferSize); - return result; - } - public void SetExplicitTimingMode(EVRCompositorTimingMode eTimingMode) - { - FnTable.SetExplicitTimingMode(eTimingMode); - } - public EVRCompositorError SubmitExplicitTimingData() - { - EVRCompositorError result = FnTable.SubmitExplicitTimingData(); - return result; - } - public bool IsMotionSmoothingEnabled() - { - bool result = FnTable.IsMotionSmoothingEnabled(); - return result; - } - public bool IsMotionSmoothingSupported() - { - bool result = FnTable.IsMotionSmoothingSupported(); - return result; - } - public bool IsCurrentSceneFocusAppLoading() - { - bool result = FnTable.IsCurrentSceneFocusAppLoading(); - return result; - } - public EVRCompositorError SetStageOverride_Async(string pchRenderModelPath,ref HmdMatrix34_t pTransform,ref Compositor_StageRenderSettings pRenderSettings,uint nSizeOfRenderSettings) - { - IntPtr pchRenderModelPathUtf8 = Utils.ToUtf8(pchRenderModelPath); - EVRCompositorError result = FnTable.SetStageOverride_Async(pchRenderModelPathUtf8,ref pTransform,ref pRenderSettings,nSizeOfRenderSettings); - Marshal.FreeHGlobal(pchRenderModelPathUtf8); - return result; - } - public void ClearStageOverride() - { - FnTable.ClearStageOverride(); - } - public bool GetCompositorBenchmarkResults(ref Compositor_BenchmarkResults pBenchmarkResults,uint nSizeOfBenchmarkResults) - { - bool result = FnTable.GetCompositorBenchmarkResults(ref pBenchmarkResults,nSizeOfBenchmarkResults); - return result; - } - public EVRCompositorError GetLastPosePredictionIDs(ref uint pRenderPosePredictionID,ref uint pGamePosePredictionID) - { - pRenderPosePredictionID = 0; - pGamePosePredictionID = 0; - EVRCompositorError result = FnTable.GetLastPosePredictionIDs(ref pRenderPosePredictionID,ref pGamePosePredictionID); - return result; - } - public EVRCompositorError GetPosesForFrame(uint unPosePredictionID,TrackedDevicePose_t [] pPoseArray) - { - EVRCompositorError result = FnTable.GetPosesForFrame(unPosePredictionID,pPoseArray,(uint) pPoseArray.Length); - return result; - } -} - - -public class CVROverlay -{ - IVROverlay FnTable; - internal CVROverlay(IntPtr pInterface) - { - FnTable = (IVROverlay)Marshal.PtrToStructure(pInterface, typeof(IVROverlay)); - } - public EVROverlayError FindOverlay(string pchOverlayKey,ref ulong pOverlayHandle) - { - IntPtr pchOverlayKeyUtf8 = Utils.ToUtf8(pchOverlayKey); - pOverlayHandle = 0; - EVROverlayError result = FnTable.FindOverlay(pchOverlayKeyUtf8,ref pOverlayHandle); - Marshal.FreeHGlobal(pchOverlayKeyUtf8); - return result; - } - public EVROverlayError CreateOverlay(string pchOverlayKey,string pchOverlayName,ref ulong pOverlayHandle) - { - IntPtr pchOverlayKeyUtf8 = Utils.ToUtf8(pchOverlayKey); - IntPtr pchOverlayNameUtf8 = Utils.ToUtf8(pchOverlayName); - pOverlayHandle = 0; - EVROverlayError result = FnTable.CreateOverlay(pchOverlayKeyUtf8,pchOverlayNameUtf8,ref pOverlayHandle); - Marshal.FreeHGlobal(pchOverlayKeyUtf8); - Marshal.FreeHGlobal(pchOverlayNameUtf8); - return result; - } - public EVROverlayError DestroyOverlay(ulong ulOverlayHandle) - { - EVROverlayError result = FnTable.DestroyOverlay(ulOverlayHandle); - return result; - } - public uint GetOverlayKey(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref EVROverlayError pError) - { - uint result = FnTable.GetOverlayKey(ulOverlayHandle,pchValue,unBufferSize,ref pError); - return result; - } - public uint GetOverlayName(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref EVROverlayError pError) - { - uint result = FnTable.GetOverlayName(ulOverlayHandle,pchValue,unBufferSize,ref pError); - return result; - } - public EVROverlayError SetOverlayName(ulong ulOverlayHandle,string pchName) - { - IntPtr pchNameUtf8 = Utils.ToUtf8(pchName); - EVROverlayError result = FnTable.SetOverlayName(ulOverlayHandle,pchNameUtf8); - Marshal.FreeHGlobal(pchNameUtf8); - return result; - } - public EVROverlayError GetOverlayImageData(ulong ulOverlayHandle,IntPtr pvBuffer,uint unBufferSize,ref uint punWidth,ref uint punHeight) - { - punWidth = 0; - punHeight = 0; - EVROverlayError result = FnTable.GetOverlayImageData(ulOverlayHandle,pvBuffer,unBufferSize,ref punWidth,ref punHeight); - return result; - } - public string GetOverlayErrorNameFromEnum(EVROverlayError error) - { - IntPtr result = FnTable.GetOverlayErrorNameFromEnum(error); - return Marshal.PtrToStringAnsi(result); - } - public EVROverlayError SetOverlayRenderingPid(ulong ulOverlayHandle,uint unPID) - { - EVROverlayError result = FnTable.SetOverlayRenderingPid(ulOverlayHandle,unPID); - return result; - } - public uint GetOverlayRenderingPid(ulong ulOverlayHandle) - { - uint result = FnTable.GetOverlayRenderingPid(ulOverlayHandle); - return result; - } - public EVROverlayError SetOverlayFlag(ulong ulOverlayHandle,VROverlayFlags eOverlayFlag,bool bEnabled) - { - EVROverlayError result = FnTable.SetOverlayFlag(ulOverlayHandle,eOverlayFlag,bEnabled); - return result; - } - public EVROverlayError GetOverlayFlag(ulong ulOverlayHandle,VROverlayFlags eOverlayFlag,ref bool pbEnabled) - { - pbEnabled = false; - EVROverlayError result = FnTable.GetOverlayFlag(ulOverlayHandle,eOverlayFlag,ref pbEnabled); - return result; - } - public EVROverlayError GetOverlayFlags(ulong ulOverlayHandle,ref uint pFlags) - { - pFlags = 0; - EVROverlayError result = FnTable.GetOverlayFlags(ulOverlayHandle,ref pFlags); - return result; - } - public EVROverlayError SetOverlayColor(ulong ulOverlayHandle,float fRed,float fGreen,float fBlue) - { - EVROverlayError result = FnTable.SetOverlayColor(ulOverlayHandle,fRed,fGreen,fBlue); - return result; - } - public EVROverlayError GetOverlayColor(ulong ulOverlayHandle,ref float pfRed,ref float pfGreen,ref float pfBlue) - { - pfRed = 0; - pfGreen = 0; - pfBlue = 0; - EVROverlayError result = FnTable.GetOverlayColor(ulOverlayHandle,ref pfRed,ref pfGreen,ref pfBlue); - return result; - } - public EVROverlayError SetOverlayAlpha(ulong ulOverlayHandle,float fAlpha) - { - EVROverlayError result = FnTable.SetOverlayAlpha(ulOverlayHandle,fAlpha); - return result; - } - public EVROverlayError GetOverlayAlpha(ulong ulOverlayHandle,ref float pfAlpha) - { - pfAlpha = 0; - EVROverlayError result = FnTable.GetOverlayAlpha(ulOverlayHandle,ref pfAlpha); - return result; - } - public EVROverlayError SetOverlayTexelAspect(ulong ulOverlayHandle,float fTexelAspect) - { - EVROverlayError result = FnTable.SetOverlayTexelAspect(ulOverlayHandle,fTexelAspect); - return result; - } - public EVROverlayError GetOverlayTexelAspect(ulong ulOverlayHandle,ref float pfTexelAspect) - { - pfTexelAspect = 0; - EVROverlayError result = FnTable.GetOverlayTexelAspect(ulOverlayHandle,ref pfTexelAspect); - return result; - } - public EVROverlayError SetOverlaySortOrder(ulong ulOverlayHandle,uint unSortOrder) - { - EVROverlayError result = FnTable.SetOverlaySortOrder(ulOverlayHandle,unSortOrder); - return result; - } - public EVROverlayError GetOverlaySortOrder(ulong ulOverlayHandle,ref uint punSortOrder) - { - punSortOrder = 0; - EVROverlayError result = FnTable.GetOverlaySortOrder(ulOverlayHandle,ref punSortOrder); - return result; - } - public EVROverlayError SetOverlayWidthInMeters(ulong ulOverlayHandle,float fWidthInMeters) - { - EVROverlayError result = FnTable.SetOverlayWidthInMeters(ulOverlayHandle,fWidthInMeters); - return result; - } - public EVROverlayError GetOverlayWidthInMeters(ulong ulOverlayHandle,ref float pfWidthInMeters) - { - pfWidthInMeters = 0; - EVROverlayError result = FnTable.GetOverlayWidthInMeters(ulOverlayHandle,ref pfWidthInMeters); - return result; - } - public EVROverlayError SetOverlayCurvature(ulong ulOverlayHandle,float fCurvature) - { - EVROverlayError result = FnTable.SetOverlayCurvature(ulOverlayHandle,fCurvature); - return result; - } - public EVROverlayError GetOverlayCurvature(ulong ulOverlayHandle,ref float pfCurvature) - { - pfCurvature = 0; - EVROverlayError result = FnTable.GetOverlayCurvature(ulOverlayHandle,ref pfCurvature); - return result; - } - public EVROverlayError SetOverlayTextureColorSpace(ulong ulOverlayHandle,EColorSpace eTextureColorSpace) - { - EVROverlayError result = FnTable.SetOverlayTextureColorSpace(ulOverlayHandle,eTextureColorSpace); - return result; - } - public EVROverlayError GetOverlayTextureColorSpace(ulong ulOverlayHandle,ref EColorSpace peTextureColorSpace) - { - EVROverlayError result = FnTable.GetOverlayTextureColorSpace(ulOverlayHandle,ref peTextureColorSpace); - return result; - } - public EVROverlayError SetOverlayTextureBounds(ulong ulOverlayHandle,ref VRTextureBounds_t pOverlayTextureBounds) - { - EVROverlayError result = FnTable.SetOverlayTextureBounds(ulOverlayHandle,ref pOverlayTextureBounds); - return result; - } - public EVROverlayError GetOverlayTextureBounds(ulong ulOverlayHandle,ref VRTextureBounds_t pOverlayTextureBounds) - { - EVROverlayError result = FnTable.GetOverlayTextureBounds(ulOverlayHandle,ref pOverlayTextureBounds); - return result; - } - public EVROverlayError GetOverlayTransformType(ulong ulOverlayHandle,ref VROverlayTransformType peTransformType) - { - EVROverlayError result = FnTable.GetOverlayTransformType(ulOverlayHandle,ref peTransformType); - return result; - } - public EVROverlayError SetOverlayTransformAbsolute(ulong ulOverlayHandle,ETrackingUniverseOrigin eTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform) - { - EVROverlayError result = FnTable.SetOverlayTransformAbsolute(ulOverlayHandle,eTrackingOrigin,ref pmatTrackingOriginToOverlayTransform); - return result; - } - public EVROverlayError GetOverlayTransformAbsolute(ulong ulOverlayHandle,ref ETrackingUniverseOrigin peTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToOverlayTransform) - { - EVROverlayError result = FnTable.GetOverlayTransformAbsolute(ulOverlayHandle,ref peTrackingOrigin,ref pmatTrackingOriginToOverlayTransform); - return result; - } - public EVROverlayError SetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle,uint unTrackedDevice,ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform) - { - EVROverlayError result = FnTable.SetOverlayTransformTrackedDeviceRelative(ulOverlayHandle,unTrackedDevice,ref pmatTrackedDeviceToOverlayTransform); - return result; - } - public EVROverlayError GetOverlayTransformTrackedDeviceRelative(ulong ulOverlayHandle,ref uint punTrackedDevice,ref HmdMatrix34_t pmatTrackedDeviceToOverlayTransform) - { - punTrackedDevice = 0; - EVROverlayError result = FnTable.GetOverlayTransformTrackedDeviceRelative(ulOverlayHandle,ref punTrackedDevice,ref pmatTrackedDeviceToOverlayTransform); - return result; - } - public EVROverlayError SetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle,uint unDeviceIndex,string pchComponentName) - { - IntPtr pchComponentNameUtf8 = Utils.ToUtf8(pchComponentName); - EVROverlayError result = FnTable.SetOverlayTransformTrackedDeviceComponent(ulOverlayHandle,unDeviceIndex,pchComponentNameUtf8); - Marshal.FreeHGlobal(pchComponentNameUtf8); - return result; - } - public EVROverlayError GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle,ref uint punDeviceIndex,System.Text.StringBuilder pchComponentName,uint unComponentNameSize) - { - punDeviceIndex = 0; - EVROverlayError result = FnTable.GetOverlayTransformTrackedDeviceComponent(ulOverlayHandle,ref punDeviceIndex,pchComponentName,unComponentNameSize); - return result; - } - public EVROverlayError GetOverlayTransformOverlayRelative(ulong ulOverlayHandle,ref ulong ulOverlayHandleParent,ref HmdMatrix34_t pmatParentOverlayToOverlayTransform) - { - ulOverlayHandleParent = 0; - EVROverlayError result = FnTable.GetOverlayTransformOverlayRelative(ulOverlayHandle,ref ulOverlayHandleParent,ref pmatParentOverlayToOverlayTransform); - return result; - } - public EVROverlayError SetOverlayTransformOverlayRelative(ulong ulOverlayHandle,ulong ulOverlayHandleParent,ref HmdMatrix34_t pmatParentOverlayToOverlayTransform) - { - EVROverlayError result = FnTable.SetOverlayTransformOverlayRelative(ulOverlayHandle,ulOverlayHandleParent,ref pmatParentOverlayToOverlayTransform); - return result; - } - public EVROverlayError SetOverlayTransformCursor(ulong ulCursorOverlayHandle,ref HmdVector2_t pvHotspot) - { - EVROverlayError result = FnTable.SetOverlayTransformCursor(ulCursorOverlayHandle,ref pvHotspot); - return result; - } - public EVROverlayError GetOverlayTransformCursor(ulong ulOverlayHandle,ref HmdVector2_t pvHotspot) - { - EVROverlayError result = FnTable.GetOverlayTransformCursor(ulOverlayHandle,ref pvHotspot); - return result; - } - public EVROverlayError ShowOverlay(ulong ulOverlayHandle) - { - EVROverlayError result = FnTable.ShowOverlay(ulOverlayHandle); - return result; - } - public EVROverlayError HideOverlay(ulong ulOverlayHandle) - { - EVROverlayError result = FnTable.HideOverlay(ulOverlayHandle); - return result; - } - public bool IsOverlayVisible(ulong ulOverlayHandle) - { - bool result = FnTable.IsOverlayVisible(ulOverlayHandle); - return result; - } - public EVROverlayError GetTransformForOverlayCoordinates(ulong ulOverlayHandle,ETrackingUniverseOrigin eTrackingOrigin,HmdVector2_t coordinatesInOverlay,ref HmdMatrix34_t pmatTransform) - { - EVROverlayError result = FnTable.GetTransformForOverlayCoordinates(ulOverlayHandle,eTrackingOrigin,coordinatesInOverlay,ref pmatTransform); - return result; - } -// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were -// originally mis-compiled with the wrong packing for Linux and OSX. - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _PollNextOverlayEventPacked(ulong ulOverlayHandle,ref VREvent_t_Packed pEvent,uint uncbVREvent); - [StructLayout(LayoutKind.Explicit)] - struct PollNextOverlayEventUnion - { - [FieldOffset(0)] - public IVROverlay._PollNextOverlayEvent pPollNextOverlayEvent; - [FieldOffset(0)] - public _PollNextOverlayEventPacked pPollNextOverlayEventPacked; - } - public bool PollNextOverlayEvent(ulong ulOverlayHandle,ref VREvent_t pEvent,uint uncbVREvent) - { -#if !UNITY_METRO - if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || - (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) - { - PollNextOverlayEventUnion u; - VREvent_t_Packed event_packed = new VREvent_t_Packed(); - u.pPollNextOverlayEventPacked = null; - u.pPollNextOverlayEvent = FnTable.PollNextOverlayEvent; - bool packed_result = u.pPollNextOverlayEventPacked(ulOverlayHandle,ref event_packed,(uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VREvent_t_Packed))); - - event_packed.Unpack(ref pEvent); - return packed_result; - } -#endif - bool result = FnTable.PollNextOverlayEvent(ulOverlayHandle,ref pEvent,uncbVREvent); - return result; - } - public EVROverlayError GetOverlayInputMethod(ulong ulOverlayHandle,ref VROverlayInputMethod peInputMethod) - { - EVROverlayError result = FnTable.GetOverlayInputMethod(ulOverlayHandle,ref peInputMethod); - return result; - } - public EVROverlayError SetOverlayInputMethod(ulong ulOverlayHandle,VROverlayInputMethod eInputMethod) - { - EVROverlayError result = FnTable.SetOverlayInputMethod(ulOverlayHandle,eInputMethod); - return result; - } - public EVROverlayError GetOverlayMouseScale(ulong ulOverlayHandle,ref HmdVector2_t pvecMouseScale) - { - EVROverlayError result = FnTable.GetOverlayMouseScale(ulOverlayHandle,ref pvecMouseScale); - return result; - } - public EVROverlayError SetOverlayMouseScale(ulong ulOverlayHandle,ref HmdVector2_t pvecMouseScale) - { - EVROverlayError result = FnTable.SetOverlayMouseScale(ulOverlayHandle,ref pvecMouseScale); - return result; - } - public bool ComputeOverlayIntersection(ulong ulOverlayHandle,ref VROverlayIntersectionParams_t pParams,ref VROverlayIntersectionResults_t pResults) - { - bool result = FnTable.ComputeOverlayIntersection(ulOverlayHandle,ref pParams,ref pResults); - return result; - } - public bool IsHoverTargetOverlay(ulong ulOverlayHandle) - { - bool result = FnTable.IsHoverTargetOverlay(ulOverlayHandle); - return result; - } - public EVROverlayError SetOverlayIntersectionMask(ulong ulOverlayHandle,ref VROverlayIntersectionMaskPrimitive_t pMaskPrimitives,uint unNumMaskPrimitives,uint unPrimitiveSize) - { - EVROverlayError result = FnTable.SetOverlayIntersectionMask(ulOverlayHandle,ref pMaskPrimitives,unNumMaskPrimitives,unPrimitiveSize); - return result; - } - public EVROverlayError TriggerLaserMouseHapticVibration(ulong ulOverlayHandle,float fDurationSeconds,float fFrequency,float fAmplitude) - { - EVROverlayError result = FnTable.TriggerLaserMouseHapticVibration(ulOverlayHandle,fDurationSeconds,fFrequency,fAmplitude); - return result; - } - public EVROverlayError SetOverlayCursor(ulong ulOverlayHandle,ulong ulCursorHandle) - { - EVROverlayError result = FnTable.SetOverlayCursor(ulOverlayHandle,ulCursorHandle); - return result; - } - public EVROverlayError SetOverlayCursorPositionOverride(ulong ulOverlayHandle,ref HmdVector2_t pvCursor) - { - EVROverlayError result = FnTable.SetOverlayCursorPositionOverride(ulOverlayHandle,ref pvCursor); - return result; - } - public EVROverlayError ClearOverlayCursorPositionOverride(ulong ulOverlayHandle) - { - EVROverlayError result = FnTable.ClearOverlayCursorPositionOverride(ulOverlayHandle); - return result; - } - public EVROverlayError SetOverlayTexture(ulong ulOverlayHandle,ref Texture_t pTexture) - { - EVROverlayError result = FnTable.SetOverlayTexture(ulOverlayHandle,ref pTexture); - return result; - } - public EVROverlayError ClearOverlayTexture(ulong ulOverlayHandle) - { - EVROverlayError result = FnTable.ClearOverlayTexture(ulOverlayHandle); - return result; - } - public EVROverlayError SetOverlayRaw(ulong ulOverlayHandle,IntPtr pvBuffer,uint unWidth,uint unHeight,uint unBytesPerPixel) - { - EVROverlayError result = FnTable.SetOverlayRaw(ulOverlayHandle,pvBuffer,unWidth,unHeight,unBytesPerPixel); - return result; - } - public EVROverlayError SetOverlayFromFile(ulong ulOverlayHandle,string pchFilePath) - { - IntPtr pchFilePathUtf8 = Utils.ToUtf8(pchFilePath); - EVROverlayError result = FnTable.SetOverlayFromFile(ulOverlayHandle,pchFilePathUtf8); - Marshal.FreeHGlobal(pchFilePathUtf8); - return result; - } - public EVROverlayError GetOverlayTexture(ulong ulOverlayHandle,ref IntPtr pNativeTextureHandle,IntPtr pNativeTextureRef,ref uint pWidth,ref uint pHeight,ref uint pNativeFormat,ref ETextureType pAPIType,ref EColorSpace pColorSpace,ref VRTextureBounds_t pTextureBounds) - { - pWidth = 0; - pHeight = 0; - pNativeFormat = 0; - EVROverlayError result = FnTable.GetOverlayTexture(ulOverlayHandle,ref pNativeTextureHandle,pNativeTextureRef,ref pWidth,ref pHeight,ref pNativeFormat,ref pAPIType,ref pColorSpace,ref pTextureBounds); - return result; - } - public EVROverlayError ReleaseNativeOverlayHandle(ulong ulOverlayHandle,IntPtr pNativeTextureHandle) - { - EVROverlayError result = FnTable.ReleaseNativeOverlayHandle(ulOverlayHandle,pNativeTextureHandle); - return result; - } - public EVROverlayError GetOverlayTextureSize(ulong ulOverlayHandle,ref uint pWidth,ref uint pHeight) - { - pWidth = 0; - pHeight = 0; - EVROverlayError result = FnTable.GetOverlayTextureSize(ulOverlayHandle,ref pWidth,ref pHeight); - return result; - } - public EVROverlayError CreateDashboardOverlay(string pchOverlayKey,string pchOverlayFriendlyName,ref ulong pMainHandle,ref ulong pThumbnailHandle) - { - IntPtr pchOverlayKeyUtf8 = Utils.ToUtf8(pchOverlayKey); - IntPtr pchOverlayFriendlyNameUtf8 = Utils.ToUtf8(pchOverlayFriendlyName); - pMainHandle = 0; - pThumbnailHandle = 0; - EVROverlayError result = FnTable.CreateDashboardOverlay(pchOverlayKeyUtf8,pchOverlayFriendlyNameUtf8,ref pMainHandle,ref pThumbnailHandle); - Marshal.FreeHGlobal(pchOverlayKeyUtf8); - Marshal.FreeHGlobal(pchOverlayFriendlyNameUtf8); - return result; - } - public bool IsDashboardVisible() - { - bool result = FnTable.IsDashboardVisible(); - return result; - } - public bool IsActiveDashboardOverlay(ulong ulOverlayHandle) - { - bool result = FnTable.IsActiveDashboardOverlay(ulOverlayHandle); - return result; - } - public EVROverlayError SetDashboardOverlaySceneProcess(ulong ulOverlayHandle,uint unProcessId) - { - EVROverlayError result = FnTable.SetDashboardOverlaySceneProcess(ulOverlayHandle,unProcessId); - return result; - } - public EVROverlayError GetDashboardOverlaySceneProcess(ulong ulOverlayHandle,ref uint punProcessId) - { - punProcessId = 0; - EVROverlayError result = FnTable.GetDashboardOverlaySceneProcess(ulOverlayHandle,ref punProcessId); - return result; - } - public void ShowDashboard(string pchOverlayToShow) - { - IntPtr pchOverlayToShowUtf8 = Utils.ToUtf8(pchOverlayToShow); - FnTable.ShowDashboard(pchOverlayToShowUtf8); - Marshal.FreeHGlobal(pchOverlayToShowUtf8); - } - public uint GetPrimaryDashboardDevice() - { - uint result = FnTable.GetPrimaryDashboardDevice(); - return result; - } - public EVROverlayError ShowKeyboard(int eInputMode,int eLineInputMode,uint unFlags,string pchDescription,uint unCharMax,string pchExistingText,ulong uUserValue) - { - IntPtr pchDescriptionUtf8 = Utils.ToUtf8(pchDescription); - IntPtr pchExistingTextUtf8 = Utils.ToUtf8(pchExistingText); - EVROverlayError result = FnTable.ShowKeyboard(eInputMode,eLineInputMode,unFlags,pchDescriptionUtf8,unCharMax,pchExistingTextUtf8,uUserValue); - Marshal.FreeHGlobal(pchDescriptionUtf8); - Marshal.FreeHGlobal(pchExistingTextUtf8); - return result; - } - public EVROverlayError ShowKeyboardForOverlay(ulong ulOverlayHandle,int eInputMode,int eLineInputMode,uint unFlags,string pchDescription,uint unCharMax,string pchExistingText,ulong uUserValue) - { - IntPtr pchDescriptionUtf8 = Utils.ToUtf8(pchDescription); - IntPtr pchExistingTextUtf8 = Utils.ToUtf8(pchExistingText); - EVROverlayError result = FnTable.ShowKeyboardForOverlay(ulOverlayHandle,eInputMode,eLineInputMode,unFlags,pchDescriptionUtf8,unCharMax,pchExistingTextUtf8,uUserValue); - Marshal.FreeHGlobal(pchDescriptionUtf8); - Marshal.FreeHGlobal(pchExistingTextUtf8); - return result; - } - public uint GetKeyboardText(System.Text.StringBuilder pchText,uint cchText) - { - uint result = FnTable.GetKeyboardText(pchText,cchText); - return result; - } - public void HideKeyboard() - { - FnTable.HideKeyboard(); - } - public void SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin,ref HmdMatrix34_t pmatTrackingOriginToKeyboardTransform) - { - FnTable.SetKeyboardTransformAbsolute(eTrackingOrigin,ref pmatTrackingOriginToKeyboardTransform); - } - public void SetKeyboardPositionForOverlay(ulong ulOverlayHandle,HmdRect2_t avoidRect) - { - FnTable.SetKeyboardPositionForOverlay(ulOverlayHandle,avoidRect); - } - public VRMessageOverlayResponse ShowMessageOverlay(string pchText,string pchCaption,string pchButton0Text,string pchButton1Text,string pchButton2Text,string pchButton3Text) - { - IntPtr pchTextUtf8 = Utils.ToUtf8(pchText); - IntPtr pchCaptionUtf8 = Utils.ToUtf8(pchCaption); - IntPtr pchButton0TextUtf8 = Utils.ToUtf8(pchButton0Text); - IntPtr pchButton1TextUtf8 = Utils.ToUtf8(pchButton1Text); - IntPtr pchButton2TextUtf8 = Utils.ToUtf8(pchButton2Text); - IntPtr pchButton3TextUtf8 = Utils.ToUtf8(pchButton3Text); - VRMessageOverlayResponse result = FnTable.ShowMessageOverlay(pchTextUtf8,pchCaptionUtf8,pchButton0TextUtf8,pchButton1TextUtf8,pchButton2TextUtf8,pchButton3TextUtf8); - Marshal.FreeHGlobal(pchTextUtf8); - Marshal.FreeHGlobal(pchCaptionUtf8); - Marshal.FreeHGlobal(pchButton0TextUtf8); - Marshal.FreeHGlobal(pchButton1TextUtf8); - Marshal.FreeHGlobal(pchButton2TextUtf8); - Marshal.FreeHGlobal(pchButton3TextUtf8); - return result; - } - public void CloseMessageOverlay() - { - FnTable.CloseMessageOverlay(); - } -} - - -public class CVROverlayView -{ - IVROverlayView FnTable; - internal CVROverlayView(IntPtr pInterface) - { - FnTable = (IVROverlayView)Marshal.PtrToStructure(pInterface, typeof(IVROverlayView)); - } - public EVROverlayError AcquireOverlayView(ulong ulOverlayHandle,ref VRNativeDevice_t pNativeDevice,ref VROverlayView_t pOverlayView,uint unOverlayViewSize) - { - EVROverlayError result = FnTable.AcquireOverlayView(ulOverlayHandle,ref pNativeDevice,ref pOverlayView,unOverlayViewSize); - return result; - } - public EVROverlayError ReleaseOverlayView(ref VROverlayView_t pOverlayView) - { - EVROverlayError result = FnTable.ReleaseOverlayView(ref pOverlayView); - return result; - } - public void PostOverlayEvent(ulong ulOverlayHandle,ref VREvent_t pvrEvent) - { - FnTable.PostOverlayEvent(ulOverlayHandle,ref pvrEvent); - } - public bool IsViewingPermitted(ulong ulOverlayHandle) - { - bool result = FnTable.IsViewingPermitted(ulOverlayHandle); - return result; - } -} - - -public class CVRHeadsetView -{ - IVRHeadsetView FnTable; - internal CVRHeadsetView(IntPtr pInterface) - { - FnTable = (IVRHeadsetView)Marshal.PtrToStructure(pInterface, typeof(IVRHeadsetView)); - } - public void SetHeadsetViewSize(uint nWidth,uint nHeight) - { - FnTable.SetHeadsetViewSize(nWidth,nHeight); - } - public void GetHeadsetViewSize(ref uint pnWidth,ref uint pnHeight) - { - pnWidth = 0; - pnHeight = 0; - FnTable.GetHeadsetViewSize(ref pnWidth,ref pnHeight); - } - public void SetHeadsetViewMode(uint eHeadsetViewMode) - { - FnTable.SetHeadsetViewMode(eHeadsetViewMode); - } - public uint GetHeadsetViewMode() - { - uint result = FnTable.GetHeadsetViewMode(); - return result; - } - public void SetHeadsetViewCropped(bool bCropped) - { - FnTable.SetHeadsetViewCropped(bCropped); - } - public bool GetHeadsetViewCropped() - { - bool result = FnTable.GetHeadsetViewCropped(); - return result; - } - public float GetHeadsetViewAspectRatio() - { - float result = FnTable.GetHeadsetViewAspectRatio(); - return result; - } - public void SetHeadsetViewBlendRange(float flStartPct,float flEndPct) - { - FnTable.SetHeadsetViewBlendRange(flStartPct,flEndPct); - } - public void GetHeadsetViewBlendRange(ref float pStartPct,ref float pEndPct) - { - pStartPct = 0; - pEndPct = 0; - FnTable.GetHeadsetViewBlendRange(ref pStartPct,ref pEndPct); - } -} - - -public class CVRRenderModels -{ - IVRRenderModels FnTable; - internal CVRRenderModels(IntPtr pInterface) - { - FnTable = (IVRRenderModels)Marshal.PtrToStructure(pInterface, typeof(IVRRenderModels)); - } - public EVRRenderModelError LoadRenderModel_Async(string pchRenderModelName,ref IntPtr ppRenderModel) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - EVRRenderModelError result = FnTable.LoadRenderModel_Async(pchRenderModelNameUtf8,ref ppRenderModel); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - return result; - } - public void FreeRenderModel(IntPtr pRenderModel) - { - FnTable.FreeRenderModel(pRenderModel); - } - public EVRRenderModelError LoadTexture_Async(int textureId,ref IntPtr ppTexture) - { - EVRRenderModelError result = FnTable.LoadTexture_Async(textureId,ref ppTexture); - return result; - } - public void FreeTexture(IntPtr pTexture) - { - FnTable.FreeTexture(pTexture); - } - public EVRRenderModelError LoadTextureD3D11_Async(int textureId,IntPtr pD3D11Device,ref IntPtr ppD3D11Texture2D) - { - EVRRenderModelError result = FnTable.LoadTextureD3D11_Async(textureId,pD3D11Device,ref ppD3D11Texture2D); - return result; - } - public EVRRenderModelError LoadIntoTextureD3D11_Async(int textureId,IntPtr pDstTexture) - { - EVRRenderModelError result = FnTable.LoadIntoTextureD3D11_Async(textureId,pDstTexture); - return result; - } - public void FreeTextureD3D11(IntPtr pD3D11Texture2D) - { - FnTable.FreeTextureD3D11(pD3D11Texture2D); - } - public uint GetRenderModelName(uint unRenderModelIndex,System.Text.StringBuilder pchRenderModelName,uint unRenderModelNameLen) - { - uint result = FnTable.GetRenderModelName(unRenderModelIndex,pchRenderModelName,unRenderModelNameLen); - return result; - } - public uint GetRenderModelCount() - { - uint result = FnTable.GetRenderModelCount(); - return result; - } - public uint GetComponentCount(string pchRenderModelName) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - uint result = FnTable.GetComponentCount(pchRenderModelNameUtf8); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - return result; - } - public uint GetComponentName(string pchRenderModelName,uint unComponentIndex,System.Text.StringBuilder pchComponentName,uint unComponentNameLen) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - uint result = FnTable.GetComponentName(pchRenderModelNameUtf8,unComponentIndex,pchComponentName,unComponentNameLen); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - return result; - } - public ulong GetComponentButtonMask(string pchRenderModelName,string pchComponentName) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - IntPtr pchComponentNameUtf8 = Utils.ToUtf8(pchComponentName); - ulong result = FnTable.GetComponentButtonMask(pchRenderModelNameUtf8,pchComponentNameUtf8); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - Marshal.FreeHGlobal(pchComponentNameUtf8); - return result; - } - public uint GetComponentRenderModelName(string pchRenderModelName,string pchComponentName,System.Text.StringBuilder pchComponentRenderModelName,uint unComponentRenderModelNameLen) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - IntPtr pchComponentNameUtf8 = Utils.ToUtf8(pchComponentName); - uint result = FnTable.GetComponentRenderModelName(pchRenderModelNameUtf8,pchComponentNameUtf8,pchComponentRenderModelName,unComponentRenderModelNameLen); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - Marshal.FreeHGlobal(pchComponentNameUtf8); - return result; - } - public bool GetComponentStateForDevicePath(string pchRenderModelName,string pchComponentName,ulong devicePath,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - IntPtr pchComponentNameUtf8 = Utils.ToUtf8(pchComponentName); - bool result = FnTable.GetComponentStateForDevicePath(pchRenderModelNameUtf8,pchComponentNameUtf8,devicePath,ref pState,ref pComponentState); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - Marshal.FreeHGlobal(pchComponentNameUtf8); - return result; - } -// This is a terrible hack to workaround the fact that VRControllerState_t and VREvent_t were -// originally mis-compiled with the wrong packing for Linux and OSX. - [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate bool _GetComponentStatePacked(IntPtr pchRenderModelName,IntPtr pchComponentName,ref VRControllerState_t_Packed pControllerState,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState); - [StructLayout(LayoutKind.Explicit)] - struct GetComponentStateUnion - { - [FieldOffset(0)] - public IVRRenderModels._GetComponentState pGetComponentState; - [FieldOffset(0)] - public _GetComponentStatePacked pGetComponentStatePacked; - } - public bool GetComponentState(string pchRenderModelName,string pchComponentName,ref VRControllerState_t pControllerState,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - IntPtr pchComponentNameUtf8 = Utils.ToUtf8(pchComponentName); -#if !UNITY_METRO - if ((System.Environment.OSVersion.Platform == System.PlatformID.MacOSX) || - (System.Environment.OSVersion.Platform == System.PlatformID.Unix)) - { - GetComponentStateUnion u; - VRControllerState_t_Packed state_packed = new VRControllerState_t_Packed(pControllerState); - u.pGetComponentStatePacked = null; - u.pGetComponentState = FnTable.GetComponentState; - bool packed_result = u.pGetComponentStatePacked(pchRenderModelNameUtf8,pchComponentNameUtf8,ref state_packed,ref pState,ref pComponentState); - - state_packed.Unpack(ref pControllerState); - return packed_result; - } -#endif - bool result = FnTable.GetComponentState(pchRenderModelNameUtf8,pchComponentNameUtf8,ref pControllerState,ref pState,ref pComponentState); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - Marshal.FreeHGlobal(pchComponentNameUtf8); - return result; - } - public bool RenderModelHasComponent(string pchRenderModelName,string pchComponentName) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - IntPtr pchComponentNameUtf8 = Utils.ToUtf8(pchComponentName); - bool result = FnTable.RenderModelHasComponent(pchRenderModelNameUtf8,pchComponentNameUtf8); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - Marshal.FreeHGlobal(pchComponentNameUtf8); - return result; - } - public uint GetRenderModelThumbnailURL(string pchRenderModelName,System.Text.StringBuilder pchThumbnailURL,uint unThumbnailURLLen,ref EVRRenderModelError peError) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - uint result = FnTable.GetRenderModelThumbnailURL(pchRenderModelNameUtf8,pchThumbnailURL,unThumbnailURLLen,ref peError); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - return result; - } - public uint GetRenderModelOriginalPath(string pchRenderModelName,System.Text.StringBuilder pchOriginalPath,uint unOriginalPathLen,ref EVRRenderModelError peError) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - uint result = FnTable.GetRenderModelOriginalPath(pchRenderModelNameUtf8,pchOriginalPath,unOriginalPathLen,ref peError); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - return result; - } - public string GetRenderModelErrorNameFromEnum(EVRRenderModelError error) - { - IntPtr result = FnTable.GetRenderModelErrorNameFromEnum(error); - return Marshal.PtrToStringAnsi(result); - } -} - - -public class CVRNotifications -{ - IVRNotifications FnTable; - internal CVRNotifications(IntPtr pInterface) - { - FnTable = (IVRNotifications)Marshal.PtrToStructure(pInterface, typeof(IVRNotifications)); - } - public EVRNotificationError CreateNotification(ulong ulOverlayHandle,ulong ulUserValue,EVRNotificationType type,string pchText,EVRNotificationStyle style,ref NotificationBitmap_t pImage,ref uint pNotificationId) - { - IntPtr pchTextUtf8 = Utils.ToUtf8(pchText); - pNotificationId = 0; - EVRNotificationError result = FnTable.CreateNotification(ulOverlayHandle,ulUserValue,type,pchTextUtf8,style,ref pImage,ref pNotificationId); - Marshal.FreeHGlobal(pchTextUtf8); - return result; - } - public EVRNotificationError RemoveNotification(uint notificationId) - { - EVRNotificationError result = FnTable.RemoveNotification(notificationId); - return result; - } -} - - -public class CVRSettings -{ - IVRSettings FnTable; - internal CVRSettings(IntPtr pInterface) - { - FnTable = (IVRSettings)Marshal.PtrToStructure(pInterface, typeof(IVRSettings)); - } - public string GetSettingsErrorNameFromEnum(EVRSettingsError eError) - { - IntPtr result = FnTable.GetSettingsErrorNameFromEnum(eError); - return Marshal.PtrToStringAnsi(result); - } - public void SetBool(string pchSection,string pchSettingsKey,bool bValue,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - FnTable.SetBool(pchSectionUtf8,pchSettingsKeyUtf8,bValue,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - } - public void SetInt32(string pchSection,string pchSettingsKey,int nValue,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - FnTable.SetInt32(pchSectionUtf8,pchSettingsKeyUtf8,nValue,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - } - public void SetFloat(string pchSection,string pchSettingsKey,float flValue,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - FnTable.SetFloat(pchSectionUtf8,pchSettingsKeyUtf8,flValue,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - } - public void SetString(string pchSection,string pchSettingsKey,string pchValue,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - IntPtr pchValueUtf8 = Utils.ToUtf8(pchValue); - FnTable.SetString(pchSectionUtf8,pchSettingsKeyUtf8,pchValueUtf8,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - Marshal.FreeHGlobal(pchValueUtf8); - } - public bool GetBool(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - bool result = FnTable.GetBool(pchSectionUtf8,pchSettingsKeyUtf8,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - return result; - } - public int GetInt32(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - int result = FnTable.GetInt32(pchSectionUtf8,pchSettingsKeyUtf8,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - return result; - } - public float GetFloat(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - float result = FnTable.GetFloat(pchSectionUtf8,pchSettingsKeyUtf8,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - return result; - } - public void GetString(string pchSection,string pchSettingsKey,System.Text.StringBuilder pchValue,uint unValueLen,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - FnTable.GetString(pchSectionUtf8,pchSettingsKeyUtf8,pchValue,unValueLen,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - } - public void RemoveSection(string pchSection,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - FnTable.RemoveSection(pchSectionUtf8,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - } - public void RemoveKeyInSection(string pchSection,string pchSettingsKey,ref EVRSettingsError peError) - { - IntPtr pchSectionUtf8 = Utils.ToUtf8(pchSection); - IntPtr pchSettingsKeyUtf8 = Utils.ToUtf8(pchSettingsKey); - FnTable.RemoveKeyInSection(pchSectionUtf8,pchSettingsKeyUtf8,ref peError); - Marshal.FreeHGlobal(pchSectionUtf8); - Marshal.FreeHGlobal(pchSettingsKeyUtf8); - } -} - - -public class CVRScreenshots -{ - IVRScreenshots FnTable; - internal CVRScreenshots(IntPtr pInterface) - { - FnTable = (IVRScreenshots)Marshal.PtrToStructure(pInterface, typeof(IVRScreenshots)); - } - public EVRScreenshotError RequestScreenshot(ref uint pOutScreenshotHandle,EVRScreenshotType type,string pchPreviewFilename,string pchVRFilename) - { - pOutScreenshotHandle = 0; - IntPtr pchPreviewFilenameUtf8 = Utils.ToUtf8(pchPreviewFilename); - IntPtr pchVRFilenameUtf8 = Utils.ToUtf8(pchVRFilename); - EVRScreenshotError result = FnTable.RequestScreenshot(ref pOutScreenshotHandle,type,pchPreviewFilenameUtf8,pchVRFilenameUtf8); - Marshal.FreeHGlobal(pchPreviewFilenameUtf8); - Marshal.FreeHGlobal(pchVRFilenameUtf8); - return result; - } - public EVRScreenshotError HookScreenshot(EVRScreenshotType [] pSupportedTypes) - { - EVRScreenshotError result = FnTable.HookScreenshot(pSupportedTypes,(int) pSupportedTypes.Length); - return result; - } - public EVRScreenshotType GetScreenshotPropertyType(uint screenshotHandle,ref EVRScreenshotError pError) - { - EVRScreenshotType result = FnTable.GetScreenshotPropertyType(screenshotHandle,ref pError); - return result; - } - public uint GetScreenshotPropertyFilename(uint screenshotHandle,EVRScreenshotPropertyFilenames filenameType,System.Text.StringBuilder pchFilename,uint cchFilename,ref EVRScreenshotError pError) - { - uint result = FnTable.GetScreenshotPropertyFilename(screenshotHandle,filenameType,pchFilename,cchFilename,ref pError); - return result; - } - public EVRScreenshotError UpdateScreenshotProgress(uint screenshotHandle,float flProgress) - { - EVRScreenshotError result = FnTable.UpdateScreenshotProgress(screenshotHandle,flProgress); - return result; - } - public EVRScreenshotError TakeStereoScreenshot(ref uint pOutScreenshotHandle,string pchPreviewFilename,string pchVRFilename) - { - pOutScreenshotHandle = 0; - IntPtr pchPreviewFilenameUtf8 = Utils.ToUtf8(pchPreviewFilename); - IntPtr pchVRFilenameUtf8 = Utils.ToUtf8(pchVRFilename); - EVRScreenshotError result = FnTable.TakeStereoScreenshot(ref pOutScreenshotHandle,pchPreviewFilenameUtf8,pchVRFilenameUtf8); - Marshal.FreeHGlobal(pchPreviewFilenameUtf8); - Marshal.FreeHGlobal(pchVRFilenameUtf8); - return result; - } - public EVRScreenshotError SubmitScreenshot(uint screenshotHandle,EVRScreenshotType type,string pchSourcePreviewFilename,string pchSourceVRFilename) - { - IntPtr pchSourcePreviewFilenameUtf8 = Utils.ToUtf8(pchSourcePreviewFilename); - IntPtr pchSourceVRFilenameUtf8 = Utils.ToUtf8(pchSourceVRFilename); - EVRScreenshotError result = FnTable.SubmitScreenshot(screenshotHandle,type,pchSourcePreviewFilenameUtf8,pchSourceVRFilenameUtf8); - Marshal.FreeHGlobal(pchSourcePreviewFilenameUtf8); - Marshal.FreeHGlobal(pchSourceVRFilenameUtf8); - return result; - } -} - - -public class CVRResources -{ - IVRResources FnTable; - internal CVRResources(IntPtr pInterface) - { - FnTable = (IVRResources)Marshal.PtrToStructure(pInterface, typeof(IVRResources)); - } - public uint LoadSharedResource(string pchResourceName,string pchBuffer,uint unBufferLen) - { - IntPtr pchResourceNameUtf8 = Utils.ToUtf8(pchResourceName); - uint result = FnTable.LoadSharedResource(pchResourceNameUtf8,pchBuffer,unBufferLen); - Marshal.FreeHGlobal(pchResourceNameUtf8); - return result; - } - public uint GetResourceFullPath(string pchResourceName,string pchResourceTypeDirectory,System.Text.StringBuilder pchPathBuffer,uint unBufferLen) - { - IntPtr pchResourceNameUtf8 = Utils.ToUtf8(pchResourceName); - IntPtr pchResourceTypeDirectoryUtf8 = Utils.ToUtf8(pchResourceTypeDirectory); - uint result = FnTable.GetResourceFullPath(pchResourceNameUtf8,pchResourceTypeDirectoryUtf8,pchPathBuffer,unBufferLen); - Marshal.FreeHGlobal(pchResourceNameUtf8); - Marshal.FreeHGlobal(pchResourceTypeDirectoryUtf8); - return result; - } -} - - -public class CVRDriverManager -{ - IVRDriverManager FnTable; - internal CVRDriverManager(IntPtr pInterface) - { - FnTable = (IVRDriverManager)Marshal.PtrToStructure(pInterface, typeof(IVRDriverManager)); - } - public uint GetDriverCount() - { - uint result = FnTable.GetDriverCount(); - return result; - } - public uint GetDriverName(uint nDriver,System.Text.StringBuilder pchValue,uint unBufferSize) - { - uint result = FnTable.GetDriverName(nDriver,pchValue,unBufferSize); - return result; - } - public ulong GetDriverHandle(string pchDriverName) - { - IntPtr pchDriverNameUtf8 = Utils.ToUtf8(pchDriverName); - ulong result = FnTable.GetDriverHandle(pchDriverNameUtf8); - Marshal.FreeHGlobal(pchDriverNameUtf8); - return result; - } - public bool IsEnabled(uint nDriver) - { - bool result = FnTable.IsEnabled(nDriver); - return result; - } -} - - -public class CVRInput -{ - IVRInput FnTable; - internal CVRInput(IntPtr pInterface) - { - FnTable = (IVRInput)Marshal.PtrToStructure(pInterface, typeof(IVRInput)); - } - public EVRInputError SetActionManifestPath(string pchActionManifestPath) - { - IntPtr pchActionManifestPathUtf8 = Utils.ToUtf8(pchActionManifestPath); - EVRInputError result = FnTable.SetActionManifestPath(pchActionManifestPathUtf8); - Marshal.FreeHGlobal(pchActionManifestPathUtf8); - return result; - } - public EVRInputError GetActionSetHandle(string pchActionSetName,ref ulong pHandle) - { - IntPtr pchActionSetNameUtf8 = Utils.ToUtf8(pchActionSetName); - pHandle = 0; - EVRInputError result = FnTable.GetActionSetHandle(pchActionSetNameUtf8,ref pHandle); - Marshal.FreeHGlobal(pchActionSetNameUtf8); - return result; - } - public EVRInputError GetActionHandle(string pchActionName,ref ulong pHandle) - { - IntPtr pchActionNameUtf8 = Utils.ToUtf8(pchActionName); - pHandle = 0; - EVRInputError result = FnTable.GetActionHandle(pchActionNameUtf8,ref pHandle); - Marshal.FreeHGlobal(pchActionNameUtf8); - return result; - } - public EVRInputError GetInputSourceHandle(string pchInputSourcePath,ref ulong pHandle) - { - IntPtr pchInputSourcePathUtf8 = Utils.ToUtf8(pchInputSourcePath); - pHandle = 0; - EVRInputError result = FnTable.GetInputSourceHandle(pchInputSourcePathUtf8,ref pHandle); - Marshal.FreeHGlobal(pchInputSourcePathUtf8); - return result; - } - public EVRInputError UpdateActionState(VRActiveActionSet_t [] pSets,uint unSizeOfVRSelectedActionSet_t) - { - EVRInputError result = FnTable.UpdateActionState(pSets,unSizeOfVRSelectedActionSet_t,(uint) pSets.Length); - return result; - } - public EVRInputError GetDigitalActionData(ulong action,ref InputDigitalActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) - { - EVRInputError result = FnTable.GetDigitalActionData(action,ref pActionData,unActionDataSize,ulRestrictToDevice); - return result; - } - public EVRInputError GetAnalogActionData(ulong action,ref InputAnalogActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) - { - EVRInputError result = FnTable.GetAnalogActionData(action,ref pActionData,unActionDataSize,ulRestrictToDevice); - return result; - } - public EVRInputError GetPoseActionDataRelativeToNow(ulong action,ETrackingUniverseOrigin eOrigin,float fPredictedSecondsFromNow,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) - { - EVRInputError result = FnTable.GetPoseActionDataRelativeToNow(action,eOrigin,fPredictedSecondsFromNow,ref pActionData,unActionDataSize,ulRestrictToDevice); - return result; - } - public EVRInputError GetPoseActionDataForNextFrame(ulong action,ETrackingUniverseOrigin eOrigin,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) - { - EVRInputError result = FnTable.GetPoseActionDataForNextFrame(action,eOrigin,ref pActionData,unActionDataSize,ulRestrictToDevice); - return result; - } - public EVRInputError GetSkeletalActionData(ulong action,ref InputSkeletalActionData_t pActionData,uint unActionDataSize) - { - EVRInputError result = FnTable.GetSkeletalActionData(action,ref pActionData,unActionDataSize); - return result; - } - public EVRInputError GetDominantHand(ref ETrackedControllerRole peDominantHand) - { - EVRInputError result = FnTable.GetDominantHand(ref peDominantHand); - return result; - } - public EVRInputError SetDominantHand(ETrackedControllerRole eDominantHand) - { - EVRInputError result = FnTable.SetDominantHand(eDominantHand); - return result; - } - public EVRInputError GetBoneCount(ulong action,ref uint pBoneCount) - { - pBoneCount = 0; - EVRInputError result = FnTable.GetBoneCount(action,ref pBoneCount); - return result; - } - public EVRInputError GetBoneHierarchy(ulong action,int [] pParentIndices) - { - EVRInputError result = FnTable.GetBoneHierarchy(action,pParentIndices,(uint) pParentIndices.Length); - return result; - } - public EVRInputError GetBoneName(ulong action,int nBoneIndex,System.Text.StringBuilder pchBoneName,uint unNameBufferSize) - { - EVRInputError result = FnTable.GetBoneName(action,nBoneIndex,pchBoneName,unNameBufferSize); - return result; - } - public EVRInputError GetSkeletalReferenceTransforms(ulong action,EVRSkeletalTransformSpace eTransformSpace,EVRSkeletalReferencePose eReferencePose,VRBoneTransform_t [] pTransformArray) - { - EVRInputError result = FnTable.GetSkeletalReferenceTransforms(action,eTransformSpace,eReferencePose,pTransformArray,(uint) pTransformArray.Length); - return result; - } - public EVRInputError GetSkeletalTrackingLevel(ulong action,ref EVRSkeletalTrackingLevel pSkeletalTrackingLevel) - { - EVRInputError result = FnTable.GetSkeletalTrackingLevel(action,ref pSkeletalTrackingLevel); - return result; - } - public EVRInputError GetSkeletalBoneData(ulong action,EVRSkeletalTransformSpace eTransformSpace,EVRSkeletalMotionRange eMotionRange,VRBoneTransform_t [] pTransformArray) - { - EVRInputError result = FnTable.GetSkeletalBoneData(action,eTransformSpace,eMotionRange,pTransformArray,(uint) pTransformArray.Length); - return result; - } - public EVRInputError GetSkeletalSummaryData(ulong action,EVRSummaryType eSummaryType,ref VRSkeletalSummaryData_t pSkeletalSummaryData) - { - EVRInputError result = FnTable.GetSkeletalSummaryData(action,eSummaryType,ref pSkeletalSummaryData); - return result; - } - public EVRInputError GetSkeletalBoneDataCompressed(ulong action,EVRSkeletalMotionRange eMotionRange,IntPtr pvCompressedData,uint unCompressedSize,ref uint punRequiredCompressedSize) - { - punRequiredCompressedSize = 0; - EVRInputError result = FnTable.GetSkeletalBoneDataCompressed(action,eMotionRange,pvCompressedData,unCompressedSize,ref punRequiredCompressedSize); - return result; - } - public EVRInputError DecompressSkeletalBoneData(IntPtr pvCompressedBuffer,uint unCompressedBufferSize,EVRSkeletalTransformSpace eTransformSpace,VRBoneTransform_t [] pTransformArray) - { - EVRInputError result = FnTable.DecompressSkeletalBoneData(pvCompressedBuffer,unCompressedBufferSize,eTransformSpace,pTransformArray,(uint) pTransformArray.Length); - return result; - } - public EVRInputError TriggerHapticVibrationAction(ulong action,float fStartSecondsFromNow,float fDurationSeconds,float fFrequency,float fAmplitude,ulong ulRestrictToDevice) - { - EVRInputError result = FnTable.TriggerHapticVibrationAction(action,fStartSecondsFromNow,fDurationSeconds,fFrequency,fAmplitude,ulRestrictToDevice); - return result; - } - public EVRInputError GetActionOrigins(ulong actionSetHandle,ulong digitalActionHandle,ulong [] originsOut) - { - EVRInputError result = FnTable.GetActionOrigins(actionSetHandle,digitalActionHandle,originsOut,(uint) originsOut.Length); - return result; - } - public EVRInputError GetOriginLocalizedName(ulong origin,System.Text.StringBuilder pchNameArray,uint unNameArraySize,int unStringSectionsToInclude) - { - EVRInputError result = FnTable.GetOriginLocalizedName(origin,pchNameArray,unNameArraySize,unStringSectionsToInclude); - return result; - } - public EVRInputError GetOriginTrackedDeviceInfo(ulong origin,ref InputOriginInfo_t pOriginInfo,uint unOriginInfoSize) - { - EVRInputError result = FnTable.GetOriginTrackedDeviceInfo(origin,ref pOriginInfo,unOriginInfoSize); - return result; - } - public EVRInputError GetActionBindingInfo(ulong action,ref InputBindingInfo_t pOriginInfo,uint unBindingInfoSize,uint unBindingInfoCount,ref uint punReturnedBindingInfoCount) - { - punReturnedBindingInfoCount = 0; - EVRInputError result = FnTable.GetActionBindingInfo(action,ref pOriginInfo,unBindingInfoSize,unBindingInfoCount,ref punReturnedBindingInfoCount); - return result; - } - public EVRInputError ShowActionOrigins(ulong actionSetHandle,ulong ulActionHandle) - { - EVRInputError result = FnTable.ShowActionOrigins(actionSetHandle,ulActionHandle); - return result; - } - public EVRInputError ShowBindingsForActionSet(VRActiveActionSet_t [] pSets,uint unSizeOfVRSelectedActionSet_t,ulong originToHighlight) - { - EVRInputError result = FnTable.ShowBindingsForActionSet(pSets,unSizeOfVRSelectedActionSet_t,(uint) pSets.Length,originToHighlight); - return result; - } - public EVRInputError GetComponentStateForBinding(string pchRenderModelName,string pchComponentName,ref InputBindingInfo_t pOriginInfo,uint unBindingInfoSize,uint unBindingInfoCount,ref RenderModel_ComponentState_t pComponentState) - { - IntPtr pchRenderModelNameUtf8 = Utils.ToUtf8(pchRenderModelName); - IntPtr pchComponentNameUtf8 = Utils.ToUtf8(pchComponentName); - EVRInputError result = FnTable.GetComponentStateForBinding(pchRenderModelNameUtf8,pchComponentNameUtf8,ref pOriginInfo,unBindingInfoSize,unBindingInfoCount,ref pComponentState); - Marshal.FreeHGlobal(pchRenderModelNameUtf8); - Marshal.FreeHGlobal(pchComponentNameUtf8); - return result; - } - public bool IsUsingLegacyInput() - { - bool result = FnTable.IsUsingLegacyInput(); - return result; - } - public EVRInputError OpenBindingUI(string pchAppKey,ulong ulActionSetHandle,ulong ulDeviceHandle,bool bShowOnDesktop) - { - IntPtr pchAppKeyUtf8 = Utils.ToUtf8(pchAppKey); - EVRInputError result = FnTable.OpenBindingUI(pchAppKeyUtf8,ulActionSetHandle,ulDeviceHandle,bShowOnDesktop); - Marshal.FreeHGlobal(pchAppKeyUtf8); - return result; - } - public EVRInputError GetBindingVariant(ulong ulDevicePath,System.Text.StringBuilder pchVariantArray,uint unVariantArraySize) - { - EVRInputError result = FnTable.GetBindingVariant(ulDevicePath,pchVariantArray,unVariantArraySize); - return result; - } -} - - -public class CVRIOBuffer -{ - IVRIOBuffer FnTable; - internal CVRIOBuffer(IntPtr pInterface) - { - FnTable = (IVRIOBuffer)Marshal.PtrToStructure(pInterface, typeof(IVRIOBuffer)); - } - public EIOBufferError Open(string pchPath,EIOBufferMode mode,uint unElementSize,uint unElements,ref ulong pulBuffer) - { - IntPtr pchPathUtf8 = Utils.ToUtf8(pchPath); - pulBuffer = 0; - EIOBufferError result = FnTable.Open(pchPathUtf8,mode,unElementSize,unElements,ref pulBuffer); - Marshal.FreeHGlobal(pchPathUtf8); - return result; - } - public EIOBufferError Close(ulong ulBuffer) - { - EIOBufferError result = FnTable.Close(ulBuffer); - return result; - } - public EIOBufferError Read(ulong ulBuffer,IntPtr pDst,uint unBytes,ref uint punRead) - { - punRead = 0; - EIOBufferError result = FnTable.Read(ulBuffer,pDst,unBytes,ref punRead); - return result; - } - public EIOBufferError Write(ulong ulBuffer,IntPtr pSrc,uint unBytes) - { - EIOBufferError result = FnTable.Write(ulBuffer,pSrc,unBytes); - return result; - } - public ulong PropertyContainer(ulong ulBuffer) - { - ulong result = FnTable.PropertyContainer(ulBuffer); - return result; - } - public bool HasReaders(ulong ulBuffer) - { - bool result = FnTable.HasReaders(ulBuffer); - return result; - } -} - - -public class CVRSpatialAnchors -{ - IVRSpatialAnchors FnTable; - internal CVRSpatialAnchors(IntPtr pInterface) - { - FnTable = (IVRSpatialAnchors)Marshal.PtrToStructure(pInterface, typeof(IVRSpatialAnchors)); - } - public EVRSpatialAnchorError CreateSpatialAnchorFromDescriptor(string pchDescriptor,ref uint pHandleOut) - { - IntPtr pchDescriptorUtf8 = Utils.ToUtf8(pchDescriptor); - pHandleOut = 0; - EVRSpatialAnchorError result = FnTable.CreateSpatialAnchorFromDescriptor(pchDescriptorUtf8,ref pHandleOut); - Marshal.FreeHGlobal(pchDescriptorUtf8); - return result; - } - public EVRSpatialAnchorError CreateSpatialAnchorFromPose(uint unDeviceIndex,ETrackingUniverseOrigin eOrigin,ref SpatialAnchorPose_t pPose,ref uint pHandleOut) - { - pHandleOut = 0; - EVRSpatialAnchorError result = FnTable.CreateSpatialAnchorFromPose(unDeviceIndex,eOrigin,ref pPose,ref pHandleOut); - return result; - } - public EVRSpatialAnchorError GetSpatialAnchorPose(uint unHandle,ETrackingUniverseOrigin eOrigin,ref SpatialAnchorPose_t pPoseOut) - { - EVRSpatialAnchorError result = FnTable.GetSpatialAnchorPose(unHandle,eOrigin,ref pPoseOut); - return result; - } - public EVRSpatialAnchorError GetSpatialAnchorDescriptor(uint unHandle,System.Text.StringBuilder pchDescriptorOut,ref uint punDescriptorBufferLenInOut) - { - punDescriptorBufferLenInOut = 0; - EVRSpatialAnchorError result = FnTable.GetSpatialAnchorDescriptor(unHandle,pchDescriptorOut,ref punDescriptorBufferLenInOut); - return result; - } -} - - -public class CVRDebug -{ - IVRDebug FnTable; - internal CVRDebug(IntPtr pInterface) - { - FnTable = (IVRDebug)Marshal.PtrToStructure(pInterface, typeof(IVRDebug)); - } - public EVRDebugError EmitVrProfilerEvent(string pchMessage) - { - IntPtr pchMessageUtf8 = Utils.ToUtf8(pchMessage); - EVRDebugError result = FnTable.EmitVrProfilerEvent(pchMessageUtf8); - Marshal.FreeHGlobal(pchMessageUtf8); - return result; - } - public EVRDebugError BeginVrProfilerEvent(ref ulong pHandleOut) - { - pHandleOut = 0; - EVRDebugError result = FnTable.BeginVrProfilerEvent(ref pHandleOut); - return result; - } - public EVRDebugError FinishVrProfilerEvent(ulong hHandle,string pchMessage) - { - IntPtr pchMessageUtf8 = Utils.ToUtf8(pchMessage); - EVRDebugError result = FnTable.FinishVrProfilerEvent(hHandle,pchMessageUtf8); - Marshal.FreeHGlobal(pchMessageUtf8); - return result; - } - public uint DriverDebugRequest(uint unDeviceIndex,string pchRequest,System.Text.StringBuilder pchResponseBuffer,uint unResponseBufferSize) - { - IntPtr pchRequestUtf8 = Utils.ToUtf8(pchRequest); - uint result = FnTable.DriverDebugRequest(unDeviceIndex,pchRequestUtf8,pchResponseBuffer,unResponseBufferSize); - Marshal.FreeHGlobal(pchRequestUtf8); - return result; - } -} - - -public class CVRProperties -{ - IVRProperties FnTable; - internal CVRProperties(IntPtr pInterface) - { - FnTable = (IVRProperties)Marshal.PtrToStructure(pInterface, typeof(IVRProperties)); - } - public ETrackedPropertyError ReadPropertyBatch(ulong ulContainerHandle,ref PropertyRead_t pBatch,uint unBatchEntryCount) - { - ETrackedPropertyError result = FnTable.ReadPropertyBatch(ulContainerHandle,ref pBatch,unBatchEntryCount); - return result; - } - public ETrackedPropertyError WritePropertyBatch(ulong ulContainerHandle,ref PropertyWrite_t pBatch,uint unBatchEntryCount) - { - ETrackedPropertyError result = FnTable.WritePropertyBatch(ulContainerHandle,ref pBatch,unBatchEntryCount); - return result; - } - public string GetPropErrorNameFromEnum(ETrackedPropertyError error) - { - IntPtr result = FnTable.GetPropErrorNameFromEnum(error); - return Marshal.PtrToStringAnsi(result); - } - public ulong TrackedDeviceToPropertyContainer(uint nDevice) - { - ulong result = FnTable.TrackedDeviceToPropertyContainer(nDevice); - return result; - } -} - - -public class CVRPaths -{ - IVRPaths FnTable; - internal CVRPaths(IntPtr pInterface) - { - FnTable = (IVRPaths)Marshal.PtrToStructure(pInterface, typeof(IVRPaths)); - } - public ETrackedPropertyError ReadPathBatch(ulong ulRootHandle,ref PathRead_t pBatch,uint unBatchEntryCount) - { - ETrackedPropertyError result = FnTable.ReadPathBatch(ulRootHandle,ref pBatch,unBatchEntryCount); - return result; - } - public ETrackedPropertyError WritePathBatch(ulong ulRootHandle,ref PathWrite_t pBatch,uint unBatchEntryCount) - { - ETrackedPropertyError result = FnTable.WritePathBatch(ulRootHandle,ref pBatch,unBatchEntryCount); - return result; - } - public ETrackedPropertyError StringToHandle(ref ulong pHandle,string pchPath) - { - pHandle = 0; - IntPtr pchPathUtf8 = Utils.ToUtf8(pchPath); - ETrackedPropertyError result = FnTable.StringToHandle(ref pHandle,pchPathUtf8); - Marshal.FreeHGlobal(pchPathUtf8); - return result; - } - public ETrackedPropertyError HandleToString(ulong pHandle,string pchBuffer,uint unBufferSize,ref uint punBufferSizeUsed) - { - punBufferSizeUsed = 0; - ETrackedPropertyError result = FnTable.HandleToString(pHandle,pchBuffer,unBufferSize,ref punBufferSizeUsed); - return result; - } -} - - -public class CVRBlockQueue -{ - IVRBlockQueue FnTable; - internal CVRBlockQueue(IntPtr pInterface) - { - FnTable = (IVRBlockQueue)Marshal.PtrToStructure(pInterface, typeof(IVRBlockQueue)); - } - public EBlockQueueError Create(ref ulong pulQueueHandle,string pchPath,uint unBlockDataSize,uint unBlockHeaderSize,uint unBlockCount) - { - pulQueueHandle = 0; - IntPtr pchPathUtf8 = Utils.ToUtf8(pchPath); - EBlockQueueError result = FnTable.Create(ref pulQueueHandle,pchPathUtf8,unBlockDataSize,unBlockHeaderSize,unBlockCount); - Marshal.FreeHGlobal(pchPathUtf8); - return result; - } - public EBlockQueueError Connect(ref ulong pulQueueHandle,string pchPath) - { - pulQueueHandle = 0; - IntPtr pchPathUtf8 = Utils.ToUtf8(pchPath); - EBlockQueueError result = FnTable.Connect(ref pulQueueHandle,pchPathUtf8); - Marshal.FreeHGlobal(pchPathUtf8); - return result; - } - public EBlockQueueError Destroy(ulong ulQueueHandle) - { - EBlockQueueError result = FnTable.Destroy(ulQueueHandle); - return result; - } - public EBlockQueueError AcquireWriteOnlyBlock(ulong ulQueueHandle,ref ulong pulBlockHandle,ref IntPtr ppvBuffer) - { - pulBlockHandle = 0; - EBlockQueueError result = FnTable.AcquireWriteOnlyBlock(ulQueueHandle,ref pulBlockHandle,ref ppvBuffer); - return result; - } - public EBlockQueueError ReleaseWriteOnlyBlock(ulong ulQueueHandle,ulong ulBlockHandle) - { - EBlockQueueError result = FnTable.ReleaseWriteOnlyBlock(ulQueueHandle,ulBlockHandle); - return result; - } - public EBlockQueueError WaitAndAcquireReadOnlyBlock(ulong ulQueueHandle,ref ulong pulBlockHandle,ref IntPtr ppvBuffer,EBlockQueueReadType eReadType,uint unTimeoutMs) - { - pulBlockHandle = 0; - EBlockQueueError result = FnTable.WaitAndAcquireReadOnlyBlock(ulQueueHandle,ref pulBlockHandle,ref ppvBuffer,eReadType,unTimeoutMs); - return result; - } - public EBlockQueueError AcquireReadOnlyBlock(ulong ulQueueHandle,ref ulong pulBlockHandle,ref IntPtr ppvBuffer,EBlockQueueReadType eReadType) - { - pulBlockHandle = 0; - EBlockQueueError result = FnTable.AcquireReadOnlyBlock(ulQueueHandle,ref pulBlockHandle,ref ppvBuffer,eReadType); - return result; - } - public EBlockQueueError ReleaseReadOnlyBlock(ulong ulQueueHandle,ulong ulBlockHandle) - { - EBlockQueueError result = FnTable.ReleaseReadOnlyBlock(ulQueueHandle,ulBlockHandle); - return result; - } - public EBlockQueueError QueueHasReader(ulong ulQueueHandle,ref bool pbHasReaders) - { - pbHasReaders = false; - EBlockQueueError result = FnTable.QueueHasReader(ulQueueHandle,ref pbHasReaders); - return result; - } -} - - -public class OpenVRInterop -{ - [DllImportAttribute("openvr_api", EntryPoint = "VR_InitInternal", CallingConvention = CallingConvention.Cdecl)] - internal static extern uint InitInternal(ref EVRInitError peError, EVRApplicationType eApplicationType); - [DllImportAttribute("openvr_api", EntryPoint = "VR_InitInternal2", CallingConvention = CallingConvention.Cdecl)] - internal static extern uint InitInternal2(ref EVRInitError peError, EVRApplicationType eApplicationType,[In, MarshalAs(UnmanagedType.LPStr)] string pStartupInfo); - [DllImportAttribute("openvr_api", EntryPoint = "VR_ShutdownInternal", CallingConvention = CallingConvention.Cdecl)] - internal static extern void ShutdownInternal(); - [DllImportAttribute("openvr_api", EntryPoint = "VR_IsHmdPresent", CallingConvention = CallingConvention.Cdecl)] - internal static extern bool IsHmdPresent(); - [DllImportAttribute("openvr_api", EntryPoint = "VR_IsRuntimeInstalled", CallingConvention = CallingConvention.Cdecl)] - internal static extern bool IsRuntimeInstalled(); - [DllImportAttribute("openvr_api", EntryPoint = "VR_RuntimePath", CallingConvention = CallingConvention.Cdecl)] - internal static extern string RuntimePath(); - [DllImportAttribute("openvr_api", EntryPoint = "VR_GetRuntimePath", CallingConvention = CallingConvention.Cdecl)] - internal static extern bool GetRuntimePath(System.Text.StringBuilder pchPathBuffer, uint unBufferSize, ref uint punRequiredBufferSize); - [DllImportAttribute("openvr_api", EntryPoint = "VR_GetStringForHmdError", CallingConvention = CallingConvention.Cdecl)] - internal static extern IntPtr GetStringForHmdError(EVRInitError error); - [DllImportAttribute("openvr_api", EntryPoint = "VR_GetGenericInterface", CallingConvention = CallingConvention.Cdecl)] - internal static extern IntPtr GetGenericInterface([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion, ref EVRInitError peError); - [DllImportAttribute("openvr_api", EntryPoint = "VR_IsInterfaceVersionValid", CallingConvention = CallingConvention.Cdecl)] - internal static extern bool IsInterfaceVersionValid([In, MarshalAs(UnmanagedType.LPStr)] string pchInterfaceVersion); - [DllImportAttribute("openvr_api", EntryPoint = "VR_GetInitToken", CallingConvention = CallingConvention.Cdecl)] - internal static extern uint GetInitToken(); -} - - -public enum EVREye -{ - Eye_Left = 0, - Eye_Right = 1, -} -public enum ETextureType -{ - Invalid = -1, - DirectX = 0, - OpenGL = 1, - Vulkan = 2, - IOSurface = 3, - DirectX12 = 4, - DXGISharedHandle = 5, - Metal = 6, -} -public enum EColorSpace -{ - Auto = 0, - Gamma = 1, - Linear = 2, -} -public enum ETrackingResult -{ - Uninitialized = 1, - Calibrating_InProgress = 100, - Calibrating_OutOfRange = 101, - Running_OK = 200, - Running_OutOfRange = 201, - Fallback_RotationOnly = 300, -} -public enum ETrackedDeviceClass -{ - Invalid = 0, - HMD = 1, - Controller = 2, - GenericTracker = 3, - TrackingReference = 4, - DisplayRedirect = 5, - Max = 6, -} -public enum ETrackedControllerRole -{ - Invalid = 0, - LeftHand = 1, - RightHand = 2, - OptOut = 3, - Treadmill = 4, - Stylus = 5, - Max = 5, -} -public enum ETrackingUniverseOrigin -{ - TrackingUniverseSeated = 0, - TrackingUniverseStanding = 1, - TrackingUniverseRawAndUncalibrated = 2, -} -public enum EAdditionalRadioFeatures -{ - None = 0, - HTCLinkBox = 1, - InternalDongle = 2, - ExternalDongle = 4, -} -public enum ETrackedDeviceProperty -{ - Prop_Invalid = 0, - Prop_TrackingSystemName_String = 1000, - Prop_ModelNumber_String = 1001, - Prop_SerialNumber_String = 1002, - Prop_RenderModelName_String = 1003, - Prop_WillDriftInYaw_Bool = 1004, - Prop_ManufacturerName_String = 1005, - Prop_TrackingFirmwareVersion_String = 1006, - Prop_HardwareRevision_String = 1007, - Prop_AllWirelessDongleDescriptions_String = 1008, - Prop_ConnectedWirelessDongle_String = 1009, - Prop_DeviceIsWireless_Bool = 1010, - Prop_DeviceIsCharging_Bool = 1011, - Prop_DeviceBatteryPercentage_Float = 1012, - Prop_StatusDisplayTransform_Matrix34 = 1013, - Prop_Firmware_UpdateAvailable_Bool = 1014, - Prop_Firmware_ManualUpdate_Bool = 1015, - Prop_Firmware_ManualUpdateURL_String = 1016, - Prop_HardwareRevision_Uint64 = 1017, - Prop_FirmwareVersion_Uint64 = 1018, - Prop_FPGAVersion_Uint64 = 1019, - Prop_VRCVersion_Uint64 = 1020, - Prop_RadioVersion_Uint64 = 1021, - Prop_DongleVersion_Uint64 = 1022, - Prop_BlockServerShutdown_Bool = 1023, - Prop_CanUnifyCoordinateSystemWithHmd_Bool = 1024, - Prop_ContainsProximitySensor_Bool = 1025, - Prop_DeviceProvidesBatteryStatus_Bool = 1026, - Prop_DeviceCanPowerOff_Bool = 1027, - Prop_Firmware_ProgrammingTarget_String = 1028, - Prop_DeviceClass_Int32 = 1029, - Prop_HasCamera_Bool = 1030, - Prop_DriverVersion_String = 1031, - Prop_Firmware_ForceUpdateRequired_Bool = 1032, - Prop_ViveSystemButtonFixRequired_Bool = 1033, - Prop_ParentDriver_Uint64 = 1034, - Prop_ResourceRoot_String = 1035, - Prop_RegisteredDeviceType_String = 1036, - Prop_InputProfilePath_String = 1037, - Prop_NeverTracked_Bool = 1038, - Prop_NumCameras_Int32 = 1039, - Prop_CameraFrameLayout_Int32 = 1040, - Prop_CameraStreamFormat_Int32 = 1041, - Prop_AdditionalDeviceSettingsPath_String = 1042, - Prop_Identifiable_Bool = 1043, - Prop_BootloaderVersion_Uint64 = 1044, - Prop_AdditionalSystemReportData_String = 1045, - Prop_CompositeFirmwareVersion_String = 1046, - Prop_Firmware_RemindUpdate_Bool = 1047, - Prop_PeripheralApplicationVersion_Uint64 = 1048, - Prop_ManufacturerSerialNumber_String = 1049, - Prop_ComputedSerialNumber_String = 1050, - Prop_EstimatedDeviceFirstUseTime_Int32 = 1051, - Prop_ReportsTimeSinceVSync_Bool = 2000, - Prop_SecondsFromVsyncToPhotons_Float = 2001, - Prop_DisplayFrequency_Float = 2002, - Prop_UserIpdMeters_Float = 2003, - Prop_CurrentUniverseId_Uint64 = 2004, - Prop_PreviousUniverseId_Uint64 = 2005, - Prop_DisplayFirmwareVersion_Uint64 = 2006, - Prop_IsOnDesktop_Bool = 2007, - Prop_DisplayMCType_Int32 = 2008, - Prop_DisplayMCOffset_Float = 2009, - Prop_DisplayMCScale_Float = 2010, - Prop_EdidVendorID_Int32 = 2011, - Prop_DisplayMCImageLeft_String = 2012, - Prop_DisplayMCImageRight_String = 2013, - Prop_DisplayGCBlackClamp_Float = 2014, - Prop_EdidProductID_Int32 = 2015, - Prop_CameraToHeadTransform_Matrix34 = 2016, - Prop_DisplayGCType_Int32 = 2017, - Prop_DisplayGCOffset_Float = 2018, - Prop_DisplayGCScale_Float = 2019, - Prop_DisplayGCPrescale_Float = 2020, - Prop_DisplayGCImage_String = 2021, - Prop_LensCenterLeftU_Float = 2022, - Prop_LensCenterLeftV_Float = 2023, - Prop_LensCenterRightU_Float = 2024, - Prop_LensCenterRightV_Float = 2025, - Prop_UserHeadToEyeDepthMeters_Float = 2026, - Prop_CameraFirmwareVersion_Uint64 = 2027, - Prop_CameraFirmwareDescription_String = 2028, - Prop_DisplayFPGAVersion_Uint64 = 2029, - Prop_DisplayBootloaderVersion_Uint64 = 2030, - Prop_DisplayHardwareVersion_Uint64 = 2031, - Prop_AudioFirmwareVersion_Uint64 = 2032, - Prop_CameraCompatibilityMode_Int32 = 2033, - Prop_ScreenshotHorizontalFieldOfViewDegrees_Float = 2034, - Prop_ScreenshotVerticalFieldOfViewDegrees_Float = 2035, - Prop_DisplaySuppressed_Bool = 2036, - Prop_DisplayAllowNightMode_Bool = 2037, - Prop_DisplayMCImageWidth_Int32 = 2038, - Prop_DisplayMCImageHeight_Int32 = 2039, - Prop_DisplayMCImageNumChannels_Int32 = 2040, - Prop_DisplayMCImageData_Binary = 2041, - Prop_SecondsFromPhotonsToVblank_Float = 2042, - Prop_DriverDirectModeSendsVsyncEvents_Bool = 2043, - Prop_DisplayDebugMode_Bool = 2044, - Prop_GraphicsAdapterLuid_Uint64 = 2045, - Prop_DriverProvidedChaperonePath_String = 2048, - Prop_ExpectedTrackingReferenceCount_Int32 = 2049, - Prop_ExpectedControllerCount_Int32 = 2050, - Prop_NamedIconPathControllerLeftDeviceOff_String = 2051, - Prop_NamedIconPathControllerRightDeviceOff_String = 2052, - Prop_NamedIconPathTrackingReferenceDeviceOff_String = 2053, - Prop_DoNotApplyPrediction_Bool = 2054, - Prop_CameraToHeadTransforms_Matrix34_Array = 2055, - Prop_DistortionMeshResolution_Int32 = 2056, - Prop_DriverIsDrawingControllers_Bool = 2057, - Prop_DriverRequestsApplicationPause_Bool = 2058, - Prop_DriverRequestsReducedRendering_Bool = 2059, - Prop_MinimumIpdStepMeters_Float = 2060, - Prop_AudioBridgeFirmwareVersion_Uint64 = 2061, - Prop_ImageBridgeFirmwareVersion_Uint64 = 2062, - Prop_ImuToHeadTransform_Matrix34 = 2063, - Prop_ImuFactoryGyroBias_Vector3 = 2064, - Prop_ImuFactoryGyroScale_Vector3 = 2065, - Prop_ImuFactoryAccelerometerBias_Vector3 = 2066, - Prop_ImuFactoryAccelerometerScale_Vector3 = 2067, - Prop_ConfigurationIncludesLighthouse20Features_Bool = 2069, - Prop_AdditionalRadioFeatures_Uint64 = 2070, - Prop_CameraWhiteBalance_Vector4_Array = 2071, - Prop_CameraDistortionFunction_Int32_Array = 2072, - Prop_CameraDistortionCoefficients_Float_Array = 2073, - Prop_ExpectedControllerType_String = 2074, - Prop_HmdTrackingStyle_Int32 = 2075, - Prop_DriverProvidedChaperoneVisibility_Bool = 2076, - Prop_HmdColumnCorrectionSettingPrefix_String = 2077, - Prop_CameraSupportsCompatibilityModes_Bool = 2078, - Prop_SupportsRoomViewDepthProjection_Bool = 2079, - Prop_DisplayAvailableFrameRates_Float_Array = 2080, - Prop_DisplaySupportsMultipleFramerates_Bool = 2081, - Prop_DisplayColorMultLeft_Vector3 = 2082, - Prop_DisplayColorMultRight_Vector3 = 2083, - Prop_DisplaySupportsRuntimeFramerateChange_Bool = 2084, - Prop_DisplaySupportsAnalogGain_Bool = 2085, - Prop_DisplayMinAnalogGain_Float = 2086, - Prop_DisplayMaxAnalogGain_Float = 2087, - Prop_DashboardScale_Float = 2091, - Prop_IpdUIRangeMinMeters_Float = 2100, - Prop_IpdUIRangeMaxMeters_Float = 2101, - Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, - Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, - Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, - Prop_DriverRequestedMuraFeather_InnerTop_Int32 = 2203, - Prop_DriverRequestedMuraFeather_InnerBottom_Int32 = 2204, - Prop_DriverRequestedMuraFeather_OuterLeft_Int32 = 2205, - Prop_DriverRequestedMuraFeather_OuterRight_Int32 = 2206, - Prop_DriverRequestedMuraFeather_OuterTop_Int32 = 2207, - Prop_DriverRequestedMuraFeather_OuterBottom_Int32 = 2208, - Prop_Audio_DefaultPlaybackDeviceId_String = 2300, - Prop_Audio_DefaultRecordingDeviceId_String = 2301, - Prop_Audio_DefaultPlaybackDeviceVolume_Float = 2302, - Prop_Audio_SupportsDualSpeakerAndJackOutput_Bool = 2303, - Prop_AttachedDeviceId_String = 3000, - Prop_SupportedButtons_Uint64 = 3001, - Prop_Axis0Type_Int32 = 3002, - Prop_Axis1Type_Int32 = 3003, - Prop_Axis2Type_Int32 = 3004, - Prop_Axis3Type_Int32 = 3005, - Prop_Axis4Type_Int32 = 3006, - Prop_ControllerRoleHint_Int32 = 3007, - Prop_FieldOfViewLeftDegrees_Float = 4000, - Prop_FieldOfViewRightDegrees_Float = 4001, - Prop_FieldOfViewTopDegrees_Float = 4002, - Prop_FieldOfViewBottomDegrees_Float = 4003, - Prop_TrackingRangeMinimumMeters_Float = 4004, - Prop_TrackingRangeMaximumMeters_Float = 4005, - Prop_ModeLabel_String = 4006, - Prop_CanWirelessIdentify_Bool = 4007, - Prop_Nonce_Int32 = 4008, - Prop_IconPathName_String = 5000, - Prop_NamedIconPathDeviceOff_String = 5001, - Prop_NamedIconPathDeviceSearching_String = 5002, - Prop_NamedIconPathDeviceSearchingAlert_String = 5003, - Prop_NamedIconPathDeviceReady_String = 5004, - Prop_NamedIconPathDeviceReadyAlert_String = 5005, - Prop_NamedIconPathDeviceNotReady_String = 5006, - Prop_NamedIconPathDeviceStandby_String = 5007, - Prop_NamedIconPathDeviceAlertLow_String = 5008, - Prop_NamedIconPathDeviceStandbyAlert_String = 5009, - Prop_DisplayHiddenArea_Binary_Start = 5100, - Prop_DisplayHiddenArea_Binary_End = 5150, - Prop_ParentContainer = 5151, - Prop_OverrideContainer_Uint64 = 5152, - Prop_UserConfigPath_String = 6000, - Prop_InstallPath_String = 6001, - Prop_HasDisplayComponent_Bool = 6002, - Prop_HasControllerComponent_Bool = 6003, - Prop_HasCameraComponent_Bool = 6004, - Prop_HasDriverDirectModeComponent_Bool = 6005, - Prop_HasVirtualDisplayComponent_Bool = 6006, - Prop_HasSpatialAnchorsSupport_Bool = 6007, - Prop_ControllerType_String = 7000, - Prop_ControllerHandSelectionPriority_Int32 = 7002, - Prop_VendorSpecific_Reserved_Start = 10000, - Prop_VendorSpecific_Reserved_End = 10999, - Prop_TrackedDeviceProperty_Max = 1000000, -} -public enum ETrackedPropertyError -{ - TrackedProp_Success = 0, - TrackedProp_WrongDataType = 1, - TrackedProp_WrongDeviceClass = 2, - TrackedProp_BufferTooSmall = 3, - TrackedProp_UnknownProperty = 4, - TrackedProp_InvalidDevice = 5, - TrackedProp_CouldNotContactServer = 6, - TrackedProp_ValueNotProvidedByDevice = 7, - TrackedProp_StringExceedsMaximumLength = 8, - TrackedProp_NotYetAvailable = 9, - TrackedProp_PermissionDenied = 10, - TrackedProp_InvalidOperation = 11, - TrackedProp_CannotWriteToWildcards = 12, - TrackedProp_IPCReadFailure = 13, - TrackedProp_OutOfMemory = 14, - TrackedProp_InvalidContainer = 15, -} -public enum EHmdTrackingStyle -{ - Unknown = 0, - Lighthouse = 1, - OutsideInCameras = 2, - InsideOutCameras = 3, -} -public enum EVRSubmitFlags -{ - Submit_Default = 0, - Submit_LensDistortionAlreadyApplied = 1, - Submit_GlRenderBuffer = 2, - Submit_Reserved = 4, - Submit_TextureWithPose = 8, - Submit_TextureWithDepth = 16, - Submit_FrameDiscontinuty = 32, - Submit_VulkanTextureWithArrayData = 64, -} -public enum EVRState -{ - Undefined = -1, - Off = 0, - Searching = 1, - Searching_Alert = 2, - Ready = 3, - Ready_Alert = 4, - NotReady = 5, - Standby = 6, - Ready_Alert_Low = 7, -} -public enum EVREventType -{ - VREvent_None = 0, - VREvent_TrackedDeviceActivated = 100, - VREvent_TrackedDeviceDeactivated = 101, - VREvent_TrackedDeviceUpdated = 102, - VREvent_TrackedDeviceUserInteractionStarted = 103, - VREvent_TrackedDeviceUserInteractionEnded = 104, - VREvent_IpdChanged = 105, - VREvent_EnterStandbyMode = 106, - VREvent_LeaveStandbyMode = 107, - VREvent_TrackedDeviceRoleChanged = 108, - VREvent_WatchdogWakeUpRequested = 109, - VREvent_LensDistortionChanged = 110, - VREvent_PropertyChanged = 111, - VREvent_WirelessDisconnect = 112, - VREvent_WirelessReconnect = 113, - VREvent_ButtonPress = 200, - VREvent_ButtonUnpress = 201, - VREvent_ButtonTouch = 202, - VREvent_ButtonUntouch = 203, - VREvent_Modal_Cancel = 257, - VREvent_MouseMove = 300, - VREvent_MouseButtonDown = 301, - VREvent_MouseButtonUp = 302, - VREvent_FocusEnter = 303, - VREvent_FocusLeave = 304, - VREvent_ScrollDiscrete = 305, - VREvent_TouchPadMove = 306, - VREvent_OverlayFocusChanged = 307, - VREvent_ReloadOverlays = 308, - VREvent_ScrollSmooth = 309, - VREvent_LockMousePosition = 310, - VREvent_UnlockMousePosition = 311, - VREvent_InputFocusCaptured = 400, - VREvent_InputFocusReleased = 401, - VREvent_SceneApplicationChanged = 404, - VREvent_SceneFocusChanged = 405, - VREvent_InputFocusChanged = 406, - VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, - VREvent_ActionBindingReloaded = 409, - VREvent_HideRenderModels = 410, - VREvent_ShowRenderModels = 411, - VREvent_SceneApplicationStateChanged = 412, - VREvent_ConsoleOpened = 420, - VREvent_ConsoleClosed = 421, - VREvent_OverlayShown = 500, - VREvent_OverlayHidden = 501, - VREvent_DashboardActivated = 502, - VREvent_DashboardDeactivated = 503, - VREvent_DashboardRequested = 505, - VREvent_ResetDashboard = 506, - VREvent_ImageLoaded = 508, - VREvent_ShowKeyboard = 509, - VREvent_HideKeyboard = 510, - VREvent_OverlayGamepadFocusGained = 511, - VREvent_OverlayGamepadFocusLost = 512, - VREvent_OverlaySharedTextureChanged = 513, - VREvent_ScreenshotTriggered = 516, - VREvent_ImageFailed = 517, - VREvent_DashboardOverlayCreated = 518, - VREvent_SwitchGamepadFocus = 519, - VREvent_RequestScreenshot = 520, - VREvent_ScreenshotTaken = 521, - VREvent_ScreenshotFailed = 522, - VREvent_SubmitScreenshotToDashboard = 523, - VREvent_ScreenshotProgressToDashboard = 524, - VREvent_PrimaryDashboardDeviceChanged = 525, - VREvent_RoomViewShown = 526, - VREvent_RoomViewHidden = 527, - VREvent_ShowUI = 528, - VREvent_ShowDevTools = 529, - VREvent_DesktopViewUpdating = 530, - VREvent_DesktopViewReady = 531, - VREvent_Notification_Shown = 600, - VREvent_Notification_Hidden = 601, - VREvent_Notification_BeginInteraction = 602, - VREvent_Notification_Destroyed = 603, - VREvent_Quit = 700, - VREvent_ProcessQuit = 701, - VREvent_QuitAcknowledged = 703, - VREvent_DriverRequestedQuit = 704, - VREvent_RestartRequested = 705, - VREvent_ChaperoneDataHasChanged = 800, - VREvent_ChaperoneUniverseHasChanged = 801, - VREvent_ChaperoneTempDataHasChanged = 802, - VREvent_ChaperoneSettingsHaveChanged = 803, - VREvent_SeatedZeroPoseReset = 804, - VREvent_ChaperoneFlushCache = 805, - VREvent_ChaperoneRoomSetupStarting = 806, - VREvent_ChaperoneRoomSetupFinished = 807, - VREvent_StandingZeroPoseReset = 808, - VREvent_AudioSettingsHaveChanged = 820, - VREvent_BackgroundSettingHasChanged = 850, - VREvent_CameraSettingsHaveChanged = 851, - VREvent_ReprojectionSettingHasChanged = 852, - VREvent_ModelSkinSettingsHaveChanged = 853, - VREvent_EnvironmentSettingsHaveChanged = 854, - VREvent_PowerSettingsHaveChanged = 855, - VREvent_EnableHomeAppSettingsHaveChanged = 856, - VREvent_SteamVRSectionSettingChanged = 857, - VREvent_LighthouseSectionSettingChanged = 858, - VREvent_NullSectionSettingChanged = 859, - VREvent_UserInterfaceSectionSettingChanged = 860, - VREvent_NotificationsSectionSettingChanged = 861, - VREvent_KeyboardSectionSettingChanged = 862, - VREvent_PerfSectionSettingChanged = 863, - VREvent_DashboardSectionSettingChanged = 864, - VREvent_WebInterfaceSectionSettingChanged = 865, - VREvent_TrackersSectionSettingChanged = 866, - VREvent_LastKnownSectionSettingChanged = 867, - VREvent_DismissedWarningsSectionSettingChanged = 868, - VREvent_GpuSpeedSectionSettingChanged = 869, - VREvent_WindowsMRSectionSettingChanged = 870, - VREvent_OtherSectionSettingChanged = 871, - VREvent_StatusUpdate = 900, - VREvent_WebInterface_InstallDriverCompleted = 950, - VREvent_MCImageUpdated = 1000, - VREvent_FirmwareUpdateStarted = 1100, - VREvent_FirmwareUpdateFinished = 1101, - VREvent_KeyboardClosed = 1200, - VREvent_KeyboardCharInput = 1201, - VREvent_KeyboardDone = 1202, - VREvent_ApplicationListUpdated = 1303, - VREvent_ApplicationMimeTypeLoad = 1304, - VREvent_ProcessConnected = 1306, - VREvent_ProcessDisconnected = 1307, - VREvent_Compositor_ChaperoneBoundsShown = 1410, - VREvent_Compositor_ChaperoneBoundsHidden = 1411, - VREvent_Compositor_DisplayDisconnected = 1412, - VREvent_Compositor_DisplayReconnected = 1413, - VREvent_Compositor_HDCPError = 1414, - VREvent_Compositor_ApplicationNotResponding = 1415, - VREvent_Compositor_ApplicationResumed = 1416, - VREvent_Compositor_OutOfVideoMemory = 1417, - VREvent_Compositor_DisplayModeNotSupported = 1418, - VREvent_Compositor_StageOverrideReady = 1419, - VREvent_TrackedCamera_StartVideoStream = 1500, - VREvent_TrackedCamera_StopVideoStream = 1501, - VREvent_TrackedCamera_PauseVideoStream = 1502, - VREvent_TrackedCamera_ResumeVideoStream = 1503, - VREvent_TrackedCamera_EditingSurface = 1550, - VREvent_PerformanceTest_EnableCapture = 1600, - VREvent_PerformanceTest_DisableCapture = 1601, - VREvent_PerformanceTest_FidelityLevel = 1602, - VREvent_MessageOverlay_Closed = 1650, - VREvent_MessageOverlayCloseRequested = 1651, - VREvent_Input_HapticVibration = 1700, - VREvent_Input_BindingLoadFailed = 1701, - VREvent_Input_BindingLoadSuccessful = 1702, - VREvent_Input_ActionManifestReloaded = 1703, - VREvent_Input_ActionManifestLoadFailed = 1704, - VREvent_Input_ProgressUpdate = 1705, - VREvent_Input_TrackerActivated = 1706, - VREvent_Input_BindingsUpdated = 1707, - VREvent_Input_BindingSubscriptionChanged = 1708, - VREvent_SpatialAnchors_PoseUpdated = 1800, - VREvent_SpatialAnchors_DescriptorUpdated = 1801, - VREvent_SpatialAnchors_RequestPoseUpdate = 1802, - VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803, - VREvent_SystemReport_Started = 1900, - VREvent_Monitor_ShowHeadsetView = 2000, - VREvent_Monitor_HideHeadsetView = 2001, - VREvent_VendorSpecific_Reserved_Start = 10000, - VREvent_VendorSpecific_Reserved_End = 19999, -} -public enum EDeviceActivityLevel -{ - k_EDeviceActivityLevel_Unknown = -1, - k_EDeviceActivityLevel_Idle = 0, - k_EDeviceActivityLevel_UserInteraction = 1, - k_EDeviceActivityLevel_UserInteraction_Timeout = 2, - k_EDeviceActivityLevel_Standby = 3, - k_EDeviceActivityLevel_Idle_Timeout = 4, -} -public enum EVRButtonId -{ - k_EButton_System = 0, - k_EButton_ApplicationMenu = 1, - k_EButton_Grip = 2, - k_EButton_DPad_Left = 3, - k_EButton_DPad_Up = 4, - k_EButton_DPad_Right = 5, - k_EButton_DPad_Down = 6, - k_EButton_A = 7, - k_EButton_ProximitySensor = 31, - k_EButton_Axis0 = 32, - k_EButton_Axis1 = 33, - k_EButton_Axis2 = 34, - k_EButton_Axis3 = 35, - k_EButton_Axis4 = 36, - k_EButton_SteamVR_Touchpad = 32, - k_EButton_SteamVR_Trigger = 33, - k_EButton_Dashboard_Back = 2, - k_EButton_IndexController_A = 2, - k_EButton_IndexController_B = 1, - k_EButton_IndexController_JoyStick = 35, - k_EButton_Max = 64, -} -public enum EVRMouseButton -{ - Left = 1, - Right = 2, - Middle = 4, -} -public enum EShowUIType -{ - ShowUI_ControllerBinding = 0, - ShowUI_ManageTrackers = 1, - ShowUI_Pairing = 3, - ShowUI_Settings = 4, - ShowUI_DebugCommands = 5, - ShowUI_FullControllerBinding = 6, - ShowUI_ManageDrivers = 7, -} -public enum EHDCPError -{ - None = 0, - LinkLost = 1, - Tampered = 2, - DeviceRevoked = 3, - Unknown = 4, -} -public enum EVRComponentProperty -{ - IsStatic = 1, - IsVisible = 2, - IsTouched = 4, - IsPressed = 8, - IsScrolled = 16, - IsHighlighted = 32, -} -public enum EVRInputError -{ - None = 0, - NameNotFound = 1, - WrongType = 2, - InvalidHandle = 3, - InvalidParam = 4, - NoSteam = 5, - MaxCapacityReached = 6, - IPCError = 7, - NoActiveActionSet = 8, - InvalidDevice = 9, - InvalidSkeleton = 10, - InvalidBoneCount = 11, - InvalidCompressedData = 12, - NoData = 13, - BufferTooSmall = 14, - MismatchedActionManifest = 15, - MissingSkeletonData = 16, - InvalidBoneIndex = 17, - InvalidPriority = 18, - PermissionDenied = 19, - InvalidRenderModel = 20, -} -public enum EVRSpatialAnchorError -{ - Success = 0, - Internal = 1, - UnknownHandle = 2, - ArrayTooSmall = 3, - InvalidDescriptorChar = 4, - NotYetAvailable = 5, - NotAvailableInThisUniverse = 6, - PermanentlyUnavailable = 7, - WrongDriver = 8, - DescriptorTooLong = 9, - Unknown = 10, - NoRoomCalibration = 11, - InvalidArgument = 12, - UnknownDriver = 13, -} -public enum EHiddenAreaMeshType -{ - k_eHiddenAreaMesh_Standard = 0, - k_eHiddenAreaMesh_Inverse = 1, - k_eHiddenAreaMesh_LineLoop = 2, - k_eHiddenAreaMesh_Max = 3, -} -public enum EVRControllerAxisType -{ - k_eControllerAxis_None = 0, - k_eControllerAxis_TrackPad = 1, - k_eControllerAxis_Joystick = 2, - k_eControllerAxis_Trigger = 3, -} -public enum EVRControllerEventOutputType -{ - ControllerEventOutput_OSEvents = 0, - ControllerEventOutput_VREvents = 1, -} -public enum ECollisionBoundsStyle -{ - COLLISION_BOUNDS_STYLE_BEGINNER = 0, - COLLISION_BOUNDS_STYLE_INTERMEDIATE = 1, - COLLISION_BOUNDS_STYLE_SQUARES = 2, - COLLISION_BOUNDS_STYLE_ADVANCED = 3, - COLLISION_BOUNDS_STYLE_NONE = 4, - COLLISION_BOUNDS_STYLE_COUNT = 5, -} -public enum EVROverlayError -{ - None = 0, - UnknownOverlay = 10, - InvalidHandle = 11, - PermissionDenied = 12, - OverlayLimitExceeded = 13, - WrongVisibilityType = 14, - KeyTooLong = 15, - NameTooLong = 16, - KeyInUse = 17, - WrongTransformType = 18, - InvalidTrackedDevice = 19, - InvalidParameter = 20, - ThumbnailCantBeDestroyed = 21, - ArrayTooSmall = 22, - RequestFailed = 23, - InvalidTexture = 24, - UnableToLoadFile = 25, - KeyboardAlreadyInUse = 26, - NoNeighbor = 27, - TooManyMaskPrimitives = 29, - BadMaskPrimitive = 30, - TextureAlreadyLocked = 31, - TextureLockCapacityReached = 32, - TextureNotLocked = 33, -} -public enum EVRApplicationType -{ - VRApplication_Other = 0, - VRApplication_Scene = 1, - VRApplication_Overlay = 2, - VRApplication_Background = 3, - VRApplication_Utility = 4, - VRApplication_VRMonitor = 5, - VRApplication_SteamWatchdog = 6, - VRApplication_Bootstrapper = 7, - VRApplication_WebHelper = 8, - VRApplication_OpenXR = 9, - VRApplication_Max = 10, -} -public enum EVRFirmwareError -{ - None = 0, - Success = 1, - Fail = 2, -} -public enum EVRNotificationError -{ - OK = 0, - InvalidNotificationId = 100, - NotificationQueueFull = 101, - InvalidOverlayHandle = 102, - SystemWithUserValueAlreadyExists = 103, -} -public enum EVRSkeletalMotionRange -{ - WithController = 0, - WithoutController = 1, -} -public enum EVRSkeletalTrackingLevel -{ - VRSkeletalTracking_Estimated = 0, - VRSkeletalTracking_Partial = 1, - VRSkeletalTracking_Full = 2, - Count = 3, - Max = 2, -} -public enum EVRInitError -{ - None = 0, - Unknown = 1, - Init_InstallationNotFound = 100, - Init_InstallationCorrupt = 101, - Init_VRClientDLLNotFound = 102, - Init_FileNotFound = 103, - Init_FactoryNotFound = 104, - Init_InterfaceNotFound = 105, - Init_InvalidInterface = 106, - Init_UserConfigDirectoryInvalid = 107, - Init_HmdNotFound = 108, - Init_NotInitialized = 109, - Init_PathRegistryNotFound = 110, - Init_NoConfigPath = 111, - Init_NoLogPath = 112, - Init_PathRegistryNotWritable = 113, - Init_AppInfoInitFailed = 114, - Init_Retry = 115, - Init_InitCanceledByUser = 116, - Init_AnotherAppLaunching = 117, - Init_SettingsInitFailed = 118, - Init_ShuttingDown = 119, - Init_TooManyObjects = 120, - Init_NoServerForBackgroundApp = 121, - Init_NotSupportedWithCompositor = 122, - Init_NotAvailableToUtilityApps = 123, - Init_Internal = 124, - Init_HmdDriverIdIsNone = 125, - Init_HmdNotFoundPresenceFailed = 126, - Init_VRMonitorNotFound = 127, - Init_VRMonitorStartupFailed = 128, - Init_LowPowerWatchdogNotSupported = 129, - Init_InvalidApplicationType = 130, - Init_NotAvailableToWatchdogApps = 131, - Init_WatchdogDisabledInSettings = 132, - Init_VRDashboardNotFound = 133, - Init_VRDashboardStartupFailed = 134, - Init_VRHomeNotFound = 135, - Init_VRHomeStartupFailed = 136, - Init_RebootingBusy = 137, - Init_FirmwareUpdateBusy = 138, - Init_FirmwareRecoveryBusy = 139, - Init_USBServiceBusy = 140, - Init_VRWebHelperStartupFailed = 141, - Init_TrackerManagerInitFailed = 142, - Init_AlreadyRunning = 143, - Init_FailedForVrMonitor = 144, - Init_PropertyManagerInitFailed = 145, - Init_WebServerFailed = 146, - Driver_Failed = 200, - Driver_Unknown = 201, - Driver_HmdUnknown = 202, - Driver_NotLoaded = 203, - Driver_RuntimeOutOfDate = 204, - Driver_HmdInUse = 205, - Driver_NotCalibrated = 206, - Driver_CalibrationInvalid = 207, - Driver_HmdDisplayNotFound = 208, - Driver_TrackedDeviceInterfaceUnknown = 209, - Driver_HmdDriverIdOutOfBounds = 211, - Driver_HmdDisplayMirrored = 212, - Driver_HmdDisplayNotFoundLaptop = 213, - IPC_ServerInitFailed = 300, - IPC_ConnectFailed = 301, - IPC_SharedStateInitFailed = 302, - IPC_CompositorInitFailed = 303, - IPC_MutexInitFailed = 304, - IPC_Failed = 305, - IPC_CompositorConnectFailed = 306, - IPC_CompositorInvalidConnectResponse = 307, - IPC_ConnectFailedAfterMultipleAttempts = 308, - IPC_ConnectFailedAfterTargetExited = 309, - IPC_NamespaceUnavailable = 310, - Compositor_Failed = 400, - Compositor_D3D11HardwareRequired = 401, - Compositor_FirmwareRequiresUpdate = 402, - Compositor_OverlayInitFailed = 403, - Compositor_ScreenshotsInitFailed = 404, - Compositor_UnableToCreateDevice = 405, - Compositor_SharedStateIsNull = 406, - Compositor_NotificationManagerIsNull = 407, - Compositor_ResourceManagerClientIsNull = 408, - Compositor_MessageOverlaySharedStateInitFailure = 409, - Compositor_PropertiesInterfaceIsNull = 410, - Compositor_CreateFullscreenWindowFailed = 411, - Compositor_SettingsInterfaceIsNull = 412, - Compositor_FailedToShowWindow = 413, - Compositor_DistortInterfaceIsNull = 414, - Compositor_DisplayFrequencyFailure = 415, - Compositor_RendererInitializationFailed = 416, - Compositor_DXGIFactoryInterfaceIsNull = 417, - Compositor_DXGIFactoryCreateFailed = 418, - Compositor_DXGIFactoryQueryFailed = 419, - Compositor_InvalidAdapterDesktop = 420, - Compositor_InvalidHmdAttachment = 421, - Compositor_InvalidOutputDesktop = 422, - Compositor_InvalidDeviceProvided = 423, - Compositor_D3D11RendererInitializationFailed = 424, - Compositor_FailedToFindDisplayMode = 425, - Compositor_FailedToCreateSwapChain = 426, - Compositor_FailedToGetBackBuffer = 427, - Compositor_FailedToCreateRenderTarget = 428, - Compositor_FailedToCreateDXGI2SwapChain = 429, - Compositor_FailedtoGetDXGI2BackBuffer = 430, - Compositor_FailedToCreateDXGI2RenderTarget = 431, - Compositor_FailedToGetDXGIDeviceInterface = 432, - Compositor_SelectDisplayMode = 433, - Compositor_FailedToCreateNvAPIRenderTargets = 434, - Compositor_NvAPISetDisplayMode = 435, - Compositor_FailedToCreateDirectModeDisplay = 436, - Compositor_InvalidHmdPropertyContainer = 437, - Compositor_UpdateDisplayFrequency = 438, - Compositor_CreateRasterizerState = 439, - Compositor_CreateWireframeRasterizerState = 440, - Compositor_CreateSamplerState = 441, - Compositor_CreateClampToBorderSamplerState = 442, - Compositor_CreateAnisoSamplerState = 443, - Compositor_CreateOverlaySamplerState = 444, - Compositor_CreatePanoramaSamplerState = 445, - Compositor_CreateFontSamplerState = 446, - Compositor_CreateNoBlendState = 447, - Compositor_CreateBlendState = 448, - Compositor_CreateAlphaBlendState = 449, - Compositor_CreateBlendStateMaskR = 450, - Compositor_CreateBlendStateMaskG = 451, - Compositor_CreateBlendStateMaskB = 452, - Compositor_CreateDepthStencilState = 453, - Compositor_CreateDepthStencilStateNoWrite = 454, - Compositor_CreateDepthStencilStateNoDepth = 455, - Compositor_CreateFlushTexture = 456, - Compositor_CreateDistortionSurfaces = 457, - Compositor_CreateConstantBuffer = 458, - Compositor_CreateHmdPoseConstantBuffer = 459, - Compositor_CreateHmdPoseStagingConstantBuffer = 460, - Compositor_CreateSharedFrameInfoConstantBuffer = 461, - Compositor_CreateOverlayConstantBuffer = 462, - Compositor_CreateSceneTextureIndexConstantBuffer = 463, - Compositor_CreateReadableSceneTextureIndexConstantBuffer = 464, - Compositor_CreateLayerGraphicsTextureIndexConstantBuffer = 465, - Compositor_CreateLayerComputeTextureIndexConstantBuffer = 466, - Compositor_CreateLayerComputeSceneTextureIndexConstantBuffer = 467, - Compositor_CreateComputeHmdPoseConstantBuffer = 468, - Compositor_CreateGeomConstantBuffer = 469, - Compositor_CreatePanelMaskConstantBuffer = 470, - Compositor_CreatePixelSimUBO = 471, - Compositor_CreateMSAARenderTextures = 472, - Compositor_CreateResolveRenderTextures = 473, - Compositor_CreateComputeResolveRenderTextures = 474, - Compositor_CreateDriverDirectModeResolveTextures = 475, - Compositor_OpenDriverDirectModeResolveTextures = 476, - Compositor_CreateFallbackSyncTexture = 477, - Compositor_ShareFallbackSyncTexture = 478, - Compositor_CreateOverlayIndexBuffer = 479, - Compositor_CreateOverlayVertexBuffer = 480, - Compositor_CreateTextVertexBuffer = 481, - Compositor_CreateTextIndexBuffer = 482, - Compositor_CreateMirrorTextures = 483, - Compositor_CreateLastFrameRenderTexture = 484, - Compositor_CreateMirrorOverlay = 485, - Compositor_FailedToCreateVirtualDisplayBackbuffer = 486, - Compositor_DisplayModeNotSupported = 487, - Compositor_CreateOverlayInvalidCall = 488, - Compositor_CreateOverlayAlreadyInitialized = 489, - Compositor_FailedToCreateMailbox = 490, - VendorSpecific_UnableToConnectToOculusRuntime = 1000, - VendorSpecific_WindowsNotInDevMode = 1001, - VendorSpecific_HmdFound_CantOpenDevice = 1101, - VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, - VendorSpecific_HmdFound_NoStoredConfig = 1103, - VendorSpecific_HmdFound_ConfigTooBig = 1104, - VendorSpecific_HmdFound_ConfigTooSmall = 1105, - VendorSpecific_HmdFound_UnableToInitZLib = 1106, - VendorSpecific_HmdFound_CantReadFirmwareVersion = 1107, - VendorSpecific_HmdFound_UnableToSendUserDataStart = 1108, - VendorSpecific_HmdFound_UnableToGetUserDataStart = 1109, - VendorSpecific_HmdFound_UnableToGetUserDataNext = 1110, - VendorSpecific_HmdFound_UserDataAddressRange = 1111, - VendorSpecific_HmdFound_UserDataError = 1112, - VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, - VendorSpecific_OculusRuntimeBadInstall = 1114, - Steam_SteamInstallationNotFound = 2000, - LastError = 2001, -} -public enum EVRScreenshotType -{ - None = 0, - Mono = 1, - Stereo = 2, - Cubemap = 3, - MonoPanorama = 4, - StereoPanorama = 5, -} -public enum EVRScreenshotPropertyFilenames -{ - Preview = 0, - VR = 1, -} -public enum EVRTrackedCameraError -{ - None = 0, - OperationFailed = 100, - InvalidHandle = 101, - InvalidFrameHeaderVersion = 102, - OutOfHandles = 103, - IPCFailure = 104, - NotSupportedForThisDevice = 105, - SharedMemoryFailure = 106, - FrameBufferingFailure = 107, - StreamSetupFailure = 108, - InvalidGLTextureId = 109, - InvalidSharedTextureHandle = 110, - FailedToGetGLTextureId = 111, - SharedTextureFailure = 112, - NoFrameAvailable = 113, - InvalidArgument = 114, - InvalidFrameBufferSize = 115, -} -public enum EVRTrackedCameraFrameLayout -{ - Mono = 1, - Stereo = 2, - VerticalLayout = 16, - HorizontalLayout = 32, -} -public enum EVRTrackedCameraFrameType -{ - Distorted = 0, - Undistorted = 1, - MaximumUndistorted = 2, - MAX_CAMERA_FRAME_TYPES = 3, -} -public enum EVRDistortionFunctionType -{ - None = 0, - FTheta = 1, - Extended_FTheta = 2, - MAX_DISTORTION_FUNCTION_TYPES = 3, -} -public enum EVSync -{ - None = 0, - WaitRender = 1, - NoWaitRender = 2, -} -public enum EVRMuraCorrectionMode -{ - Default = 0, - NoCorrection = 1, -} -public enum Imu_OffScaleFlags -{ - OffScale_AccelX = 1, - OffScale_AccelY = 2, - OffScale_AccelZ = 4, - OffScale_GyroX = 8, - OffScale_GyroY = 16, - OffScale_GyroZ = 32, -} -public enum EVRApplicationError -{ - None = 0, - AppKeyAlreadyExists = 100, - NoManifest = 101, - NoApplication = 102, - InvalidIndex = 103, - UnknownApplication = 104, - IPCFailed = 105, - ApplicationAlreadyRunning = 106, - InvalidManifest = 107, - InvalidApplication = 108, - LaunchFailed = 109, - ApplicationAlreadyStarting = 110, - LaunchInProgress = 111, - OldApplicationQuitting = 112, - TransitionAborted = 113, - IsTemplate = 114, - SteamVRIsExiting = 115, - BufferTooSmall = 200, - PropertyNotSet = 201, - UnknownProperty = 202, - InvalidParameter = 203, -} -public enum EVRApplicationProperty -{ - Name_String = 0, - LaunchType_String = 11, - WorkingDirectory_String = 12, - BinaryPath_String = 13, - Arguments_String = 14, - URL_String = 15, - Description_String = 50, - NewsURL_String = 51, - ImagePath_String = 52, - Source_String = 53, - ActionManifestURL_String = 54, - IsDashboardOverlay_Bool = 60, - IsTemplate_Bool = 61, - IsInstanced_Bool = 62, - IsInternal_Bool = 63, - WantsCompositorPauseInStandby_Bool = 64, - IsHidden_Bool = 65, - LastLaunchTime_Uint64 = 70, -} -public enum EVRSceneApplicationState -{ - None = 0, - Starting = 1, - Quitting = 2, - Running = 3, - Waiting = 4, -} -public enum ChaperoneCalibrationState -{ - OK = 1, - Warning = 100, - Warning_BaseStationMayHaveMoved = 101, - Warning_BaseStationRemoved = 102, - Warning_SeatedBoundsInvalid = 103, - Error = 200, - Error_BaseStationUninitialized = 201, - Error_BaseStationConflict = 202, - Error_PlayAreaInvalid = 203, - Error_CollisionBoundsInvalid = 204, -} -public enum EChaperoneConfigFile -{ - Live = 1, - Temp = 2, -} -public enum EChaperoneImportFlags -{ - EChaperoneImport_BoundsOnly = 1, -} -public enum EVRCompositorError -{ - None = 0, - RequestFailed = 1, - IncompatibleVersion = 100, - DoNotHaveFocus = 101, - InvalidTexture = 102, - IsNotSceneApplication = 103, - TextureIsOnWrongDevice = 104, - TextureUsesUnsupportedFormat = 105, - SharedTexturesNotSupported = 106, - IndexOutOfRange = 107, - AlreadySubmitted = 108, - InvalidBounds = 109, - AlreadySet = 110, -} -public enum EVRCompositorTimingMode -{ - Implicit = 0, - Explicit_RuntimePerformsPostPresentHandoff = 1, - Explicit_ApplicationPerformsPostPresentHandoff = 2, -} -public enum VROverlayInputMethod -{ - None = 0, - Mouse = 1, -} -public enum VROverlayTransformType -{ - VROverlayTransform_Invalid = -1, - VROverlayTransform_Absolute = 0, - VROverlayTransform_TrackedDeviceRelative = 1, - VROverlayTransform_SystemOverlay = 2, - VROverlayTransform_TrackedComponent = 3, - VROverlayTransform_Cursor = 4, - VROverlayTransform_DashboardTab = 5, - VROverlayTransform_DashboardThumb = 6, - VROverlayTransform_Mountable = 7, -} -public enum VROverlayFlags -{ - NoDashboardTab = 8, - SendVRDiscreteScrollEvents = 64, - SendVRTouchpadEvents = 128, - ShowTouchPadScrollWheel = 256, - TransferOwnershipToInternalProcess = 512, - SideBySide_Parallel = 1024, - SideBySide_Crossed = 2048, - Panorama = 4096, - StereoPanorama = 8192, - SortWithNonSceneOverlays = 16384, - VisibleInDashboard = 32768, - MakeOverlaysInteractiveIfVisible = 65536, - SendVRSmoothScrollEvents = 131072, - ProtectedContent = 262144, - HideLaserIntersection = 524288, - WantsModalBehavior = 1048576, - IsPremultiplied = 2097152, -} -public enum VRMessageOverlayResponse -{ - ButtonPress_0 = 0, - ButtonPress_1 = 1, - ButtonPress_2 = 2, - ButtonPress_3 = 3, - CouldntFindSystemOverlay = 4, - CouldntFindOrCreateClientOverlay = 5, - ApplicationQuit = 6, -} -public enum EGamepadTextInputMode -{ - k_EGamepadTextInputModeNormal = 0, - k_EGamepadTextInputModePassword = 1, - k_EGamepadTextInputModeSubmit = 2, -} -public enum EGamepadTextInputLineMode -{ - k_EGamepadTextInputLineModeSingleLine = 0, - k_EGamepadTextInputLineModeMultipleLines = 1, -} -public enum EVROverlayIntersectionMaskPrimitiveType -{ - OverlayIntersectionPrimitiveType_Rectangle = 0, - OverlayIntersectionPrimitiveType_Circle = 1, -} -public enum EKeyboardFlags -{ - KeyboardFlag_Minimal = 1, - KeyboardFlag_Modal = 2, -} -public enum EDeviceType -{ - Invalid = -1, - DirectX11 = 0, - Vulkan = 1, -} -public enum HeadsetViewMode_t -{ - HeadsetViewMode_Left = 0, - HeadsetViewMode_Right = 1, - HeadsetViewMode_Both = 2, -} -public enum EVRRenderModelError -{ - None = 0, - Loading = 100, - NotSupported = 200, - InvalidArg = 300, - InvalidModel = 301, - NoShapes = 302, - MultipleShapes = 303, - TooManyVertices = 304, - MultipleTextures = 305, - BufferTooSmall = 306, - NotEnoughNormals = 307, - NotEnoughTexCoords = 308, - InvalidTexture = 400, -} -public enum EVRRenderModelTextureFormat -{ - RGBA8_SRGB = 0, - BC2 = 1, - BC4 = 2, - BC7 = 3, - BC7_SRGB = 4, -} -public enum EVRNotificationType -{ - Transient = 0, - Persistent = 1, - Transient_SystemWithUserValue = 2, -} -public enum EVRNotificationStyle -{ - None = 0, - Application = 100, - Contact_Disabled = 200, - Contact_Enabled = 201, - Contact_Active = 202, -} -public enum EVRSettingsError -{ - None = 0, - IPCFailed = 1, - WriteFailed = 2, - ReadFailed = 3, - JsonParseFailed = 4, - UnsetSettingHasNoDefault = 5, -} -public enum EVRScreenshotError -{ - None = 0, - RequestFailed = 1, - IncompatibleVersion = 100, - NotFound = 101, - BufferTooSmall = 102, - ScreenshotAlreadyInProgress = 108, -} -public enum EVRSkeletalTransformSpace -{ - Model = 0, - Parent = 1, -} -public enum EVRSkeletalReferencePose -{ - BindPose = 0, - OpenHand = 1, - Fist = 2, - GripLimit = 3, -} -public enum EVRFinger -{ - Thumb = 0, - Index = 1, - Middle = 2, - Ring = 3, - Pinky = 4, - Count = 5, -} -public enum EVRFingerSplay -{ - Thumb_Index = 0, - Index_Middle = 1, - Middle_Ring = 2, - Ring_Pinky = 3, - Count = 4, -} -public enum EVRSummaryType -{ - FromAnimation = 0, - FromDevice = 1, -} -public enum EVRInputFilterCancelType -{ - VRInputFilterCancel_Timers = 0, - VRInputFilterCancel_Momentum = 1, -} -public enum EVRInputStringBits -{ - VRInputString_Hand = 1, - VRInputString_ControllerType = 2, - VRInputString_InputSource = 4, - VRInputString_All = -1, -} -public enum EIOBufferError -{ - IOBuffer_Success = 0, - IOBuffer_OperationFailed = 100, - IOBuffer_InvalidHandle = 101, - IOBuffer_InvalidArgument = 102, - IOBuffer_PathExists = 103, - IOBuffer_PathDoesNotExist = 104, - IOBuffer_Permission = 105, -} -public enum EIOBufferMode -{ - Read = 1, - Write = 2, - Create = 512, -} -public enum EVRDebugError -{ - Success = 0, - BadParameter = 1, -} -public enum EPropertyWriteType -{ - PropertyWrite_Set = 0, - PropertyWrite_Erase = 1, - PropertyWrite_SetError = 2, -} -public enum EBlockQueueError -{ - None = 0, - QueueAlreadyExists = 1, - QueueNotFound = 2, - BlockNotAvailable = 3, - InvalidHandle = 4, - InvalidParam = 5, - ParamMismatch = 6, - InternalError = 7, - AlreadyInitialized = 8, - OperationIsServerOnly = 9, - TooManyConnections = 10, -} -public enum EBlockQueueReadType -{ - BlockQueueRead_Latest = 0, - BlockQueueRead_New = 1, - BlockQueueRead_Next = 2, -} - -[StructLayout(LayoutKind.Explicit)] public struct VREvent_Data_t -{ - [FieldOffset(0)] public VREvent_Reserved_t reserved; - [FieldOffset(0)] public VREvent_Controller_t controller; - [FieldOffset(0)] public VREvent_Mouse_t mouse; - [FieldOffset(0)] public VREvent_Scroll_t scroll; - [FieldOffset(0)] public VREvent_Process_t process; - [FieldOffset(0)] public VREvent_Notification_t notification; - [FieldOffset(0)] public VREvent_Overlay_t overlay; - [FieldOffset(0)] public VREvent_Status_t status; - [FieldOffset(0)] public VREvent_Ipd_t ipd; - [FieldOffset(0)] public VREvent_Chaperone_t chaperone; - [FieldOffset(0)] public VREvent_PerformanceTest_t performanceTest; - [FieldOffset(0)] public VREvent_TouchPadMove_t touchPadMove; - [FieldOffset(0)] public VREvent_SeatedZeroPoseReset_t seatedZeroPoseReset; - [FieldOffset(0)] public VREvent_Screenshot_t screenshot; - [FieldOffset(0)] public VREvent_ScreenshotProgress_t screenshotProgress; - [FieldOffset(0)] public VREvent_ApplicationLaunch_t applicationLaunch; - [FieldOffset(0)] public VREvent_EditingCameraSurface_t cameraSurface; - [FieldOffset(0)] public VREvent_MessageOverlay_t messageOverlay; - [FieldOffset(0)] public VREvent_Property_t property; - [FieldOffset(0)] public VREvent_HapticVibration_t hapticVibration; - [FieldOffset(0)] public VREvent_WebConsole_t webConsole; - [FieldOffset(0)] public VREvent_InputBindingLoad_t inputBinding; - [FieldOffset(0)] public VREvent_SpatialAnchor_t spatialAnchor; - [FieldOffset(0)] public VREvent_InputActionManifestLoad_t actionManifest; - [FieldOffset(0)] public VREvent_ProgressUpdate_t progressUpdate; - [FieldOffset(0)] public VREvent_ShowUI_t showUi; - [FieldOffset(0)] public VREvent_ShowDevTools_t showDevTools; - [FieldOffset(0)] public VREvent_HDCPError_t hdcpError; - [FieldOffset(0)] public VREvent_Keyboard_t keyboard; // This has to be at the end due to a mono bug -} - - -[StructLayout(LayoutKind.Explicit)] public struct VROverlayIntersectionMaskPrimitive_Data_t -{ - [FieldOffset(0)] public IntersectionMaskRectangle_t m_Rectangle; - [FieldOffset(0)] public IntersectionMaskCircle_t m_Circle; -} - -[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix34_t -{ - public float m0; //float[3][4] - public float m1; - public float m2; - public float m3; - public float m4; - public float m5; - public float m6; - public float m7; - public float m8; - public float m9; - public float m10; - public float m11; -#if UNITY_5_3_OR_NEWER - - public Vector3 GetPosition() - { - return new Vector3(m3, m7, -m11); - } - - public bool IsRotationValid() - { - return ((m2 != 0 || m6 != 0 || m10 != 0) && (m1 != 0 || m5 != 0 || m9 != 0)); - } - - public Quaternion GetRotation() - { - if (IsRotationValid()) - { - float w = Mathf.Sqrt(Mathf.Max(0, 1 + m0 + m5 + m10)) / 2; - float x = Mathf.Sqrt(Mathf.Max(0, 1 + m0 - m5 - m10)) / 2; - float y = Mathf.Sqrt(Mathf.Max(0, 1 - m0 + m5 - m10)) / 2; - float z = Mathf.Sqrt(Mathf.Max(0, 1 - m0 - m5 + m10)) / 2; - - _copysign(ref x, -m9 - -m6); - _copysign(ref y, -m2 - -m8); - _copysign(ref z, m4 - m1); - - return new Quaternion(x, y, z, w); - } - return Quaternion.identity; - } - - private static void _copysign(ref float sizeval, float signval) - { - if (signval > 0 != sizeval > 0) - sizeval = -sizeval; - } -#endif -} -[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix33_t -{ - public float m0; //float[3][3] - public float m1; - public float m2; - public float m3; - public float m4; - public float m5; - public float m6; - public float m7; - public float m8; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdMatrix44_t -{ - public float m0; //float[4][4] - public float m1; - public float m2; - public float m3; - public float m4; - public float m5; - public float m6; - public float m7; - public float m8; - public float m9; - public float m10; - public float m11; - public float m12; - public float m13; - public float m14; - public float m15; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdVector3_t -{ - public float v0; //float[3] - public float v1; - public float v2; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdVector4_t -{ - public float v0; //float[4] - public float v1; - public float v2; - public float v3; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdVector3d_t -{ - public double v0; //double[3] - public double v1; - public double v2; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdVector2_t -{ - public float v0; //float[2] - public float v1; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdQuaternion_t -{ - public double w; - public double x; - public double y; - public double z; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdQuaternionf_t -{ - public float w; - public float x; - public float y; - public float z; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdColor_t -{ - public float r; - public float g; - public float b; - public float a; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdQuad_t -{ - public HmdVector3_t vCorners0; //HmdVector3_t[4] - public HmdVector3_t vCorners1; - public HmdVector3_t vCorners2; - public HmdVector3_t vCorners3; -} -[StructLayout(LayoutKind.Sequential)] public struct HmdRect2_t -{ - public HmdVector2_t vTopLeft; - public HmdVector2_t vBottomRight; -} -[StructLayout(LayoutKind.Sequential)] public struct DistortionCoordinates_t -{ - public float rfRed0; //float[2] - public float rfRed1; - public float rfGreen0; //float[2] - public float rfGreen1; - public float rfBlue0; //float[2] - public float rfBlue1; -} -[StructLayout(LayoutKind.Sequential)] public struct Texture_t -{ - public IntPtr handle; // void * - public ETextureType eType; - public EColorSpace eColorSpace; -} -[StructLayout(LayoutKind.Sequential)] public struct TrackedDevicePose_t -{ - public HmdMatrix34_t mDeviceToAbsoluteTracking; - public HmdVector3_t vVelocity; - public HmdVector3_t vAngularVelocity; - public ETrackingResult eTrackingResult; - [MarshalAs(UnmanagedType.I1)] - public bool bPoseIsValid; - [MarshalAs(UnmanagedType.I1)] - public bool bDeviceIsConnected; -} -[StructLayout(LayoutKind.Sequential)] public struct VRTextureBounds_t -{ - public float uMin; - public float vMin; - public float uMax; - public float vMax; -} -[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithPose_t -{ - public IntPtr handle; // void * - public ETextureType eType; - public EColorSpace eColorSpace; - public HmdMatrix34_t mDeviceToAbsoluteTracking; -} -[StructLayout(LayoutKind.Sequential)] public struct VRTextureDepthInfo_t -{ - public IntPtr handle; // void * - public HmdMatrix44_t mProjection; - public HmdVector2_t vRange; -} -[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithDepth_t -{ - public IntPtr handle; // void * - public ETextureType eType; - public EColorSpace eColorSpace; - public VRTextureDepthInfo_t depth; -} -[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithPoseAndDepth_t -{ - public IntPtr handle; // void * - public ETextureType eType; - public EColorSpace eColorSpace; - public HmdMatrix34_t mDeviceToAbsoluteTracking; - public VRTextureDepthInfo_t depth; -} -[StructLayout(LayoutKind.Sequential)] public struct VRVulkanTextureData_t -{ - public ulong m_nImage; - public IntPtr m_pDevice; // struct VkDevice_T * - public IntPtr m_pPhysicalDevice; // struct VkPhysicalDevice_T * - public IntPtr m_pInstance; // struct VkInstance_T * - public IntPtr m_pQueue; // struct VkQueue_T * - public uint m_nQueueFamilyIndex; - public uint m_nWidth; - public uint m_nHeight; - public uint m_nFormat; - public uint m_nSampleCount; -} -[StructLayout(LayoutKind.Sequential)] public struct VRVulkanTextureArrayData_t -{ - public uint m_unArrayIndex; - public uint m_unArraySize; -} -[StructLayout(LayoutKind.Sequential)] public struct D3D12TextureData_t -{ - public IntPtr m_pResource; // struct ID3D12Resource * - public IntPtr m_pCommandQueue; // struct ID3D12CommandQueue * - public uint m_nNodeMask; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Controller_t -{ - public uint button; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Mouse_t -{ - public float x; - public float y; - public uint button; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Scroll_t -{ - public float xdelta; - public float ydelta; - public uint unused; - public float viewportscale; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_TouchPadMove_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool bFingerDown; - public float flSecondsFingerDown; - public float fValueXFirst; - public float fValueYFirst; - public float fValueXRaw; - public float fValueYRaw; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Notification_t -{ - public ulong ulUserValue; - public uint notificationId; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Process_t -{ - public uint pid; - public uint oldPid; - [MarshalAs(UnmanagedType.I1)] - public bool bForced; - [MarshalAs(UnmanagedType.I1)] - public bool bConnectionLost; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Overlay_t -{ - public ulong overlayHandle; - public ulong devicePath; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Status_t -{ - public uint statusState; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Keyboard_t -{ - public byte cNewInput0,cNewInput1,cNewInput2,cNewInput3,cNewInput4,cNewInput5,cNewInput6,cNewInput7; - public string cNewInput - { - get - { - return new string(new char[] { - (char)cNewInput0, - (char)cNewInput1, - (char)cNewInput2, - (char)cNewInput3, - (char)cNewInput4, - (char)cNewInput5, - (char)cNewInput6, - (char)cNewInput7 - }).TrimEnd('\0'); - } - } - public ulong uUserValue; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Ipd_t -{ - public float ipdMeters; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Chaperone_t -{ - public ulong m_nPreviousUniverse; - public ulong m_nCurrentUniverse; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Reserved_t -{ - public ulong reserved0; - public ulong reserved1; - public ulong reserved2; - public ulong reserved3; - public ulong reserved4; - public ulong reserved5; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_PerformanceTest_t -{ - public uint m_nFidelityLevel; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_SeatedZeroPoseReset_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool bResetBySystemMenu; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Screenshot_t -{ - public uint handle; - public uint type; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_ScreenshotProgress_t -{ - public float progress; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_ApplicationLaunch_t -{ - public uint pid; - public uint unArgsHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_EditingCameraSurface_t -{ - public ulong overlayHandle; - public uint nVisualMode; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_MessageOverlay_t -{ - public uint unVRMessageOverlayResponse; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_Property_t -{ - public ulong container; - public ETrackedDeviceProperty prop; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_HapticVibration_t -{ - public ulong containerHandle; - public ulong componentHandle; - public float fDurationSeconds; - public float fFrequency; - public float fAmplitude; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_WebConsole_t -{ - public ulong webConsoleHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_InputBindingLoad_t -{ - public ulong ulAppContainer; - public ulong pathMessage; - public ulong pathUrl; - public ulong pathControllerType; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_InputActionManifestLoad_t -{ - public ulong pathAppKey; - public ulong pathMessage; - public ulong pathMessageParam; - public ulong pathManifestPath; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_SpatialAnchor_t -{ - public uint unHandle; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_ProgressUpdate_t -{ - public ulong ulApplicationPropertyContainer; - public ulong pathDevice; - public ulong pathInputSource; - public ulong pathProgressAction; - public ulong pathIcon; - public float fProgress; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_ShowUI_t -{ - public EShowUIType eType; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_ShowDevTools_t -{ - public int nBrowserIdentifier; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_HDCPError_t -{ - public EHDCPError eCode; -} -[StructLayout(LayoutKind.Sequential)] public struct VREvent_t -{ - public uint eventType; - public uint trackedDeviceIndex; - public float eventAgeSeconds; - public VREvent_Data_t data; -} -// This structure is for backwards binary compatibility on Linux and OSX only -[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct VREvent_t_Packed -{ - public uint eventType; - public uint trackedDeviceIndex; - public float eventAgeSeconds; - public VREvent_Data_t data; - public VREvent_t_Packed(VREvent_t unpacked) - { - this.eventType = unpacked.eventType; - this.trackedDeviceIndex = unpacked.trackedDeviceIndex; - this.eventAgeSeconds = unpacked.eventAgeSeconds; - this.data = unpacked.data; - } - public void Unpack(ref VREvent_t unpacked) - { - unpacked.eventType = this.eventType; - unpacked.trackedDeviceIndex = this.trackedDeviceIndex; - unpacked.eventAgeSeconds = this.eventAgeSeconds; - unpacked.data = this.data; - } -} -[StructLayout(LayoutKind.Sequential)] public struct RenderModel_ComponentState_t -{ - public HmdMatrix34_t mTrackingToComponentRenderModel; - public HmdMatrix34_t mTrackingToComponentLocal; - public uint uProperties; -} -[StructLayout(LayoutKind.Sequential)] public struct HiddenAreaMesh_t -{ - public IntPtr pVertexData; // const struct vr::HmdVector2_t * - public uint unTriangleCount; -} -[StructLayout(LayoutKind.Sequential)] public struct VRControllerAxis_t -{ - public float x; - public float y; -} -[StructLayout(LayoutKind.Sequential)] public struct VRControllerState_t -{ - public uint unPacketNum; - public ulong ulButtonPressed; - public ulong ulButtonTouched; - public VRControllerAxis_t rAxis0; //VRControllerAxis_t[5] - public VRControllerAxis_t rAxis1; - public VRControllerAxis_t rAxis2; - public VRControllerAxis_t rAxis3; - public VRControllerAxis_t rAxis4; -} -// This structure is for backwards binary compatibility on Linux and OSX only -[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct VRControllerState_t_Packed -{ - public uint unPacketNum; - public ulong ulButtonPressed; - public ulong ulButtonTouched; - public VRControllerAxis_t rAxis0; //VRControllerAxis_t[5] - public VRControllerAxis_t rAxis1; - public VRControllerAxis_t rAxis2; - public VRControllerAxis_t rAxis3; - public VRControllerAxis_t rAxis4; - public VRControllerState_t_Packed(VRControllerState_t unpacked) - { - this.unPacketNum = unpacked.unPacketNum; - this.ulButtonPressed = unpacked.ulButtonPressed; - this.ulButtonTouched = unpacked.ulButtonTouched; - this.rAxis0 = unpacked.rAxis0; - this.rAxis1 = unpacked.rAxis1; - this.rAxis2 = unpacked.rAxis2; - this.rAxis3 = unpacked.rAxis3; - this.rAxis4 = unpacked.rAxis4; - } - public void Unpack(ref VRControllerState_t unpacked) - { - unpacked.unPacketNum = this.unPacketNum; - unpacked.ulButtonPressed = this.ulButtonPressed; - unpacked.ulButtonTouched = this.ulButtonTouched; - unpacked.rAxis0 = this.rAxis0; - unpacked.rAxis1 = this.rAxis1; - unpacked.rAxis2 = this.rAxis2; - unpacked.rAxis3 = this.rAxis3; - unpacked.rAxis4 = this.rAxis4; - } -} -[StructLayout(LayoutKind.Sequential)] public struct VRBoneTransform_t -{ - public HmdVector4_t position; - public HmdQuaternionf_t orientation; -} -[StructLayout(LayoutKind.Sequential)] public struct CameraVideoStreamFrameHeader_t -{ - public EVRTrackedCameraFrameType eFrameType; - public uint nWidth; - public uint nHeight; - public uint nBytesPerPixel; - public uint nFrameSequence; - public TrackedDevicePose_t trackedDevicePose; - public ulong ulFrameExposureTime; -} -[StructLayout(LayoutKind.Sequential)] public struct Compositor_FrameTiming -{ - public uint m_nSize; - public uint m_nFrameIndex; - public uint m_nNumFramePresents; - public uint m_nNumMisPresented; - public uint m_nNumDroppedFrames; - public uint m_nReprojectionFlags; - public double m_flSystemTimeInSeconds; - public float m_flPreSubmitGpuMs; - public float m_flPostSubmitGpuMs; - public float m_flTotalRenderGpuMs; - public float m_flCompositorRenderGpuMs; - public float m_flCompositorRenderCpuMs; - public float m_flCompositorIdleCpuMs; - public float m_flClientFrameIntervalMs; - public float m_flPresentCallCpuMs; - public float m_flWaitForPresentCpuMs; - public float m_flSubmitFrameMs; - public float m_flWaitGetPosesCalledMs; - public float m_flNewPosesReadyMs; - public float m_flNewFrameReadyMs; - public float m_flCompositorUpdateStartMs; - public float m_flCompositorUpdateEndMs; - public float m_flCompositorRenderStartMs; - public TrackedDevicePose_t m_HmdPose; - public uint m_nNumVSyncsReadyForUse; - public uint m_nNumVSyncsToFirstView; -} -[StructLayout(LayoutKind.Sequential)] public struct Compositor_BenchmarkResults -{ - public float m_flMegaPixelsPerSecond; - public float m_flHmdRecommendedMegaPixelsPerSecond; -} -[StructLayout(LayoutKind.Sequential)] public struct DriverDirectMode_FrameTiming -{ - public uint m_nSize; - public uint m_nNumFramePresents; - public uint m_nNumMisPresented; - public uint m_nNumDroppedFrames; - public uint m_nReprojectionFlags; -} -[StructLayout(LayoutKind.Sequential)] public struct ImuSample_t -{ - public double fSampleTime; - public HmdVector3d_t vAccel; - public HmdVector3d_t vGyro; - public uint unOffScaleFlags; -} -[StructLayout(LayoutKind.Sequential)] public struct AppOverrideKeys_t -{ - public IntPtr pchKey; // const char * - public IntPtr pchValue; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct Compositor_CumulativeStats -{ - public uint m_nPid; - public uint m_nNumFramePresents; - public uint m_nNumDroppedFrames; - public uint m_nNumReprojectedFrames; - public uint m_nNumFramePresentsOnStartup; - public uint m_nNumDroppedFramesOnStartup; - public uint m_nNumReprojectedFramesOnStartup; - public uint m_nNumLoading; - public uint m_nNumFramePresentsLoading; - public uint m_nNumDroppedFramesLoading; - public uint m_nNumReprojectedFramesLoading; - public uint m_nNumTimedOut; - public uint m_nNumFramePresentsTimedOut; - public uint m_nNumDroppedFramesTimedOut; - public uint m_nNumReprojectedFramesTimedOut; -} -[StructLayout(LayoutKind.Sequential)] public struct Compositor_StageRenderSettings -{ - public HmdColor_t m_PrimaryColor; - public HmdColor_t m_SecondaryColor; - public float m_flVignetteInnerRadius; - public float m_flVignetteOuterRadius; - public float m_flFresnelStrength; - [MarshalAs(UnmanagedType.I1)] - public bool m_bBackfaceCulling; - [MarshalAs(UnmanagedType.I1)] - public bool m_bGreyscale; - [MarshalAs(UnmanagedType.I1)] - public bool m_bWireframe; -} -[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionParams_t -{ - public HmdVector3_t vSource; - public HmdVector3_t vDirection; - public ETrackingUniverseOrigin eOrigin; -} -[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionResults_t -{ - public HmdVector3_t vPoint; - public HmdVector3_t vNormal; - public HmdVector2_t vUVs; - public float fDistance; -} -[StructLayout(LayoutKind.Sequential)] public struct IntersectionMaskRectangle_t -{ - public float m_flTopLeftX; - public float m_flTopLeftY; - public float m_flWidth; - public float m_flHeight; -} -[StructLayout(LayoutKind.Sequential)] public struct IntersectionMaskCircle_t -{ - public float m_flCenterX; - public float m_flCenterY; - public float m_flRadius; -} -[StructLayout(LayoutKind.Sequential)] public struct VROverlayIntersectionMaskPrimitive_t -{ - public EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType; - public VROverlayIntersectionMaskPrimitive_Data_t m_Primitive; -} -[StructLayout(LayoutKind.Sequential)] public struct VROverlayView_t -{ - public ulong overlayHandle; - public Texture_t texture; - public VRTextureBounds_t textureBounds; -} -[StructLayout(LayoutKind.Sequential)] public struct VRVulkanDevice_t -{ - public IntPtr m_pInstance; // struct VkInstance_T * - public IntPtr m_pDevice; // struct VkDevice_T * - public IntPtr m_pPhysicalDevice; // struct VkPhysicalDevice_T * - public IntPtr m_pQueue; // struct VkQueue_T * - public uint m_uQueueFamilyIndex; -} -[StructLayout(LayoutKind.Sequential)] public struct VRNativeDevice_t -{ - public IntPtr handle; // void * - public EDeviceType eType; -} -[StructLayout(LayoutKind.Sequential)] public struct RenderModel_Vertex_t -{ - public HmdVector3_t vPosition; - public HmdVector3_t vNormal; - public float rfTextureCoord0; //float[2] - public float rfTextureCoord1; -} -[StructLayout(LayoutKind.Sequential)] public struct RenderModel_TextureMap_t -{ - public ushort unWidth; - public ushort unHeight; - public IntPtr rubTextureMapData; // const uint8_t * - public EVRRenderModelTextureFormat format; -} -// This structure is for backwards binary compatibility on Linux and OSX only -[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct RenderModel_TextureMap_t_Packed -{ - public ushort unWidth; - public ushort unHeight; - public IntPtr rubTextureMapData; // const uint8_t * - public EVRRenderModelTextureFormat format; - public RenderModel_TextureMap_t_Packed(RenderModel_TextureMap_t unpacked) - { - this.unWidth = unpacked.unWidth; - this.unHeight = unpacked.unHeight; - this.rubTextureMapData = unpacked.rubTextureMapData; - this.format = unpacked.format; - } - public void Unpack(ref RenderModel_TextureMap_t unpacked) - { - unpacked.unWidth = this.unWidth; - unpacked.unHeight = this.unHeight; - unpacked.rubTextureMapData = this.rubTextureMapData; - unpacked.format = this.format; - } -} -[StructLayout(LayoutKind.Sequential)] public struct RenderModel_t -{ - public IntPtr rVertexData; // const struct vr::RenderModel_Vertex_t * - public uint unVertexCount; - public IntPtr rIndexData; // const uint16_t * - public uint unTriangleCount; - public int diffuseTextureId; -} -// This structure is for backwards binary compatibility on Linux and OSX only -[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct RenderModel_t_Packed -{ - public IntPtr rVertexData; // const struct vr::RenderModel_Vertex_t * - public uint unVertexCount; - public IntPtr rIndexData; // const uint16_t * - public uint unTriangleCount; - public int diffuseTextureId; - public RenderModel_t_Packed(RenderModel_t unpacked) - { - this.rVertexData = unpacked.rVertexData; - this.unVertexCount = unpacked.unVertexCount; - this.rIndexData = unpacked.rIndexData; - this.unTriangleCount = unpacked.unTriangleCount; - this.diffuseTextureId = unpacked.diffuseTextureId; - } - public void Unpack(ref RenderModel_t unpacked) - { - unpacked.rVertexData = this.rVertexData; - unpacked.unVertexCount = this.unVertexCount; - unpacked.rIndexData = this.rIndexData; - unpacked.unTriangleCount = this.unTriangleCount; - unpacked.diffuseTextureId = this.diffuseTextureId; - } -} -[StructLayout(LayoutKind.Sequential)] public struct RenderModel_ControllerMode_State_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool bScrollWheelVisible; -} -[StructLayout(LayoutKind.Sequential)] public struct NotificationBitmap_t -{ - public IntPtr m_pImageData; // void * - public int m_nWidth; - public int m_nHeight; - public int m_nBytesPerPixel; -} -[StructLayout(LayoutKind.Sequential)] public struct CVRSettingHelper -{ - public IntPtr m_pSettings; // class vr::IVRSettings * -} -[StructLayout(LayoutKind.Sequential)] public struct InputAnalogActionData_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool bActive; - public ulong activeOrigin; - public float x; - public float y; - public float z; - public float deltaX; - public float deltaY; - public float deltaZ; - public float fUpdateTime; -} -[StructLayout(LayoutKind.Sequential)] public struct InputDigitalActionData_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool bActive; - public ulong activeOrigin; - [MarshalAs(UnmanagedType.I1)] - public bool bState; - [MarshalAs(UnmanagedType.I1)] - public bool bChanged; - public float fUpdateTime; -} -[StructLayout(LayoutKind.Sequential)] public struct InputPoseActionData_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool bActive; - public ulong activeOrigin; - public TrackedDevicePose_t pose; -} -[StructLayout(LayoutKind.Sequential)] public struct InputSkeletalActionData_t -{ - [MarshalAs(UnmanagedType.I1)] - public bool bActive; - public ulong activeOrigin; -} -[StructLayout(LayoutKind.Sequential)] public struct InputOriginInfo_t -{ - public ulong devicePath; - public uint trackedDeviceIndex; - public byte rchRenderModelComponentName0,rchRenderModelComponentName1,rchRenderModelComponentName2,rchRenderModelComponentName3,rchRenderModelComponentName4,rchRenderModelComponentName5,rchRenderModelComponentName6,rchRenderModelComponentName7,rchRenderModelComponentName8,rchRenderModelComponentName9,rchRenderModelComponentName10,rchRenderModelComponentName11,rchRenderModelComponentName12,rchRenderModelComponentName13,rchRenderModelComponentName14,rchRenderModelComponentName15,rchRenderModelComponentName16,rchRenderModelComponentName17,rchRenderModelComponentName18,rchRenderModelComponentName19,rchRenderModelComponentName20,rchRenderModelComponentName21,rchRenderModelComponentName22,rchRenderModelComponentName23,rchRenderModelComponentName24,rchRenderModelComponentName25,rchRenderModelComponentName26,rchRenderModelComponentName27,rchRenderModelComponentName28,rchRenderModelComponentName29,rchRenderModelComponentName30,rchRenderModelComponentName31,rchRenderModelComponentName32,rchRenderModelComponentName33,rchRenderModelComponentName34,rchRenderModelComponentName35,rchRenderModelComponentName36,rchRenderModelComponentName37,rchRenderModelComponentName38,rchRenderModelComponentName39,rchRenderModelComponentName40,rchRenderModelComponentName41,rchRenderModelComponentName42,rchRenderModelComponentName43,rchRenderModelComponentName44,rchRenderModelComponentName45,rchRenderModelComponentName46,rchRenderModelComponentName47,rchRenderModelComponentName48,rchRenderModelComponentName49,rchRenderModelComponentName50,rchRenderModelComponentName51,rchRenderModelComponentName52,rchRenderModelComponentName53,rchRenderModelComponentName54,rchRenderModelComponentName55,rchRenderModelComponentName56,rchRenderModelComponentName57,rchRenderModelComponentName58,rchRenderModelComponentName59,rchRenderModelComponentName60,rchRenderModelComponentName61,rchRenderModelComponentName62,rchRenderModelComponentName63,rchRenderModelComponentName64,rchRenderModelComponentName65,rchRenderModelComponentName66,rchRenderModelComponentName67,rchRenderModelComponentName68,rchRenderModelComponentName69,rchRenderModelComponentName70,rchRenderModelComponentName71,rchRenderModelComponentName72,rchRenderModelComponentName73,rchRenderModelComponentName74,rchRenderModelComponentName75,rchRenderModelComponentName76,rchRenderModelComponentName77,rchRenderModelComponentName78,rchRenderModelComponentName79,rchRenderModelComponentName80,rchRenderModelComponentName81,rchRenderModelComponentName82,rchRenderModelComponentName83,rchRenderModelComponentName84,rchRenderModelComponentName85,rchRenderModelComponentName86,rchRenderModelComponentName87,rchRenderModelComponentName88,rchRenderModelComponentName89,rchRenderModelComponentName90,rchRenderModelComponentName91,rchRenderModelComponentName92,rchRenderModelComponentName93,rchRenderModelComponentName94,rchRenderModelComponentName95,rchRenderModelComponentName96,rchRenderModelComponentName97,rchRenderModelComponentName98,rchRenderModelComponentName99,rchRenderModelComponentName100,rchRenderModelComponentName101,rchRenderModelComponentName102,rchRenderModelComponentName103,rchRenderModelComponentName104,rchRenderModelComponentName105,rchRenderModelComponentName106,rchRenderModelComponentName107,rchRenderModelComponentName108,rchRenderModelComponentName109,rchRenderModelComponentName110,rchRenderModelComponentName111,rchRenderModelComponentName112,rchRenderModelComponentName113,rchRenderModelComponentName114,rchRenderModelComponentName115,rchRenderModelComponentName116,rchRenderModelComponentName117,rchRenderModelComponentName118,rchRenderModelComponentName119,rchRenderModelComponentName120,rchRenderModelComponentName121,rchRenderModelComponentName122,rchRenderModelComponentName123,rchRenderModelComponentName124,rchRenderModelComponentName125,rchRenderModelComponentName126,rchRenderModelComponentName127; - public string rchRenderModelComponentName - { - get - { - return new string(new char[] { - (char)rchRenderModelComponentName0, - (char)rchRenderModelComponentName1, - (char)rchRenderModelComponentName2, - (char)rchRenderModelComponentName3, - (char)rchRenderModelComponentName4, - (char)rchRenderModelComponentName5, - (char)rchRenderModelComponentName6, - (char)rchRenderModelComponentName7, - (char)rchRenderModelComponentName8, - (char)rchRenderModelComponentName9, - (char)rchRenderModelComponentName10, - (char)rchRenderModelComponentName11, - (char)rchRenderModelComponentName12, - (char)rchRenderModelComponentName13, - (char)rchRenderModelComponentName14, - (char)rchRenderModelComponentName15, - (char)rchRenderModelComponentName16, - (char)rchRenderModelComponentName17, - (char)rchRenderModelComponentName18, - (char)rchRenderModelComponentName19, - (char)rchRenderModelComponentName20, - (char)rchRenderModelComponentName21, - (char)rchRenderModelComponentName22, - (char)rchRenderModelComponentName23, - (char)rchRenderModelComponentName24, - (char)rchRenderModelComponentName25, - (char)rchRenderModelComponentName26, - (char)rchRenderModelComponentName27, - (char)rchRenderModelComponentName28, - (char)rchRenderModelComponentName29, - (char)rchRenderModelComponentName30, - (char)rchRenderModelComponentName31, - (char)rchRenderModelComponentName32, - (char)rchRenderModelComponentName33, - (char)rchRenderModelComponentName34, - (char)rchRenderModelComponentName35, - (char)rchRenderModelComponentName36, - (char)rchRenderModelComponentName37, - (char)rchRenderModelComponentName38, - (char)rchRenderModelComponentName39, - (char)rchRenderModelComponentName40, - (char)rchRenderModelComponentName41, - (char)rchRenderModelComponentName42, - (char)rchRenderModelComponentName43, - (char)rchRenderModelComponentName44, - (char)rchRenderModelComponentName45, - (char)rchRenderModelComponentName46, - (char)rchRenderModelComponentName47, - (char)rchRenderModelComponentName48, - (char)rchRenderModelComponentName49, - (char)rchRenderModelComponentName50, - (char)rchRenderModelComponentName51, - (char)rchRenderModelComponentName52, - (char)rchRenderModelComponentName53, - (char)rchRenderModelComponentName54, - (char)rchRenderModelComponentName55, - (char)rchRenderModelComponentName56, - (char)rchRenderModelComponentName57, - (char)rchRenderModelComponentName58, - (char)rchRenderModelComponentName59, - (char)rchRenderModelComponentName60, - (char)rchRenderModelComponentName61, - (char)rchRenderModelComponentName62, - (char)rchRenderModelComponentName63, - (char)rchRenderModelComponentName64, - (char)rchRenderModelComponentName65, - (char)rchRenderModelComponentName66, - (char)rchRenderModelComponentName67, - (char)rchRenderModelComponentName68, - (char)rchRenderModelComponentName69, - (char)rchRenderModelComponentName70, - (char)rchRenderModelComponentName71, - (char)rchRenderModelComponentName72, - (char)rchRenderModelComponentName73, - (char)rchRenderModelComponentName74, - (char)rchRenderModelComponentName75, - (char)rchRenderModelComponentName76, - (char)rchRenderModelComponentName77, - (char)rchRenderModelComponentName78, - (char)rchRenderModelComponentName79, - (char)rchRenderModelComponentName80, - (char)rchRenderModelComponentName81, - (char)rchRenderModelComponentName82, - (char)rchRenderModelComponentName83, - (char)rchRenderModelComponentName84, - (char)rchRenderModelComponentName85, - (char)rchRenderModelComponentName86, - (char)rchRenderModelComponentName87, - (char)rchRenderModelComponentName88, - (char)rchRenderModelComponentName89, - (char)rchRenderModelComponentName90, - (char)rchRenderModelComponentName91, - (char)rchRenderModelComponentName92, - (char)rchRenderModelComponentName93, - (char)rchRenderModelComponentName94, - (char)rchRenderModelComponentName95, - (char)rchRenderModelComponentName96, - (char)rchRenderModelComponentName97, - (char)rchRenderModelComponentName98, - (char)rchRenderModelComponentName99, - (char)rchRenderModelComponentName100, - (char)rchRenderModelComponentName101, - (char)rchRenderModelComponentName102, - (char)rchRenderModelComponentName103, - (char)rchRenderModelComponentName104, - (char)rchRenderModelComponentName105, - (char)rchRenderModelComponentName106, - (char)rchRenderModelComponentName107, - (char)rchRenderModelComponentName108, - (char)rchRenderModelComponentName109, - (char)rchRenderModelComponentName110, - (char)rchRenderModelComponentName111, - (char)rchRenderModelComponentName112, - (char)rchRenderModelComponentName113, - (char)rchRenderModelComponentName114, - (char)rchRenderModelComponentName115, - (char)rchRenderModelComponentName116, - (char)rchRenderModelComponentName117, - (char)rchRenderModelComponentName118, - (char)rchRenderModelComponentName119, - (char)rchRenderModelComponentName120, - (char)rchRenderModelComponentName121, - (char)rchRenderModelComponentName122, - (char)rchRenderModelComponentName123, - (char)rchRenderModelComponentName124, - (char)rchRenderModelComponentName125, - (char)rchRenderModelComponentName126, - (char)rchRenderModelComponentName127 - }).TrimEnd('\0'); - } - } -} -[StructLayout(LayoutKind.Sequential)] public struct InputBindingInfo_t -{ - public byte rchDevicePathName0,rchDevicePathName1,rchDevicePathName2,rchDevicePathName3,rchDevicePathName4,rchDevicePathName5,rchDevicePathName6,rchDevicePathName7,rchDevicePathName8,rchDevicePathName9,rchDevicePathName10,rchDevicePathName11,rchDevicePathName12,rchDevicePathName13,rchDevicePathName14,rchDevicePathName15,rchDevicePathName16,rchDevicePathName17,rchDevicePathName18,rchDevicePathName19,rchDevicePathName20,rchDevicePathName21,rchDevicePathName22,rchDevicePathName23,rchDevicePathName24,rchDevicePathName25,rchDevicePathName26,rchDevicePathName27,rchDevicePathName28,rchDevicePathName29,rchDevicePathName30,rchDevicePathName31,rchDevicePathName32,rchDevicePathName33,rchDevicePathName34,rchDevicePathName35,rchDevicePathName36,rchDevicePathName37,rchDevicePathName38,rchDevicePathName39,rchDevicePathName40,rchDevicePathName41,rchDevicePathName42,rchDevicePathName43,rchDevicePathName44,rchDevicePathName45,rchDevicePathName46,rchDevicePathName47,rchDevicePathName48,rchDevicePathName49,rchDevicePathName50,rchDevicePathName51,rchDevicePathName52,rchDevicePathName53,rchDevicePathName54,rchDevicePathName55,rchDevicePathName56,rchDevicePathName57,rchDevicePathName58,rchDevicePathName59,rchDevicePathName60,rchDevicePathName61,rchDevicePathName62,rchDevicePathName63,rchDevicePathName64,rchDevicePathName65,rchDevicePathName66,rchDevicePathName67,rchDevicePathName68,rchDevicePathName69,rchDevicePathName70,rchDevicePathName71,rchDevicePathName72,rchDevicePathName73,rchDevicePathName74,rchDevicePathName75,rchDevicePathName76,rchDevicePathName77,rchDevicePathName78,rchDevicePathName79,rchDevicePathName80,rchDevicePathName81,rchDevicePathName82,rchDevicePathName83,rchDevicePathName84,rchDevicePathName85,rchDevicePathName86,rchDevicePathName87,rchDevicePathName88,rchDevicePathName89,rchDevicePathName90,rchDevicePathName91,rchDevicePathName92,rchDevicePathName93,rchDevicePathName94,rchDevicePathName95,rchDevicePathName96,rchDevicePathName97,rchDevicePathName98,rchDevicePathName99,rchDevicePathName100,rchDevicePathName101,rchDevicePathName102,rchDevicePathName103,rchDevicePathName104,rchDevicePathName105,rchDevicePathName106,rchDevicePathName107,rchDevicePathName108,rchDevicePathName109,rchDevicePathName110,rchDevicePathName111,rchDevicePathName112,rchDevicePathName113,rchDevicePathName114,rchDevicePathName115,rchDevicePathName116,rchDevicePathName117,rchDevicePathName118,rchDevicePathName119,rchDevicePathName120,rchDevicePathName121,rchDevicePathName122,rchDevicePathName123,rchDevicePathName124,rchDevicePathName125,rchDevicePathName126,rchDevicePathName127; - public string rchDevicePathName - { - get - { - return new string(new char[] { - (char)rchDevicePathName0, - (char)rchDevicePathName1, - (char)rchDevicePathName2, - (char)rchDevicePathName3, - (char)rchDevicePathName4, - (char)rchDevicePathName5, - (char)rchDevicePathName6, - (char)rchDevicePathName7, - (char)rchDevicePathName8, - (char)rchDevicePathName9, - (char)rchDevicePathName10, - (char)rchDevicePathName11, - (char)rchDevicePathName12, - (char)rchDevicePathName13, - (char)rchDevicePathName14, - (char)rchDevicePathName15, - (char)rchDevicePathName16, - (char)rchDevicePathName17, - (char)rchDevicePathName18, - (char)rchDevicePathName19, - (char)rchDevicePathName20, - (char)rchDevicePathName21, - (char)rchDevicePathName22, - (char)rchDevicePathName23, - (char)rchDevicePathName24, - (char)rchDevicePathName25, - (char)rchDevicePathName26, - (char)rchDevicePathName27, - (char)rchDevicePathName28, - (char)rchDevicePathName29, - (char)rchDevicePathName30, - (char)rchDevicePathName31, - (char)rchDevicePathName32, - (char)rchDevicePathName33, - (char)rchDevicePathName34, - (char)rchDevicePathName35, - (char)rchDevicePathName36, - (char)rchDevicePathName37, - (char)rchDevicePathName38, - (char)rchDevicePathName39, - (char)rchDevicePathName40, - (char)rchDevicePathName41, - (char)rchDevicePathName42, - (char)rchDevicePathName43, - (char)rchDevicePathName44, - (char)rchDevicePathName45, - (char)rchDevicePathName46, - (char)rchDevicePathName47, - (char)rchDevicePathName48, - (char)rchDevicePathName49, - (char)rchDevicePathName50, - (char)rchDevicePathName51, - (char)rchDevicePathName52, - (char)rchDevicePathName53, - (char)rchDevicePathName54, - (char)rchDevicePathName55, - (char)rchDevicePathName56, - (char)rchDevicePathName57, - (char)rchDevicePathName58, - (char)rchDevicePathName59, - (char)rchDevicePathName60, - (char)rchDevicePathName61, - (char)rchDevicePathName62, - (char)rchDevicePathName63, - (char)rchDevicePathName64, - (char)rchDevicePathName65, - (char)rchDevicePathName66, - (char)rchDevicePathName67, - (char)rchDevicePathName68, - (char)rchDevicePathName69, - (char)rchDevicePathName70, - (char)rchDevicePathName71, - (char)rchDevicePathName72, - (char)rchDevicePathName73, - (char)rchDevicePathName74, - (char)rchDevicePathName75, - (char)rchDevicePathName76, - (char)rchDevicePathName77, - (char)rchDevicePathName78, - (char)rchDevicePathName79, - (char)rchDevicePathName80, - (char)rchDevicePathName81, - (char)rchDevicePathName82, - (char)rchDevicePathName83, - (char)rchDevicePathName84, - (char)rchDevicePathName85, - (char)rchDevicePathName86, - (char)rchDevicePathName87, - (char)rchDevicePathName88, - (char)rchDevicePathName89, - (char)rchDevicePathName90, - (char)rchDevicePathName91, - (char)rchDevicePathName92, - (char)rchDevicePathName93, - (char)rchDevicePathName94, - (char)rchDevicePathName95, - (char)rchDevicePathName96, - (char)rchDevicePathName97, - (char)rchDevicePathName98, - (char)rchDevicePathName99, - (char)rchDevicePathName100, - (char)rchDevicePathName101, - (char)rchDevicePathName102, - (char)rchDevicePathName103, - (char)rchDevicePathName104, - (char)rchDevicePathName105, - (char)rchDevicePathName106, - (char)rchDevicePathName107, - (char)rchDevicePathName108, - (char)rchDevicePathName109, - (char)rchDevicePathName110, - (char)rchDevicePathName111, - (char)rchDevicePathName112, - (char)rchDevicePathName113, - (char)rchDevicePathName114, - (char)rchDevicePathName115, - (char)rchDevicePathName116, - (char)rchDevicePathName117, - (char)rchDevicePathName118, - (char)rchDevicePathName119, - (char)rchDevicePathName120, - (char)rchDevicePathName121, - (char)rchDevicePathName122, - (char)rchDevicePathName123, - (char)rchDevicePathName124, - (char)rchDevicePathName125, - (char)rchDevicePathName126, - (char)rchDevicePathName127 - }).TrimEnd('\0'); - } - } - public byte rchInputPathName0,rchInputPathName1,rchInputPathName2,rchInputPathName3,rchInputPathName4,rchInputPathName5,rchInputPathName6,rchInputPathName7,rchInputPathName8,rchInputPathName9,rchInputPathName10,rchInputPathName11,rchInputPathName12,rchInputPathName13,rchInputPathName14,rchInputPathName15,rchInputPathName16,rchInputPathName17,rchInputPathName18,rchInputPathName19,rchInputPathName20,rchInputPathName21,rchInputPathName22,rchInputPathName23,rchInputPathName24,rchInputPathName25,rchInputPathName26,rchInputPathName27,rchInputPathName28,rchInputPathName29,rchInputPathName30,rchInputPathName31,rchInputPathName32,rchInputPathName33,rchInputPathName34,rchInputPathName35,rchInputPathName36,rchInputPathName37,rchInputPathName38,rchInputPathName39,rchInputPathName40,rchInputPathName41,rchInputPathName42,rchInputPathName43,rchInputPathName44,rchInputPathName45,rchInputPathName46,rchInputPathName47,rchInputPathName48,rchInputPathName49,rchInputPathName50,rchInputPathName51,rchInputPathName52,rchInputPathName53,rchInputPathName54,rchInputPathName55,rchInputPathName56,rchInputPathName57,rchInputPathName58,rchInputPathName59,rchInputPathName60,rchInputPathName61,rchInputPathName62,rchInputPathName63,rchInputPathName64,rchInputPathName65,rchInputPathName66,rchInputPathName67,rchInputPathName68,rchInputPathName69,rchInputPathName70,rchInputPathName71,rchInputPathName72,rchInputPathName73,rchInputPathName74,rchInputPathName75,rchInputPathName76,rchInputPathName77,rchInputPathName78,rchInputPathName79,rchInputPathName80,rchInputPathName81,rchInputPathName82,rchInputPathName83,rchInputPathName84,rchInputPathName85,rchInputPathName86,rchInputPathName87,rchInputPathName88,rchInputPathName89,rchInputPathName90,rchInputPathName91,rchInputPathName92,rchInputPathName93,rchInputPathName94,rchInputPathName95,rchInputPathName96,rchInputPathName97,rchInputPathName98,rchInputPathName99,rchInputPathName100,rchInputPathName101,rchInputPathName102,rchInputPathName103,rchInputPathName104,rchInputPathName105,rchInputPathName106,rchInputPathName107,rchInputPathName108,rchInputPathName109,rchInputPathName110,rchInputPathName111,rchInputPathName112,rchInputPathName113,rchInputPathName114,rchInputPathName115,rchInputPathName116,rchInputPathName117,rchInputPathName118,rchInputPathName119,rchInputPathName120,rchInputPathName121,rchInputPathName122,rchInputPathName123,rchInputPathName124,rchInputPathName125,rchInputPathName126,rchInputPathName127; - public string rchInputPathName - { - get - { - return new string(new char[] { - (char)rchInputPathName0, - (char)rchInputPathName1, - (char)rchInputPathName2, - (char)rchInputPathName3, - (char)rchInputPathName4, - (char)rchInputPathName5, - (char)rchInputPathName6, - (char)rchInputPathName7, - (char)rchInputPathName8, - (char)rchInputPathName9, - (char)rchInputPathName10, - (char)rchInputPathName11, - (char)rchInputPathName12, - (char)rchInputPathName13, - (char)rchInputPathName14, - (char)rchInputPathName15, - (char)rchInputPathName16, - (char)rchInputPathName17, - (char)rchInputPathName18, - (char)rchInputPathName19, - (char)rchInputPathName20, - (char)rchInputPathName21, - (char)rchInputPathName22, - (char)rchInputPathName23, - (char)rchInputPathName24, - (char)rchInputPathName25, - (char)rchInputPathName26, - (char)rchInputPathName27, - (char)rchInputPathName28, - (char)rchInputPathName29, - (char)rchInputPathName30, - (char)rchInputPathName31, - (char)rchInputPathName32, - (char)rchInputPathName33, - (char)rchInputPathName34, - (char)rchInputPathName35, - (char)rchInputPathName36, - (char)rchInputPathName37, - (char)rchInputPathName38, - (char)rchInputPathName39, - (char)rchInputPathName40, - (char)rchInputPathName41, - (char)rchInputPathName42, - (char)rchInputPathName43, - (char)rchInputPathName44, - (char)rchInputPathName45, - (char)rchInputPathName46, - (char)rchInputPathName47, - (char)rchInputPathName48, - (char)rchInputPathName49, - (char)rchInputPathName50, - (char)rchInputPathName51, - (char)rchInputPathName52, - (char)rchInputPathName53, - (char)rchInputPathName54, - (char)rchInputPathName55, - (char)rchInputPathName56, - (char)rchInputPathName57, - (char)rchInputPathName58, - (char)rchInputPathName59, - (char)rchInputPathName60, - (char)rchInputPathName61, - (char)rchInputPathName62, - (char)rchInputPathName63, - (char)rchInputPathName64, - (char)rchInputPathName65, - (char)rchInputPathName66, - (char)rchInputPathName67, - (char)rchInputPathName68, - (char)rchInputPathName69, - (char)rchInputPathName70, - (char)rchInputPathName71, - (char)rchInputPathName72, - (char)rchInputPathName73, - (char)rchInputPathName74, - (char)rchInputPathName75, - (char)rchInputPathName76, - (char)rchInputPathName77, - (char)rchInputPathName78, - (char)rchInputPathName79, - (char)rchInputPathName80, - (char)rchInputPathName81, - (char)rchInputPathName82, - (char)rchInputPathName83, - (char)rchInputPathName84, - (char)rchInputPathName85, - (char)rchInputPathName86, - (char)rchInputPathName87, - (char)rchInputPathName88, - (char)rchInputPathName89, - (char)rchInputPathName90, - (char)rchInputPathName91, - (char)rchInputPathName92, - (char)rchInputPathName93, - (char)rchInputPathName94, - (char)rchInputPathName95, - (char)rchInputPathName96, - (char)rchInputPathName97, - (char)rchInputPathName98, - (char)rchInputPathName99, - (char)rchInputPathName100, - (char)rchInputPathName101, - (char)rchInputPathName102, - (char)rchInputPathName103, - (char)rchInputPathName104, - (char)rchInputPathName105, - (char)rchInputPathName106, - (char)rchInputPathName107, - (char)rchInputPathName108, - (char)rchInputPathName109, - (char)rchInputPathName110, - (char)rchInputPathName111, - (char)rchInputPathName112, - (char)rchInputPathName113, - (char)rchInputPathName114, - (char)rchInputPathName115, - (char)rchInputPathName116, - (char)rchInputPathName117, - (char)rchInputPathName118, - (char)rchInputPathName119, - (char)rchInputPathName120, - (char)rchInputPathName121, - (char)rchInputPathName122, - (char)rchInputPathName123, - (char)rchInputPathName124, - (char)rchInputPathName125, - (char)rchInputPathName126, - (char)rchInputPathName127 - }).TrimEnd('\0'); - } - } - public byte rchModeName0,rchModeName1,rchModeName2,rchModeName3,rchModeName4,rchModeName5,rchModeName6,rchModeName7,rchModeName8,rchModeName9,rchModeName10,rchModeName11,rchModeName12,rchModeName13,rchModeName14,rchModeName15,rchModeName16,rchModeName17,rchModeName18,rchModeName19,rchModeName20,rchModeName21,rchModeName22,rchModeName23,rchModeName24,rchModeName25,rchModeName26,rchModeName27,rchModeName28,rchModeName29,rchModeName30,rchModeName31,rchModeName32,rchModeName33,rchModeName34,rchModeName35,rchModeName36,rchModeName37,rchModeName38,rchModeName39,rchModeName40,rchModeName41,rchModeName42,rchModeName43,rchModeName44,rchModeName45,rchModeName46,rchModeName47,rchModeName48,rchModeName49,rchModeName50,rchModeName51,rchModeName52,rchModeName53,rchModeName54,rchModeName55,rchModeName56,rchModeName57,rchModeName58,rchModeName59,rchModeName60,rchModeName61,rchModeName62,rchModeName63,rchModeName64,rchModeName65,rchModeName66,rchModeName67,rchModeName68,rchModeName69,rchModeName70,rchModeName71,rchModeName72,rchModeName73,rchModeName74,rchModeName75,rchModeName76,rchModeName77,rchModeName78,rchModeName79,rchModeName80,rchModeName81,rchModeName82,rchModeName83,rchModeName84,rchModeName85,rchModeName86,rchModeName87,rchModeName88,rchModeName89,rchModeName90,rchModeName91,rchModeName92,rchModeName93,rchModeName94,rchModeName95,rchModeName96,rchModeName97,rchModeName98,rchModeName99,rchModeName100,rchModeName101,rchModeName102,rchModeName103,rchModeName104,rchModeName105,rchModeName106,rchModeName107,rchModeName108,rchModeName109,rchModeName110,rchModeName111,rchModeName112,rchModeName113,rchModeName114,rchModeName115,rchModeName116,rchModeName117,rchModeName118,rchModeName119,rchModeName120,rchModeName121,rchModeName122,rchModeName123,rchModeName124,rchModeName125,rchModeName126,rchModeName127; - public string rchModeName - { - get - { - return new string(new char[] { - (char)rchModeName0, - (char)rchModeName1, - (char)rchModeName2, - (char)rchModeName3, - (char)rchModeName4, - (char)rchModeName5, - (char)rchModeName6, - (char)rchModeName7, - (char)rchModeName8, - (char)rchModeName9, - (char)rchModeName10, - (char)rchModeName11, - (char)rchModeName12, - (char)rchModeName13, - (char)rchModeName14, - (char)rchModeName15, - (char)rchModeName16, - (char)rchModeName17, - (char)rchModeName18, - (char)rchModeName19, - (char)rchModeName20, - (char)rchModeName21, - (char)rchModeName22, - (char)rchModeName23, - (char)rchModeName24, - (char)rchModeName25, - (char)rchModeName26, - (char)rchModeName27, - (char)rchModeName28, - (char)rchModeName29, - (char)rchModeName30, - (char)rchModeName31, - (char)rchModeName32, - (char)rchModeName33, - (char)rchModeName34, - (char)rchModeName35, - (char)rchModeName36, - (char)rchModeName37, - (char)rchModeName38, - (char)rchModeName39, - (char)rchModeName40, - (char)rchModeName41, - (char)rchModeName42, - (char)rchModeName43, - (char)rchModeName44, - (char)rchModeName45, - (char)rchModeName46, - (char)rchModeName47, - (char)rchModeName48, - (char)rchModeName49, - (char)rchModeName50, - (char)rchModeName51, - (char)rchModeName52, - (char)rchModeName53, - (char)rchModeName54, - (char)rchModeName55, - (char)rchModeName56, - (char)rchModeName57, - (char)rchModeName58, - (char)rchModeName59, - (char)rchModeName60, - (char)rchModeName61, - (char)rchModeName62, - (char)rchModeName63, - (char)rchModeName64, - (char)rchModeName65, - (char)rchModeName66, - (char)rchModeName67, - (char)rchModeName68, - (char)rchModeName69, - (char)rchModeName70, - (char)rchModeName71, - (char)rchModeName72, - (char)rchModeName73, - (char)rchModeName74, - (char)rchModeName75, - (char)rchModeName76, - (char)rchModeName77, - (char)rchModeName78, - (char)rchModeName79, - (char)rchModeName80, - (char)rchModeName81, - (char)rchModeName82, - (char)rchModeName83, - (char)rchModeName84, - (char)rchModeName85, - (char)rchModeName86, - (char)rchModeName87, - (char)rchModeName88, - (char)rchModeName89, - (char)rchModeName90, - (char)rchModeName91, - (char)rchModeName92, - (char)rchModeName93, - (char)rchModeName94, - (char)rchModeName95, - (char)rchModeName96, - (char)rchModeName97, - (char)rchModeName98, - (char)rchModeName99, - (char)rchModeName100, - (char)rchModeName101, - (char)rchModeName102, - (char)rchModeName103, - (char)rchModeName104, - (char)rchModeName105, - (char)rchModeName106, - (char)rchModeName107, - (char)rchModeName108, - (char)rchModeName109, - (char)rchModeName110, - (char)rchModeName111, - (char)rchModeName112, - (char)rchModeName113, - (char)rchModeName114, - (char)rchModeName115, - (char)rchModeName116, - (char)rchModeName117, - (char)rchModeName118, - (char)rchModeName119, - (char)rchModeName120, - (char)rchModeName121, - (char)rchModeName122, - (char)rchModeName123, - (char)rchModeName124, - (char)rchModeName125, - (char)rchModeName126, - (char)rchModeName127 - }).TrimEnd('\0'); - } - } - public byte rchSlotName0,rchSlotName1,rchSlotName2,rchSlotName3,rchSlotName4,rchSlotName5,rchSlotName6,rchSlotName7,rchSlotName8,rchSlotName9,rchSlotName10,rchSlotName11,rchSlotName12,rchSlotName13,rchSlotName14,rchSlotName15,rchSlotName16,rchSlotName17,rchSlotName18,rchSlotName19,rchSlotName20,rchSlotName21,rchSlotName22,rchSlotName23,rchSlotName24,rchSlotName25,rchSlotName26,rchSlotName27,rchSlotName28,rchSlotName29,rchSlotName30,rchSlotName31,rchSlotName32,rchSlotName33,rchSlotName34,rchSlotName35,rchSlotName36,rchSlotName37,rchSlotName38,rchSlotName39,rchSlotName40,rchSlotName41,rchSlotName42,rchSlotName43,rchSlotName44,rchSlotName45,rchSlotName46,rchSlotName47,rchSlotName48,rchSlotName49,rchSlotName50,rchSlotName51,rchSlotName52,rchSlotName53,rchSlotName54,rchSlotName55,rchSlotName56,rchSlotName57,rchSlotName58,rchSlotName59,rchSlotName60,rchSlotName61,rchSlotName62,rchSlotName63,rchSlotName64,rchSlotName65,rchSlotName66,rchSlotName67,rchSlotName68,rchSlotName69,rchSlotName70,rchSlotName71,rchSlotName72,rchSlotName73,rchSlotName74,rchSlotName75,rchSlotName76,rchSlotName77,rchSlotName78,rchSlotName79,rchSlotName80,rchSlotName81,rchSlotName82,rchSlotName83,rchSlotName84,rchSlotName85,rchSlotName86,rchSlotName87,rchSlotName88,rchSlotName89,rchSlotName90,rchSlotName91,rchSlotName92,rchSlotName93,rchSlotName94,rchSlotName95,rchSlotName96,rchSlotName97,rchSlotName98,rchSlotName99,rchSlotName100,rchSlotName101,rchSlotName102,rchSlotName103,rchSlotName104,rchSlotName105,rchSlotName106,rchSlotName107,rchSlotName108,rchSlotName109,rchSlotName110,rchSlotName111,rchSlotName112,rchSlotName113,rchSlotName114,rchSlotName115,rchSlotName116,rchSlotName117,rchSlotName118,rchSlotName119,rchSlotName120,rchSlotName121,rchSlotName122,rchSlotName123,rchSlotName124,rchSlotName125,rchSlotName126,rchSlotName127; - public string rchSlotName - { - get - { - return new string(new char[] { - (char)rchSlotName0, - (char)rchSlotName1, - (char)rchSlotName2, - (char)rchSlotName3, - (char)rchSlotName4, - (char)rchSlotName5, - (char)rchSlotName6, - (char)rchSlotName7, - (char)rchSlotName8, - (char)rchSlotName9, - (char)rchSlotName10, - (char)rchSlotName11, - (char)rchSlotName12, - (char)rchSlotName13, - (char)rchSlotName14, - (char)rchSlotName15, - (char)rchSlotName16, - (char)rchSlotName17, - (char)rchSlotName18, - (char)rchSlotName19, - (char)rchSlotName20, - (char)rchSlotName21, - (char)rchSlotName22, - (char)rchSlotName23, - (char)rchSlotName24, - (char)rchSlotName25, - (char)rchSlotName26, - (char)rchSlotName27, - (char)rchSlotName28, - (char)rchSlotName29, - (char)rchSlotName30, - (char)rchSlotName31, - (char)rchSlotName32, - (char)rchSlotName33, - (char)rchSlotName34, - (char)rchSlotName35, - (char)rchSlotName36, - (char)rchSlotName37, - (char)rchSlotName38, - (char)rchSlotName39, - (char)rchSlotName40, - (char)rchSlotName41, - (char)rchSlotName42, - (char)rchSlotName43, - (char)rchSlotName44, - (char)rchSlotName45, - (char)rchSlotName46, - (char)rchSlotName47, - (char)rchSlotName48, - (char)rchSlotName49, - (char)rchSlotName50, - (char)rchSlotName51, - (char)rchSlotName52, - (char)rchSlotName53, - (char)rchSlotName54, - (char)rchSlotName55, - (char)rchSlotName56, - (char)rchSlotName57, - (char)rchSlotName58, - (char)rchSlotName59, - (char)rchSlotName60, - (char)rchSlotName61, - (char)rchSlotName62, - (char)rchSlotName63, - (char)rchSlotName64, - (char)rchSlotName65, - (char)rchSlotName66, - (char)rchSlotName67, - (char)rchSlotName68, - (char)rchSlotName69, - (char)rchSlotName70, - (char)rchSlotName71, - (char)rchSlotName72, - (char)rchSlotName73, - (char)rchSlotName74, - (char)rchSlotName75, - (char)rchSlotName76, - (char)rchSlotName77, - (char)rchSlotName78, - (char)rchSlotName79, - (char)rchSlotName80, - (char)rchSlotName81, - (char)rchSlotName82, - (char)rchSlotName83, - (char)rchSlotName84, - (char)rchSlotName85, - (char)rchSlotName86, - (char)rchSlotName87, - (char)rchSlotName88, - (char)rchSlotName89, - (char)rchSlotName90, - (char)rchSlotName91, - (char)rchSlotName92, - (char)rchSlotName93, - (char)rchSlotName94, - (char)rchSlotName95, - (char)rchSlotName96, - (char)rchSlotName97, - (char)rchSlotName98, - (char)rchSlotName99, - (char)rchSlotName100, - (char)rchSlotName101, - (char)rchSlotName102, - (char)rchSlotName103, - (char)rchSlotName104, - (char)rchSlotName105, - (char)rchSlotName106, - (char)rchSlotName107, - (char)rchSlotName108, - (char)rchSlotName109, - (char)rchSlotName110, - (char)rchSlotName111, - (char)rchSlotName112, - (char)rchSlotName113, - (char)rchSlotName114, - (char)rchSlotName115, - (char)rchSlotName116, - (char)rchSlotName117, - (char)rchSlotName118, - (char)rchSlotName119, - (char)rchSlotName120, - (char)rchSlotName121, - (char)rchSlotName122, - (char)rchSlotName123, - (char)rchSlotName124, - (char)rchSlotName125, - (char)rchSlotName126, - (char)rchSlotName127 - }).TrimEnd('\0'); - } - } - public byte rchInputSourceType0,rchInputSourceType1,rchInputSourceType2,rchInputSourceType3,rchInputSourceType4,rchInputSourceType5,rchInputSourceType6,rchInputSourceType7,rchInputSourceType8,rchInputSourceType9,rchInputSourceType10,rchInputSourceType11,rchInputSourceType12,rchInputSourceType13,rchInputSourceType14,rchInputSourceType15,rchInputSourceType16,rchInputSourceType17,rchInputSourceType18,rchInputSourceType19,rchInputSourceType20,rchInputSourceType21,rchInputSourceType22,rchInputSourceType23,rchInputSourceType24,rchInputSourceType25,rchInputSourceType26,rchInputSourceType27,rchInputSourceType28,rchInputSourceType29,rchInputSourceType30,rchInputSourceType31; - public string rchInputSourceType - { - get - { - return new string(new char[] { - (char)rchInputSourceType0, - (char)rchInputSourceType1, - (char)rchInputSourceType2, - (char)rchInputSourceType3, - (char)rchInputSourceType4, - (char)rchInputSourceType5, - (char)rchInputSourceType6, - (char)rchInputSourceType7, - (char)rchInputSourceType8, - (char)rchInputSourceType9, - (char)rchInputSourceType10, - (char)rchInputSourceType11, - (char)rchInputSourceType12, - (char)rchInputSourceType13, - (char)rchInputSourceType14, - (char)rchInputSourceType15, - (char)rchInputSourceType16, - (char)rchInputSourceType17, - (char)rchInputSourceType18, - (char)rchInputSourceType19, - (char)rchInputSourceType20, - (char)rchInputSourceType21, - (char)rchInputSourceType22, - (char)rchInputSourceType23, - (char)rchInputSourceType24, - (char)rchInputSourceType25, - (char)rchInputSourceType26, - (char)rchInputSourceType27, - (char)rchInputSourceType28, - (char)rchInputSourceType29, - (char)rchInputSourceType30, - (char)rchInputSourceType31 - }).TrimEnd('\0'); - } - } -} -[StructLayout(LayoutKind.Sequential)] public struct VRActiveActionSet_t -{ - public ulong ulActionSet; - public ulong ulRestrictedToDevice; - public ulong ulSecondaryActionSet; - public uint unPadding; - public int nPriority; -} -[StructLayout(LayoutKind.Sequential)] public struct VRSkeletalSummaryData_t -{ - public float flFingerCurl0; //float[5] - public float flFingerCurl1; - public float flFingerCurl2; - public float flFingerCurl3; - public float flFingerCurl4; - public float flFingerSplay0; //float[4] - public float flFingerSplay1; - public float flFingerSplay2; - public float flFingerSplay3; -} -[StructLayout(LayoutKind.Sequential)] public struct SpatialAnchorPose_t -{ - public HmdMatrix34_t mAnchorToAbsoluteTracking; -} -[StructLayout(LayoutKind.Sequential)] public struct COpenVRContext -{ - public IntPtr m_pVRSystem; // class vr::IVRSystem * - public IntPtr m_pVRChaperone; // class vr::IVRChaperone * - public IntPtr m_pVRChaperoneSetup; // class vr::IVRChaperoneSetup * - public IntPtr m_pVRCompositor; // class vr::IVRCompositor * - public IntPtr m_pVRHeadsetView; // class vr::IVRHeadsetView * - public IntPtr m_pVROverlay; // class vr::IVROverlay * - public IntPtr m_pVROverlayView; // class vr::IVROverlayView * - public IntPtr m_pVRResources; // class vr::IVRResources * - public IntPtr m_pVRRenderModels; // class vr::IVRRenderModels * - public IntPtr m_pVRExtendedDisplay; // class vr::IVRExtendedDisplay * - public IntPtr m_pVRSettings; // class vr::IVRSettings * - public IntPtr m_pVRApplications; // class vr::IVRApplications * - public IntPtr m_pVRTrackedCamera; // class vr::IVRTrackedCamera * - public IntPtr m_pVRScreenshots; // class vr::IVRScreenshots * - public IntPtr m_pVRDriverManager; // class vr::IVRDriverManager * - public IntPtr m_pVRInput; // class vr::IVRInput * - public IntPtr m_pVRIOBuffer; // class vr::IVRIOBuffer * - public IntPtr m_pVRSpatialAnchors; // class vr::IVRSpatialAnchors * - public IntPtr m_pVRDebug; // class vr::IVRDebug * - public IntPtr m_pVRNotifications; // class vr::IVRNotifications * -} -[StructLayout(LayoutKind.Sequential)] public struct PropertyWrite_t -{ - public ETrackedDeviceProperty prop; - public EPropertyWriteType writeType; - public ETrackedPropertyError eSetError; - public IntPtr pvBuffer; // void * - public uint unBufferSize; - public uint unTag; - public ETrackedPropertyError eError; -} -[StructLayout(LayoutKind.Sequential)] public struct PropertyRead_t -{ - public ETrackedDeviceProperty prop; - public IntPtr pvBuffer; // void * - public uint unBufferSize; - public uint unTag; - public uint unRequiredBufferSize; - public ETrackedPropertyError eError; -} -[StructLayout(LayoutKind.Sequential)] public struct CVRPropertyHelpers -{ - public IntPtr m_pProperties; // class vr::IVRProperties * -} -[StructLayout(LayoutKind.Sequential)] public struct PathWrite_t -{ - public ulong ulPath; - public EPropertyWriteType writeType; - public ETrackedPropertyError eSetError; - public IntPtr pvBuffer; // void * - public uint unBufferSize; - public uint unTag; - public ETrackedPropertyError eError; - public IntPtr pszPath; // const char * -} -[StructLayout(LayoutKind.Sequential)] public struct PathRead_t -{ - public ulong ulPath; - public IntPtr pvBuffer; // void * - public uint unBufferSize; - public uint unTag; - public uint unRequiredBufferSize; - public ETrackedPropertyError eError; - public IntPtr pszPath; // const char * -} - -public class OpenVR -{ - - public static uint InitInternal(ref EVRInitError peError, EVRApplicationType eApplicationType) - { - return OpenVRInterop.InitInternal(ref peError, eApplicationType); - } - - public static uint InitInternal2(ref EVRInitError peError, EVRApplicationType eApplicationType, string pchStartupInfo) - { - return OpenVRInterop.InitInternal2(ref peError, eApplicationType, pchStartupInfo); - } - - public static void ShutdownInternal() - { - OpenVRInterop.ShutdownInternal(); - } - - public static bool IsHmdPresent() - { - return OpenVRInterop.IsHmdPresent(); - } - - public static bool IsRuntimeInstalled() - { - return OpenVRInterop.IsRuntimeInstalled(); - } - - public static string RuntimePath() - { - try - { - uint pathSize = 512; - uint requiredPathSize = 512; - System.Text.StringBuilder path = new System.Text.StringBuilder((int)pathSize); - bool success = OpenVRInterop.GetRuntimePath(path, pathSize, ref requiredPathSize); - if (success == false) - { - return null; - } - - return path.ToString(); - } catch - { - return OpenVRInterop.RuntimePath(); //this api is deprecated but here to support older unity versions - } - } - - public static string GetStringForHmdError(EVRInitError error) - { - return Marshal.PtrToStringAnsi(OpenVRInterop.GetStringForHmdError(error)); - } - - public static IntPtr GetGenericInterface(string pchInterfaceVersion, ref EVRInitError peError) - { - return OpenVRInterop.GetGenericInterface(pchInterfaceVersion, ref peError); - } - - public static bool IsInterfaceVersionValid(string pchInterfaceVersion) - { - return OpenVRInterop.IsInterfaceVersionValid(pchInterfaceVersion); - } - - public static uint GetInitToken() - { - return OpenVRInterop.GetInitToken(); - } - - public const uint k_nDriverNone = 4294967295; - public const uint k_unMaxDriverDebugResponseSize = 32768; - public const uint k_unTrackedDeviceIndex_Hmd = 0; - public const uint k_unMaxTrackedDeviceCount = 64; - public const uint k_unTrackedDeviceIndexOther = 4294967294; - public const uint k_unTrackedDeviceIndexInvalid = 4294967295; - public const ulong k_ulInvalidPropertyContainer = 0; - public const uint k_unInvalidPropertyTag = 0; - public const ulong k_ulInvalidDriverHandle = 0; - public const uint k_unFloatPropertyTag = 1; - public const uint k_unInt32PropertyTag = 2; - public const uint k_unUint64PropertyTag = 3; - public const uint k_unBoolPropertyTag = 4; - public const uint k_unStringPropertyTag = 5; - public const uint k_unErrorPropertyTag = 6; - public const uint k_unDoublePropertyTag = 7; - public const uint k_unHmdMatrix34PropertyTag = 20; - public const uint k_unHmdMatrix44PropertyTag = 21; - public const uint k_unHmdVector3PropertyTag = 22; - public const uint k_unHmdVector4PropertyTag = 23; - public const uint k_unHmdVector2PropertyTag = 24; - public const uint k_unHmdQuadPropertyTag = 25; - public const uint k_unHiddenAreaPropertyTag = 30; - public const uint k_unPathHandleInfoTag = 31; - public const uint k_unActionPropertyTag = 32; - public const uint k_unInputValuePropertyTag = 33; - public const uint k_unWildcardPropertyTag = 34; - public const uint k_unHapticVibrationPropertyTag = 35; - public const uint k_unSkeletonPropertyTag = 36; - public const uint k_unSpatialAnchorPosePropertyTag = 40; - public const uint k_unJsonPropertyTag = 41; - public const uint k_unActiveActionSetPropertyTag = 42; - public const uint k_unOpenVRInternalReserved_Start = 1000; - public const uint k_unOpenVRInternalReserved_End = 10000; - public const uint k_unMaxPropertyStringSize = 32768; - public const ulong k_ulInvalidActionHandle = 0; - public const ulong k_ulInvalidActionSetHandle = 0; - public const ulong k_ulInvalidInputValueHandle = 0; - public const uint k_unControllerStateAxisCount = 5; - public const ulong k_ulOverlayHandleInvalid = 0; - public const uint k_unMaxDistortionFunctionParameters = 8; - public const uint k_unScreenshotHandleInvalid = 0; - public const string IVRSystem_Version = "IVRSystem_022"; - public const string IVRExtendedDisplay_Version = "IVRExtendedDisplay_001"; - public const string IVRTrackedCamera_Version = "IVRTrackedCamera_006"; - public const uint k_unMaxApplicationKeyLength = 128; - public const string k_pch_MimeType_HomeApp = "vr/home"; - public const string k_pch_MimeType_GameTheater = "vr/game_theater"; - public const string IVRApplications_Version = "IVRApplications_007"; - public const string IVRChaperone_Version = "IVRChaperone_004"; - public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_006"; - public const string IVRCompositor_Version = "IVRCompositor_026"; - public const uint k_unVROverlayMaxKeyLength = 128; - public const uint k_unVROverlayMaxNameLength = 128; - public const uint k_unMaxOverlayCount = 128; - public const uint k_unMaxOverlayIntersectionMaskPrimitivesCount = 32; - public const string IVROverlay_Version = "IVROverlay_024"; - public const string IVROverlayView_Version = "IVROverlayView_003"; - public const uint k_unHeadsetViewMaxWidth = 3840; - public const uint k_unHeadsetViewMaxHeight = 2160; - public const string k_pchHeadsetViewOverlayKey = "system.HeadsetView"; - public const string IVRHeadsetView_Version = "IVRHeadsetView_001"; - public const string k_pch_Controller_Component_GDC2015 = "gdc2015"; - public const string k_pch_Controller_Component_Base = "base"; - public const string k_pch_Controller_Component_Tip = "tip"; - public const string k_pch_Controller_Component_HandGrip = "handgrip"; - public const string k_pch_Controller_Component_Status = "status"; - public const string IVRRenderModels_Version = "IVRRenderModels_006"; - public const uint k_unNotificationTextMaxSize = 256; - public const string IVRNotifications_Version = "IVRNotifications_002"; - public const uint k_unMaxSettingsKeyLength = 128; - public const string IVRSettings_Version = "IVRSettings_003"; - public const string k_pch_SteamVR_Section = "steamvr"; - public const string k_pch_SteamVR_RequireHmd_String = "requireHmd"; - public const string k_pch_SteamVR_ForcedDriverKey_String = "forcedDriver"; - public const string k_pch_SteamVR_ForcedHmdKey_String = "forcedHmd"; - public const string k_pch_SteamVR_DisplayDebug_Bool = "displayDebug"; - public const string k_pch_SteamVR_DebugProcessPipe_String = "debugProcessPipe"; - public const string k_pch_SteamVR_DisplayDebugX_Int32 = "displayDebugX"; - public const string k_pch_SteamVR_DisplayDebugY_Int32 = "displayDebugY"; - public const string k_pch_SteamVR_SendSystemButtonToAllApps_Bool = "sendSystemButtonToAllApps"; - public const string k_pch_SteamVR_LogLevel_Int32 = "loglevel"; - public const string k_pch_SteamVR_IPD_Float = "ipd"; - public const string k_pch_SteamVR_Background_String = "background"; - public const string k_pch_SteamVR_BackgroundUseDomeProjection_Bool = "backgroundUseDomeProjection"; - public const string k_pch_SteamVR_BackgroundCameraHeight_Float = "backgroundCameraHeight"; - public const string k_pch_SteamVR_BackgroundDomeRadius_Float = "backgroundDomeRadius"; - public const string k_pch_SteamVR_GridColor_String = "gridColor"; - public const string k_pch_SteamVR_PlayAreaColor_String = "playAreaColor"; - public const string k_pch_SteamVR_TrackingLossColor_String = "trackingLossColor"; - public const string k_pch_SteamVR_ShowStage_Bool = "showStage"; - public const string k_pch_SteamVR_ActivateMultipleDrivers_Bool = "activateMultipleDrivers"; - public const string k_pch_SteamVR_UsingSpeakers_Bool = "usingSpeakers"; - public const string k_pch_SteamVR_SpeakersForwardYawOffsetDegrees_Float = "speakersForwardYawOffsetDegrees"; - public const string k_pch_SteamVR_BaseStationPowerManagement_Int32 = "basestationPowerManagement"; - public const string k_pch_SteamVR_ShowBaseStationPowerManagementTip_Int32 = "ShowBaseStationPowerManagementTip"; - public const string k_pch_SteamVR_NeverKillProcesses_Bool = "neverKillProcesses"; - public const string k_pch_SteamVR_SupersampleScale_Float = "supersampleScale"; - public const string k_pch_SteamVR_MaxRecommendedResolution_Int32 = "maxRecommendedResolution"; - public const string k_pch_SteamVR_MotionSmoothing_Bool = "motionSmoothing"; - public const string k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; - public const string k_pch_SteamVR_DisableAsyncReprojection_Bool = "disableAsync"; - public const string k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; - public const string k_pch_SteamVR_DefaultMirrorView_Int32 = "mirrorView"; - public const string k_pch_SteamVR_ShowLegacyMirrorView_Bool = "showLegacyMirrorView"; - public const string k_pch_SteamVR_MirrorViewVisibility_Bool = "showMirrorView"; - public const string k_pch_SteamVR_MirrorViewDisplayMode_Int32 = "mirrorViewDisplayMode"; - public const string k_pch_SteamVR_MirrorViewEye_Int32 = "mirrorViewEye"; - public const string k_pch_SteamVR_MirrorViewGeometry_String = "mirrorViewGeometry"; - public const string k_pch_SteamVR_MirrorViewGeometryMaximized_String = "mirrorViewGeometryMaximized"; - public const string k_pch_SteamVR_PerfGraphVisibility_Bool = "showPerfGraph"; - public const string k_pch_SteamVR_StartMonitorFromAppLaunch = "startMonitorFromAppLaunch"; - public const string k_pch_SteamVR_StartCompositorFromAppLaunch_Bool = "startCompositorFromAppLaunch"; - public const string k_pch_SteamVR_StartDashboardFromAppLaunch_Bool = "startDashboardFromAppLaunch"; - public const string k_pch_SteamVR_StartOverlayAppsFromDashboard_Bool = "startOverlayAppsFromDashboard"; - public const string k_pch_SteamVR_EnableHomeApp = "enableHomeApp"; - public const string k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBackgroundImageTimeSec"; - public const string k_pch_SteamVR_RetailDemo_Bool = "retailDemo"; - public const string k_pch_SteamVR_IpdOffset_Float = "ipdOffset"; - public const string k_pch_SteamVR_AllowSupersampleFiltering_Bool = "allowSupersampleFiltering"; - public const string k_pch_SteamVR_SupersampleManualOverride_Bool = "supersampleManualOverride"; - public const string k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = "enableLinuxVulkanAsync"; - public const string k_pch_SteamVR_AllowDisplayLockedMode_Bool = "allowDisplayLockedMode"; - public const string k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool = "haveStartedTutorialForNativeChaperoneDriver"; - public const string k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; - public const string k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; - public const string k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; - public const string k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; - public const string k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; - public const string k_pch_SteamVR_EnableSafeMode = "enableSafeMode"; - public const string k_pch_SteamVR_PreferredRefreshRate = "preferredRefreshRate"; - public const string k_pch_SteamVR_LastVersionNotice = "lastVersionNotice"; - public const string k_pch_SteamVR_LastVersionNoticeDate = "lastVersionNoticeDate"; - public const string k_pch_SteamVR_HmdDisplayColorGainR_Float = "hmdDisplayColorGainR"; - public const string k_pch_SteamVR_HmdDisplayColorGainG_Float = "hmdDisplayColorGainG"; - public const string k_pch_SteamVR_HmdDisplayColorGainB_Float = "hmdDisplayColorGainB"; - public const string k_pch_SteamVR_CustomIconStyle_String = "customIconStyle"; - public const string k_pch_SteamVR_CustomOffIconStyle_String = "customOffIconStyle"; - public const string k_pch_SteamVR_CustomIconForceUpdate_String = "customIconForceUpdate"; - public const string k_pch_SteamVR_AllowGlobalActionSetPriority = "globalActionSetPriority"; - public const string k_pch_SteamVR_OverlayRenderQuality = "overlayRenderQuality_2"; - public const string k_pch_SteamVR_BlockOculusSDKOnOpenVRLaunchOption_Bool = "blockOculusSDKOnOpenVRLaunchOption"; - public const string k_pch_SteamVR_BlockOculusSDKOnAllLaunches_Bool = "blockOculusSDKOnAllLaunches"; - public const string k_pch_DirectMode_Section = "direct_mode"; - public const string k_pch_DirectMode_Enable_Bool = "enable"; - public const string k_pch_DirectMode_Count_Int32 = "count"; - public const string k_pch_DirectMode_EdidVid_Int32 = "edidVid"; - public const string k_pch_DirectMode_EdidPid_Int32 = "edidPid"; - public const string k_pch_Lighthouse_Section = "driver_lighthouse"; - public const string k_pch_Lighthouse_DisableIMU_Bool = "disableimu"; - public const string k_pch_Lighthouse_DisableIMUExceptHMD_Bool = "disableimuexcepthmd"; - public const string k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation"; - public const string k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug"; - public const string k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation"; - public const string k_pch_Lighthouse_DBHistory_Bool = "dbhistory"; - public const string k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; - public const string k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; - public const string k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; - public const string k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; - public const string k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; - public const string k_pch_Null_Section = "driver_null"; - public const string k_pch_Null_SerialNumber_String = "serialNumber"; - public const string k_pch_Null_ModelNumber_String = "modelNumber"; - public const string k_pch_Null_WindowX_Int32 = "windowX"; - public const string k_pch_Null_WindowY_Int32 = "windowY"; - public const string k_pch_Null_WindowWidth_Int32 = "windowWidth"; - public const string k_pch_Null_WindowHeight_Int32 = "windowHeight"; - public const string k_pch_Null_RenderWidth_Int32 = "renderWidth"; - public const string k_pch_Null_RenderHeight_Int32 = "renderHeight"; - public const string k_pch_Null_SecondsFromVsyncToPhotons_Float = "secondsFromVsyncToPhotons"; - public const string k_pch_Null_DisplayFrequency_Float = "displayFrequency"; - public const string k_pch_WindowsMR_Section = "driver_holographic"; - public const string k_pch_UserInterface_Section = "userinterface"; - public const string k_pch_UserInterface_StatusAlwaysOnTop_Bool = "StatusAlwaysOnTop"; - public const string k_pch_UserInterface_MinimizeToTray_Bool = "MinimizeToTray"; - public const string k_pch_UserInterface_HidePopupsWhenStatusMinimized_Bool = "HidePopupsWhenStatusMinimized"; - public const string k_pch_UserInterface_Screenshots_Bool = "screenshots"; - public const string k_pch_UserInterface_ScreenshotType_Int = "screenshotType"; - public const string k_pch_Notifications_Section = "notifications"; - public const string k_pch_Notifications_DoNotDisturb_Bool = "DoNotDisturb"; - public const string k_pch_Keyboard_Section = "keyboard"; - public const string k_pch_Keyboard_TutorialCompletions = "TutorialCompletions"; - public const string k_pch_Keyboard_ScaleX = "ScaleX"; - public const string k_pch_Keyboard_ScaleY = "ScaleY"; - public const string k_pch_Keyboard_OffsetLeftX = "OffsetLeftX"; - public const string k_pch_Keyboard_OffsetRightX = "OffsetRightX"; - public const string k_pch_Keyboard_OffsetY = "OffsetY"; - public const string k_pch_Keyboard_Smoothing = "Smoothing"; - public const string k_pch_Perf_Section = "perfcheck"; - public const string k_pch_Perf_PerfGraphInHMD_Bool = "perfGraphInHMD"; - public const string k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; - public const string k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; - public const string k_pch_Perf_TestData_Float = "perfTestData"; - public const string k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; - public const string k_pch_CollisionBounds_Section = "collisionBounds"; - public const string k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; - public const string k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; - public const string k_pch_CollisionBounds_CenterMarkerOn_Bool = "CollisionBoundsCenterMarkerOn"; - public const string k_pch_CollisionBounds_PlaySpaceOn_Bool = "CollisionBoundsPlaySpaceOn"; - public const string k_pch_CollisionBounds_FadeDistance_Float = "CollisionBoundsFadeDistance"; - public const string k_pch_CollisionBounds_WallHeight_Float = "CollisionBoundsWallHeight"; - public const string k_pch_CollisionBounds_ColorGammaR_Int32 = "CollisionBoundsColorGammaR"; - public const string k_pch_CollisionBounds_ColorGammaG_Int32 = "CollisionBoundsColorGammaG"; - public const string k_pch_CollisionBounds_ColorGammaB_Int32 = "CollisionBoundsColorGammaB"; - public const string k_pch_CollisionBounds_ColorGammaA_Int32 = "CollisionBoundsColorGammaA"; - public const string k_pch_CollisionBounds_EnableDriverImport = "enableDriverBoundsImport"; - public const string k_pch_Camera_Section = "camera"; - public const string k_pch_Camera_EnableCamera_Bool = "enableCamera"; - public const string k_pch_Camera_ShowOnController_Bool = "showOnController"; - public const string k_pch_Camera_EnableCameraForCollisionBounds_Bool = "enableCameraForCollisionBounds"; - public const string k_pch_Camera_RoomView_Int32 = "roomView"; - public const string k_pch_Camera_BoundsColorGammaR_Int32 = "cameraBoundsColorGammaR"; - public const string k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGammaG"; - public const string k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB"; - public const string k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA"; - public const string k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength"; - public const string k_pch_Camera_RoomViewStyle_Int32 = "roomViewStyle"; - public const string k_pch_audio_Section = "audio"; - public const string k_pch_audio_SetOsDefaultPlaybackDevice_Bool = "setOsDefaultPlaybackDevice"; - public const string k_pch_audio_EnablePlaybackDeviceOverride_Bool = "enablePlaybackDeviceOverride"; - public const string k_pch_audio_PlaybackDeviceOverride_String = "playbackDeviceOverride"; - public const string k_pch_audio_PlaybackDeviceOverrideName_String = "playbackDeviceOverrideName"; - public const string k_pch_audio_SetOsDefaultRecordingDevice_Bool = "setOsDefaultRecordingDevice"; - public const string k_pch_audio_EnableRecordingDeviceOverride_Bool = "enableRecordingDeviceOverride"; - public const string k_pch_audio_RecordingDeviceOverride_String = "recordingDeviceOverride"; - public const string k_pch_audio_RecordingDeviceOverrideName_String = "recordingDeviceOverrideName"; - public const string k_pch_audio_EnablePlaybackMirror_Bool = "enablePlaybackMirror"; - public const string k_pch_audio_PlaybackMirrorDevice_String = "playbackMirrorDevice"; - public const string k_pch_audio_PlaybackMirrorDeviceName_String = "playbackMirrorDeviceName"; - public const string k_pch_audio_OldPlaybackMirrorDevice_String = "onPlaybackMirrorDevice"; - public const string k_pch_audio_ActiveMirrorDevice_String = "activePlaybackMirrorDevice"; - public const string k_pch_audio_EnablePlaybackMirrorIndependentVolume_Bool = "enablePlaybackMirrorIndependentVolume"; - public const string k_pch_audio_LastHmdPlaybackDeviceId_String = "lastHmdPlaybackDeviceId"; - public const string k_pch_audio_VIVEHDMIGain = "viveHDMIGain"; - public const string k_pch_audio_DualSpeakerAndJackOutput_Bool = "dualSpeakerAndJackOutput"; - public const string k_pch_Power_Section = "power"; - public const string k_pch_Power_PowerOffOnExit_Bool = "powerOffOnExit"; - public const string k_pch_Power_TurnOffScreensTimeout_Float = "turnOffScreensTimeout"; - public const string k_pch_Power_TurnOffControllersTimeout_Float = "turnOffControllersTimeout"; - public const string k_pch_Power_ReturnToWatchdogTimeout_Float = "returnToWatchdogTimeout"; - public const string k_pch_Power_AutoLaunchSteamVROnButtonPress = "autoLaunchSteamVROnButtonPress"; - public const string k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositorOnStandby"; - public const string k_pch_Dashboard_Section = "dashboard"; - public const string k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard"; - public const string k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode"; - public const string k_pch_Dashboard_Position = "position"; - public const string k_pch_Dashboard_DesktopScale = "desktopScale"; - public const string k_pch_Dashboard_DashboardScale = "dashboardScale"; - public const string k_pch_modelskin_Section = "modelskins"; - public const string k_pch_Driver_Enable_Bool = "enable"; - public const string k_pch_Driver_BlockedBySafemode_Bool = "blocked_by_safe_mode"; - public const string k_pch_Driver_LoadPriority_Int32 = "loadPriority"; - public const string k_pch_WebInterface_Section = "WebInterface"; - public const string k_pch_VRWebHelper_Section = "VRWebHelper"; - public const string k_pch_VRWebHelper_DebuggerEnabled_Bool = "DebuggerEnabled"; - public const string k_pch_VRWebHelper_DebuggerPort_Int32 = "DebuggerPort"; - public const string k_pch_TrackingOverride_Section = "TrackingOverrides"; - public const string k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL"; - public const string k_pch_App_BindingLegacyAPISuffix_String = "_legacy"; - public const string k_pch_App_BindingSteamVRInputAPISuffix_String = "_steamvrinput"; - public const string k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL"; - public const string k_pch_App_BindingPreviousURLSuffix_String = "PreviousURL"; - public const string k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave"; - public const string k_pch_App_DominantHand_Int32 = "DominantHand"; - public const string k_pch_App_BlockOculusSDK_Bool = "blockOculusSDK"; - public const string k_pch_Trackers_Section = "trackers"; - public const string k_pch_DesktopUI_Section = "DesktopUI"; - public const string k_pch_LastKnown_Section = "LastKnown"; - public const string k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer"; - public const string k_pch_LastKnown_HMDModel_String = "HMDModel"; - public const string k_pch_DismissedWarnings_Section = "DismissedWarnings"; - public const string k_pch_Input_Section = "input"; - public const string k_pch_Input_LeftThumbstickRotation_Float = "leftThumbstickRotation"; - public const string k_pch_Input_RightThumbstickRotation_Float = "rightThumbstickRotation"; - public const string k_pch_Input_ThumbstickDeadzone_Float = "thumbstickDeadzone"; - public const string k_pch_GpuSpeed_Section = "GpuSpeed"; - public const string IVRScreenshots_Version = "IVRScreenshots_001"; - public const string IVRResources_Version = "IVRResources_001"; - public const string IVRDriverManager_Version = "IVRDriverManager_001"; - public const uint k_unMaxActionNameLength = 64; - public const uint k_unMaxActionSetNameLength = 64; - public const uint k_unMaxActionOriginCount = 16; - public const uint k_unMaxBoneNameLength = 32; - public const int k_nActionSetOverlayGlobalPriorityMin = 16777216; - public const int k_nActionSetOverlayGlobalPriorityMax = 33554431; - public const int k_nActionSetPriorityReservedMin = 33554432; - public const string IVRInput_Version = "IVRInput_010"; - public const ulong k_ulInvalidIOBufferHandle = 0; - public const string IVRIOBuffer_Version = "IVRIOBuffer_002"; - public const uint k_ulInvalidSpatialAnchorHandle = 0; - public const string IVRSpatialAnchors_Version = "IVRSpatialAnchors_001"; - public const string IVRDebug_Version = "IVRDebug_001"; - public const ulong k_ulDisplayRedirectContainer = 25769803779; - public const string IVRProperties_Version = "IVRProperties_001"; - public const string k_pchPathUserHandRight = "/user/hand/right"; - public const string k_pchPathUserHandLeft = "/user/hand/left"; - public const string k_pchPathUserHandPrimary = "/user/hand/primary"; - public const string k_pchPathUserHandSecondary = "/user/hand/secondary"; - public const string k_pchPathUserHead = "/user/head"; - public const string k_pchPathUserGamepad = "/user/gamepad"; - public const string k_pchPathUserTreadmill = "/user/treadmill"; - public const string k_pchPathUserStylus = "/user/stylus"; - public const string k_pchPathDevices = "/devices"; - public const string k_pchPathDevicePath = "/device_path"; - public const string k_pchPathBestAliasPath = "/best_alias_path"; - public const string k_pchPathBoundTrackerAliasPath = "/bound_tracker_path"; - public const string k_pchPathBoundTrackerRole = "/bound_tracker_role"; - public const string k_pchPathPoseRaw = "/pose/raw"; - public const string k_pchPathPoseTip = "/pose/tip"; - public const string k_pchPathPoseGrip = "/pose/grip"; - public const string k_pchPathSystemButtonClick = "/input/system/click"; - public const string k_pchPathProximity = "/proximity"; - public const string k_pchPathControllerTypePrefix = "/controller_type/"; - public const string k_pchPathInputProfileSuffix = "/input_profile"; - public const string k_pchPathBindingNameSuffix = "/binding_name"; - public const string k_pchPathBindingUrlSuffix = "/binding_url"; - public const string k_pchPathBindingErrorSuffix = "/binding_error"; - public const string k_pchPathActiveActionSets = "/active_action_sets"; - public const string k_pchPathComponentUpdates = "/total_component_updates"; - public const string k_pchPathUserFootLeft = "/user/foot/left"; - public const string k_pchPathUserFootRight = "/user/foot/right"; - public const string k_pchPathUserShoulderLeft = "/user/shoulder/left"; - public const string k_pchPathUserShoulderRight = "/user/shoulder/right"; - public const string k_pchPathUserElbowLeft = "/user/elbow/left"; - public const string k_pchPathUserElbowRight = "/user/elbow/right"; - public const string k_pchPathUserKneeLeft = "/user/knee/left"; - public const string k_pchPathUserKneeRight = "/user/knee/right"; - public const string k_pchPathUserWaist = "/user/waist"; - public const string k_pchPathUserChest = "/user/chest"; - public const string k_pchPathUserCamera = "/user/camera"; - public const string k_pchPathUserKeyboard = "/user/keyboard"; - public const string k_pchPathClientAppKey = "/client_info/app_key"; - public const ulong k_ulInvalidPathHandle = 0; - public const string IVRPaths_Version = "IVRPaths_001"; - public const string IVRBlockQueue_Version = "IVRBlockQueue_004"; - - static uint VRToken { get; set; } - - const string FnTable_Prefix = "FnTable:"; - - class COpenVRContext - { - public COpenVRContext() { Clear(); } - - public void Clear() - { - m_pVRSystem = null; - m_pVRChaperone = null; - m_pVRChaperoneSetup = null; - m_pVRCompositor = null; - m_pVRHeadsetView = null; - m_pVROverlay = null; - m_pVROverlayView = null; - m_pVRRenderModels = null; - m_pVRExtendedDisplay = null; - m_pVRSettings = null; - m_pVRApplications = null; - m_pVRScreenshots = null; - m_pVRTrackedCamera = null; - m_pVRInput = null; - m_pVRIOBuffer = null; - m_pVRSpatialAnchors = null; - m_pVRNotifications = null; - m_pVRDebug = null; - } - - void CheckClear() - { - if (VRToken != GetInitToken()) - { - Clear(); - VRToken = GetInitToken(); - } - } - - public CVRSystem VRSystem() - { - CheckClear(); - if (m_pVRSystem == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRSystem_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRSystem = new CVRSystem(pInterface); - } - return m_pVRSystem; - } - - public CVRChaperone VRChaperone() - { - CheckClear(); - if (m_pVRChaperone == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRChaperone_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRChaperone = new CVRChaperone(pInterface); - } - return m_pVRChaperone; - } - - public CVRChaperoneSetup VRChaperoneSetup() - { - CheckClear(); - if (m_pVRChaperoneSetup == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRChaperoneSetup_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRChaperoneSetup = new CVRChaperoneSetup(pInterface); - } - return m_pVRChaperoneSetup; - } - - public CVRCompositor VRCompositor() - { - CheckClear(); - if (m_pVRCompositor == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRCompositor_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRCompositor = new CVRCompositor(pInterface); - } - return m_pVRCompositor; - } - - public CVRHeadsetView VRHeadsetView() - { - CheckClear(); - if (m_pVRHeadsetView == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRHeadsetView_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRHeadsetView = new CVRHeadsetView(pInterface); - } - return m_pVRHeadsetView; - } - - public CVROverlay VROverlay() - { - CheckClear(); - if (m_pVROverlay == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVROverlay_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVROverlay = new CVROverlay(pInterface); - } - return m_pVROverlay; - } - - public CVROverlayView VROverlayView() - { - CheckClear(); - if (m_pVROverlayView == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVROverlayView_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVROverlayView = new CVROverlayView(pInterface); - } - return m_pVROverlayView; - } - - public CVRRenderModels VRRenderModels() - { - CheckClear(); - if (m_pVRRenderModels == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRRenderModels_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRRenderModels = new CVRRenderModels(pInterface); - } - return m_pVRRenderModels; - } - - public CVRExtendedDisplay VRExtendedDisplay() - { - CheckClear(); - if (m_pVRExtendedDisplay == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRExtendedDisplay_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRExtendedDisplay = new CVRExtendedDisplay(pInterface); - } - return m_pVRExtendedDisplay; - } - - public CVRSettings VRSettings() - { - CheckClear(); - if (m_pVRSettings == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRSettings_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRSettings = new CVRSettings(pInterface); - } - return m_pVRSettings; - } - - public CVRApplications VRApplications() - { - CheckClear(); - if (m_pVRApplications == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRApplications_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRApplications = new CVRApplications(pInterface); - } - return m_pVRApplications; - } - - public CVRScreenshots VRScreenshots() - { - CheckClear(); - if (m_pVRScreenshots == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRScreenshots_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRScreenshots = new CVRScreenshots(pInterface); - } - return m_pVRScreenshots; - } - - public CVRTrackedCamera VRTrackedCamera() - { - CheckClear(); - if (m_pVRTrackedCamera == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRTrackedCamera_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRTrackedCamera = new CVRTrackedCamera(pInterface); - } - return m_pVRTrackedCamera; - } - - public CVRInput VRInput() - { - CheckClear(); - if (m_pVRInput == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix+IVRInput_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRInput = new CVRInput(pInterface); - } - return m_pVRInput; - } - - public CVRIOBuffer VRIOBuffer() - { - CheckClear(); - if (m_pVRIOBuffer == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix + IVRIOBuffer_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRIOBuffer = new CVRIOBuffer(pInterface); - } - return m_pVRIOBuffer; - } - - public CVRSpatialAnchors VRSpatialAnchors() - { - CheckClear(); - if (m_pVRSpatialAnchors == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix + IVRSpatialAnchors_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRSpatialAnchors = new CVRSpatialAnchors(pInterface); - } - return m_pVRSpatialAnchors; - } - - public CVRDebug VRDebug() - { - CheckClear(); - if (m_pVRDebug == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix + IVRDebug_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRDebug = new CVRDebug(pInterface); - } - return m_pVRDebug; - } - - public CVRNotifications VRNotifications() - { - CheckClear(); - if (m_pVRNotifications == null) - { - var eError = EVRInitError.None; - var pInterface = OpenVRInterop.GetGenericInterface(FnTable_Prefix + IVRNotifications_Version, ref eError); - if (pInterface != IntPtr.Zero && eError == EVRInitError.None) - m_pVRNotifications = new CVRNotifications(pInterface); - } - return m_pVRNotifications; - } - - private CVRSystem m_pVRSystem; - private CVRChaperone m_pVRChaperone; - private CVRChaperoneSetup m_pVRChaperoneSetup; - private CVRCompositor m_pVRCompositor; - private CVRHeadsetView m_pVRHeadsetView; - private CVROverlay m_pVROverlay; - private CVROverlayView m_pVROverlayView; - private CVRRenderModels m_pVRRenderModels; - private CVRExtendedDisplay m_pVRExtendedDisplay; - private CVRSettings m_pVRSettings; - private CVRApplications m_pVRApplications; - private CVRScreenshots m_pVRScreenshots; - private CVRTrackedCamera m_pVRTrackedCamera; - private CVRInput m_pVRInput; - private CVRIOBuffer m_pVRIOBuffer; - private CVRSpatialAnchors m_pVRSpatialAnchors; - private CVRNotifications m_pVRNotifications; - private CVRDebug m_pVRDebug; - }; - - private static COpenVRContext _OpenVRInternal_ModuleContext = null; - static COpenVRContext OpenVRInternal_ModuleContext - { - get - { - if (_OpenVRInternal_ModuleContext == null) - _OpenVRInternal_ModuleContext = new COpenVRContext(); - return _OpenVRInternal_ModuleContext; - } - } - - public static CVRSystem System { get { return OpenVRInternal_ModuleContext.VRSystem(); } } - public static CVRChaperone Chaperone { get { return OpenVRInternal_ModuleContext.VRChaperone(); } } - public static CVRChaperoneSetup ChaperoneSetup { get { return OpenVRInternal_ModuleContext.VRChaperoneSetup(); } } - public static CVRCompositor Compositor { get { return OpenVRInternal_ModuleContext.VRCompositor(); } } - public static CVRHeadsetView HeadsetView { get { return OpenVRInternal_ModuleContext.VRHeadsetView(); } } - public static CVROverlay Overlay { get { return OpenVRInternal_ModuleContext.VROverlay(); } } - public static CVROverlayView OverlayView { get { return OpenVRInternal_ModuleContext.VROverlayView(); } } - public static CVRRenderModels RenderModels { get { return OpenVRInternal_ModuleContext.VRRenderModels(); } } - public static CVRExtendedDisplay ExtendedDisplay { get { return OpenVRInternal_ModuleContext.VRExtendedDisplay(); } } - public static CVRSettings Settings { get { return OpenVRInternal_ModuleContext.VRSettings(); } } - public static CVRApplications Applications { get { return OpenVRInternal_ModuleContext.VRApplications(); } } - public static CVRScreenshots Screenshots { get { return OpenVRInternal_ModuleContext.VRScreenshots(); } } - public static CVRTrackedCamera TrackedCamera { get { return OpenVRInternal_ModuleContext.VRTrackedCamera(); } } - public static CVRInput Input { get { return OpenVRInternal_ModuleContext.VRInput(); } } - public static CVRIOBuffer IOBuffer { get { return OpenVRInternal_ModuleContext.VRIOBuffer(); } } - public static CVRSpatialAnchors SpatialAnchors { get { return OpenVRInternal_ModuleContext.VRSpatialAnchors(); } } - public static CVRNotifications Notifications { get { return OpenVRInternal_ModuleContext.VRNotifications(); } } - public static CVRDebug Debug { get { return OpenVRInternal_ModuleContext.VRDebug(); } } - - - /** Finds the active installation of vrclient.dll and initializes it */ - public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene, string pchStartupInfo= "") - { - try - { - VRToken = InitInternal2(ref peError, eApplicationType, pchStartupInfo); - } - catch (EntryPointNotFoundException) - { - VRToken = InitInternal(ref peError, eApplicationType); - } - - OpenVRInternal_ModuleContext.Clear(); - - if (peError != EVRInitError.None) - return null; - - bool bInterfaceValid = IsInterfaceVersionValid(IVRSystem_Version); - if (!bInterfaceValid) - { - ShutdownInternal(); - peError = EVRInitError.Init_InterfaceNotFound; - return null; - } - - return OpenVR.System; - } - - /** unloads vrclient.dll. Any interface pointers from the interface are - * invalid after this point */ - public static void Shutdown() - { - ShutdownInternal(); - } - -} - - - -} -#endif -