diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..84c048a7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/build/
diff --git a/bin/osx32/libopenvr_api.dylib b/bin/osx32/libopenvr_api.dylib
deleted file mode 100755
index 7a719c37..00000000
Binary files a/bin/osx32/libopenvr_api.dylib and /dev/null differ
diff --git a/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Info.plist b/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Info.plist
deleted file mode 100644
index 60ac3d69..00000000
--- a/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Info.plist
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- English
- CFBundleIdentifier
- com.apple.xcode.dsym.libopenvr_api.dylib
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundlePackageType
- dSYM
- CFBundleSignature
- ????
- CFBundleShortVersionString
- 1.0
- CFBundleVersion
- 1
-
-
diff --git a/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib b/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib
deleted file mode 100644
index 05fe06bf..00000000
Binary files a/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib and /dev/null differ
diff --git a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr.h b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr.h
index f945dbc1..93e71c5c 100644
--- a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr.h
+++ b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr.h
@@ -29,6 +29,10 @@ namespace vr
{
#pragma pack( push, 8 )
+/** A handle for a spatial anchor. This handle is only valid during the session it was created in.
+* Anchors that live beyond one session should be saved by their string descriptors. */
+typedef uint32_t SpatialAnchorHandle_t;
+
typedef void* glSharedTextureHandle_t;
typedef int32_t glInt_t;
typedef uint32_t glUInt_t;
@@ -36,13 +40,18 @@ typedef uint32_t glUInt_t;
// right-handed system
// +y is up
// +x is to the right
-// -z is going away from you
+// -z is forward
// Distance unit is meters
struct HmdMatrix34_t
{
float m[3][4];
};
+struct HmdMatrix33_t
+{
+ float m[3][3];
+};
+
struct HmdMatrix44_t
{
float m[4][4];
@@ -73,6 +82,11 @@ struct HmdQuaternion_t
double w, x, y, z;
};
+struct HmdQuaternionf_t
+{
+ float w, x, y, z;
+};
+
struct HmdColor_t
{
float r, g, b, a;
@@ -107,11 +121,17 @@ enum EVREye
enum ETextureType
{
+ TextureType_Invalid = -1, // Handle has been invalidated
TextureType_DirectX = 0, // Handle is an ID3D11Texture
TextureType_OpenGL = 1, // Handle is an OpenGL texture name or an OpenGL render buffer name, depending on submit flags
TextureType_Vulkan = 2, // Handle is a pointer to a VRVulkanTextureData_t structure
- TextureType_IOSurface = 3, // Handle is a macOS cross-process-sharable IOSurfaceRef
+ TextureType_IOSurface = 3, // Handle is a macOS cross-process-sharable IOSurfaceRef (kIOSurfaceIsGlobal must be set for SteamVR), deprecated in favor of TextureType_Metal on supported platforms
TextureType_DirectX12 = 4, // Handle is a pointer to a D3D12TextureData_t structure
+ TextureType_DXGISharedHandle = 5, // Handle is a HANDLE DXGI share handle, only supported for Overlay render targets.
+ // this texture is used directly by our renderer, so only perform atomic (copyresource or resolve) on it
+ TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which
+ // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right
+ // eye texture (vr::EVREye::Eye_Right)
};
enum EColorSpace
@@ -151,7 +171,7 @@ static const uint32_t k_unMaxDriverDebugResponseSize = 32768;
/** Used to pass device IDs to API calls */
typedef uint32_t TrackedDeviceIndex_t;
static const uint32_t k_unTrackedDeviceIndex_Hmd = 0;
-static const uint32_t k_unMaxTrackedDeviceCount = 16;
+static const uint32_t k_unMaxTrackedDeviceCount = 64;
static const uint32_t k_unTrackedDeviceIndexOther = 0xFFFFFFFE;
static const uint32_t k_unTrackedDeviceIndexInvalid = 0xFFFFFFFF;
@@ -164,6 +184,8 @@ enum ETrackedDeviceClass
TrackedDeviceClass_GenericTracker = 3, // Generic trackers, similar to controllers
TrackedDeviceClass_TrackingReference = 4, // Camera and base stations that serve as tracking reference points
TrackedDeviceClass_DisplayRedirect = 5, // Accessories that aren't necessarily tracked themselves, but may redirect video output from other tracked devices
+
+ TrackedDeviceClass_Max
};
@@ -173,6 +195,8 @@ enum ETrackedControllerRole
TrackedControllerRole_Invalid = 0, // Invalid value for controller type
TrackedControllerRole_LeftHand = 1, // Tracked device associated with the left hand
TrackedControllerRole_RightHand = 2, // Tracked device associated with the right hand
+ TrackedControllerRole_OptOut = 3, // Tracked device is opting out of left/right hand selection
+ TrackedControllerRole_Max = 4
};
@@ -199,6 +223,9 @@ enum ETrackingUniverseOrigin
TrackingUniverseRawAndUncalibrated = 2, // Poses are provided in the coordinate system defined by the driver. It has Y up and is unified for devices of the same driver. You usually don't want this one.
};
+typedef uint64_t WebConsoleHandle_t;
+#define INVALID_WEB_CONSOLE_HANDLE ((vr::WebConsoleHandle_t)0)
+
// Refers to a single container of properties
typedef uint64_t PropertyContainerHandle_t;
typedef uint32_t PropertyTypeTag_t;
@@ -206,6 +233,9 @@ typedef uint32_t PropertyTypeTag_t;
static const PropertyContainerHandle_t k_ulInvalidPropertyContainer = 0;
static const PropertyTypeTag_t k_unInvalidPropertyTag = 0;
+typedef PropertyContainerHandle_t DriverHandle_t;
+static const PropertyContainerHandle_t k_ulInvalidDriverHandle = 0;
+
// Use these tags to set/get common types as struct properties
static const PropertyTypeTag_t k_unFloatPropertyTag = 1;
static const PropertyTypeTag_t k_unInt32PropertyTag = 2;
@@ -219,6 +249,14 @@ static const PropertyTypeTag_t k_unHmdVector3PropertyTag = 22;
static const PropertyTypeTag_t k_unHmdVector4PropertyTag = 23;
static const PropertyTypeTag_t k_unHiddenAreaPropertyTag = 30;
+static const PropertyTypeTag_t k_unPathHandleInfoTag = 31;
+static const PropertyTypeTag_t k_unActionPropertyTag = 32;
+static const PropertyTypeTag_t k_unInputValuePropertyTag = 33;
+static const PropertyTypeTag_t k_unWildcardPropertyTag = 34;
+static const PropertyTypeTag_t k_unHapticVibrationPropertyTag = 35;
+static const PropertyTypeTag_t k_unSkeletonPropertyTag = 36;
+
+static const PropertyTypeTag_t k_unSpatialAnchorPosePropertyTag = 40;
static const PropertyTypeTag_t k_unOpenVRInternalReserved_Start = 1000;
static const PropertyTypeTag_t k_unOpenVRInternalReserved_End = 10000;
@@ -267,6 +305,11 @@ enum ETrackedDeviceProperty
Prop_ViveSystemButtonFixRequired_Bool = 1033,
Prop_ParentDriver_Uint64 = 1034,
Prop_ResourceRoot_String = 1035,
+ Prop_RegisteredDeviceType_String = 1036,
+ Prop_InputProfilePath_String = 1037, // input profile to use for this device in the input system. Will default to tracking system name if this isn't provided
+ Prop_NeverTracked_Bool = 1038, // Used for devices that will never have a valid pose by design
+ Prop_NumCameras_Int32 = 1039,
+ Prop_CameraFrameLayout_Int32 = 1040, // EVRTrackedCameraFrameLayout value
// Properties that are unique to TrackedDeviceClass_HMD
Prop_ReportsTimeSinceVSync_Bool = 2000,
@@ -316,6 +359,38 @@ enum ETrackedDeviceProperty
Prop_DisplayDebugMode_Bool = 2044,
Prop_GraphicsAdapterLuid_Uint64 = 2045,
Prop_DriverProvidedChaperonePath_String = 2048,
+ Prop_ExpectedTrackingReferenceCount_Int32 = 2049, // expected number of sensors or basestations to reserve UI space for
+ Prop_ExpectedControllerCount_Int32 = 2050, // expected number of tracked controllers to reserve UI space for
+ Prop_NamedIconPathControllerLeftDeviceOff_String = 2051, // placeholder icon for "left" controller if not yet detected/loaded
+ Prop_NamedIconPathControllerRightDeviceOff_String = 2052, // placeholder icon for "right" controller if not yet detected/loaded
+ Prop_NamedIconPathTrackingReferenceDeviceOff_String = 2053, // placeholder icon for sensor/base if not yet detected/loaded
+ Prop_DoNotApplyPrediction_Bool = 2054,
+ Prop_CameraToHeadTransforms_Matrix34_Array = 2055,
+ Prop_DistortionMeshResolution_Int32 = 2056, // custom resolution of compositor calls to IVRSystem::ComputeDistortion
+ 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,
+ // reserved 2068
+ Prop_ConfigurationIncludesLighthouse20Features_Bool = 2069,
+
+ // Driver requested mura correction properties
+ 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,
// Properties that are unique to TrackedDeviceClass_Controller
Prop_AttachedDeviceId_String = 3000,
@@ -350,6 +425,7 @@ enum ETrackedDeviceProperty
// Properties that are used by helpers, but are opaque to applications
Prop_DisplayHiddenArea_Binary_Start = 5100,
Prop_DisplayHiddenArea_Binary_End = 5150,
+ Prop_ParentContainer = 5151,
// Properties that are unique to drivers
Prop_UserConfigPath_String = 6000,
@@ -359,10 +435,17 @@ enum ETrackedDeviceProperty
Prop_HasCameraComponent_Bool = 6004,
Prop_HasDriverDirectModeComponent_Bool = 6005,
Prop_HasVirtualDisplayComponent_Bool = 6006,
+ Prop_HasSpatialAnchorsSupport_Bool = 6007,
+
+ // Properties that are set internally based on other information provided by drivers
+ Prop_ControllerType_String = 7000,
+ Prop_LegacyInputProfile_String = 7001,
// Vendors are free to expose private debug data in this reserved region
Prop_VendorSpecific_Reserved_Start = 10000,
Prop_VendorSpecific_Reserved_End = 10999,
+
+ Prop_TrackedDeviceProperty_Max = 1000000,
};
/** No string property will ever be longer than this length */
@@ -383,8 +466,19 @@ enum ETrackedPropertyError
TrackedProp_NotYetAvailable = 9, // The property value isn't known yet, but is expected soon. Call again later.
TrackedProp_PermissionDenied = 10,
TrackedProp_InvalidOperation = 11,
+ TrackedProp_CannotWriteToWildcards = 12,
};
+
+typedef uint64_t VRActionHandle_t;
+typedef uint64_t VRActionSetHandle_t;
+typedef uint64_t VRInputValueHandle_t;
+
+static const VRActionHandle_t k_ulInvalidActionHandle = 0;
+static const VRActionSetHandle_t k_ulInvalidActionSetHandle = 0;
+static const VRInputValueHandle_t k_ulInvalidInputValueHandle = 0;
+
+
/** Allows the application to control what part of the provided texture will be used in the
* frame buffer. */
struct VRTextureBounds_t
@@ -399,6 +493,23 @@ struct VRTextureWithPose_t : public Texture_t
HmdMatrix34_t mDeviceToAbsoluteTracking; // Actual pose used to render scene textures.
};
+struct VRTextureDepthInfo_t
+{
+ void* handle; // See ETextureType definition above
+ HmdMatrix44_t mProjection;
+ HmdVector2_t vRange; // 0..1
+};
+
+struct VRTextureWithDepth_t : public Texture_t
+{
+ VRTextureDepthInfo_t depth;
+};
+
+struct VRTextureWithPoseAndDepth_t : public VRTextureWithPose_t
+{
+ VRTextureDepthInfo_t depth;
+};
+
/** Allows the application to control how scene textures are used by the compositor when calling Submit. */
enum EVRSubmitFlags
{
@@ -417,11 +528,17 @@ enum EVRSubmitFlags
Submit_Reserved = 0x04,
// Set to indicate that pTexture is a pointer to a VRTextureWithPose_t.
+ // This flag can be combined with Submit_TextureWithDepth to pass a VRTextureWithPoseAndDepth_t.
Submit_TextureWithPose = 0x08,
+
+ // Set to indicate that pTexture is a pointer to a VRTextureWithDepth_t.
+ // This flag can be combined with Submit_TextureWithPose to pass a VRTextureWithPoseAndDepth_t.
+ Submit_TextureWithDepth = 0x10,
};
/** Data required for passing Vulkan textures to IVRCompositor::Submit.
-* Be sure to call OpenVR_Shutdown before destroying these resources. */
+* Be sure to call OpenVR_Shutdown before destroying these resources.
+* Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation */
struct VRVulkanTextureData_t
{
uint64_t m_nImage; // VkImage
@@ -481,6 +598,15 @@ enum EVREventType
VREvent_ButtonTouch = 202, // data is controller
VREvent_ButtonUntouch = 203, // data is controller
+ VREvent_DualAnalog_Press = 250, // data is dualAnalog
+ VREvent_DualAnalog_Unpress = 251, // data is dualAnalog
+ VREvent_DualAnalog_Touch = 252, // data is dualAnalog
+ VREvent_DualAnalog_Untouch = 253, // data is dualAnalog
+ VREvent_DualAnalog_Move = 254, // data is dualAnalog
+ VREvent_DualAnalog_ModeSwitch1 = 255, // data is dualAnalog
+ VREvent_DualAnalog_ModeSwitch2 = 256, // data is dualAnalog
+ VREvent_DualAnalog_Cancel = 257, // data is dualAnalog
+
VREvent_MouseMove = 300, // data is mouse
VREvent_MouseButtonDown = 301, // data is mouse
VREvent_MouseButtonUp = 302, // data is mouse
@@ -498,10 +624,15 @@ enum EVREventType
VREvent_SceneFocusChanged = 405, // data is process - New app got access to draw the scene
VREvent_InputFocusChanged = 406, // data is process
VREvent_SceneApplicationSecondaryRenderingStarted = 407, // data is process
+ VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, // data is process
+ VREvent_ActionBindingReloaded = 409, // data is process - The App that action binds reloaded for
VREvent_HideRenderModels = 410, // Sent to the scene application to request hiding render models temporarily
VREvent_ShowRenderModels = 411, // Sent to the scene application to request restoring render model visibility
+ VREvent_ConsoleOpened = 420,
+ VREvent_ConsoleClosed = 421,
+
VREvent_OverlayShown = 500,
VREvent_OverlayHidden = 501,
VREvent_DashboardActivated = 502,
@@ -516,11 +647,12 @@ enum EVREventType
VREvent_OverlayGamepadFocusGained = 511, // Sent to an overlay when IVROverlay::SetFocusOverlay is called on it
VREvent_OverlayGamepadFocusLost = 512, // Send to an overlay when it previously had focus and IVROverlay::SetFocusOverlay is called on something else
VREvent_OverlaySharedTextureChanged = 513,
- VREvent_DashboardGuideButtonDown = 514,
- VREvent_DashboardGuideButtonUp = 515,
+ //VREvent_DashboardGuideButtonDown = 514, // These are no longer sent
+ //VREvent_DashboardGuideButtonUp = 515,
VREvent_ScreenshotTriggered = 516, // Screenshot button combo was pressed, Dashboard should request a screenshot
VREvent_ImageFailed = 517, // Sent to overlays when a SetOverlayRaw or SetOverlayfromFail fails to load
VREvent_DashboardOverlayCreated = 518,
+ VREvent_SwitchGamepadFocus = 519,
// Screenshot API
VREvent_RequestScreenshot = 520, // Sent by vrclient application to compositor to take a screenshot
@@ -530,6 +662,8 @@ enum EVREventType
VREvent_ScreenshotProgressToDashboard = 524, // Sent by compositor to the dashboard that a completed screenshot was submitted
VREvent_PrimaryDashboardDeviceChanged = 525,
+ VREvent_RoomViewShown = 526, // Sent by compositor whenever room-view is enabled
+ VREvent_RoomViewHidden = 527, // Sent by compositor whenever room-view is disabled
VREvent_Notification_Shown = 600,
VREvent_Notification_Hidden = 601,
@@ -550,16 +684,28 @@ enum EVREventType
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_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_StatusUpdate = 900,
+ VREvent_WebInterface_InstallDriverCompleted = 950,
+
VREvent_MCImageUpdated = 1000,
VREvent_FirmwareUpdateStarted = 1100,
@@ -596,6 +742,17 @@ enum EVREventType
VREvent_MessageOverlay_Closed = 1650,
VREvent_MessageOverlayCloseRequested = 1651,
+ VREvent_Input_HapticVibration = 1700, // data is hapticVibration
+ VREvent_Input_BindingLoadFailed = 1701, // data is inputBinding
+ VREvent_Input_BindingLoadSuccessful = 1702, // data is inputBinding
+ VREvent_Input_ActionManifestReloaded = 1703, // no data
+ VREvent_Input_ActionManifestLoadFailed = 1704, // data is actionManifest
+
+ VREvent_SpatialAnchors_PoseUpdated = 1800, // data is spatialAnchor. broadcast
+ VREvent_SpatialAnchors_DescriptorUpdated = 1801, // data is spatialAnchor. broadcast
+ VREvent_SpatialAnchors_RequestPoseUpdate = 1802, // data is spatialAnchor. sent to specific driver
+ VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803, // data is spatialAnchor. sent to specific driver
+
// Vendors are free to expose private events in this reserved region
VREvent_VendorSpecific_Reserved_Start = 10000,
VREvent_VendorSpecific_Reserved_End = 19999,
@@ -643,6 +800,10 @@ enum EVRButtonId
k_EButton_Dashboard_Back = k_EButton_Grip,
+ k_EButton_Knuckles_A = k_EButton_Grip,
+ k_EButton_Knuckles_B = k_EButton_ApplicationMenu,
+ k_EButton_Knuckles_JoyStick = k_EButton_Axis3,
+
k_EButton_Max = 64
};
@@ -679,7 +840,8 @@ struct VREvent_Scroll_t
};
/** when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger
- is on the touchpad (or just released from it)
+ is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents
+ flag set.
**/
struct VREvent_TouchPadMove_t
{
@@ -718,6 +880,7 @@ struct VREvent_Process_t
struct VREvent_Overlay_t
{
uint64_t overlayHandle;
+ uint64_t devicePath;
};
@@ -750,6 +913,8 @@ struct VREvent_Reserved_t
{
uint64_t reserved0;
uint64_t reserved1;
+ uint64_t reserved2;
+ uint64_t reserved3;
};
struct VREvent_PerformanceTest_t
@@ -796,7 +961,54 @@ struct VREvent_Property_t
ETrackedDeviceProperty prop;
};
-/** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py */
+enum EDualAnalogWhich
+{
+ k_EDualAnalog_Left = 0,
+ k_EDualAnalog_Right = 1,
+};
+
+struct VREvent_DualAnalog_t
+{
+ float x, y; // coordinates are -1..1 analog values
+ float transformedX, transformedY; // transformed by the center and radius numbers provided by the overlay
+ EDualAnalogWhich which;
+};
+
+struct VREvent_HapticVibration_t
+{
+ uint64_t containerHandle; // property container handle of the device with the haptic component
+ uint64_t componentHandle; // Which haptic component needs to vibrate
+ float fDurationSeconds;
+ float fFrequency;
+ float fAmplitude;
+};
+
+struct VREvent_WebConsole_t
+{
+ WebConsoleHandle_t webConsoleHandle;
+};
+
+struct VREvent_InputBindingLoad_t
+{
+ vr::PropertyContainerHandle_t ulAppContainer;
+ uint64_t pathMessage;
+ uint64_t pathUrl;
+ uint64_t pathControllerType;
+};
+
+struct VREvent_InputActionManifestLoad_t
+{
+ uint64_t pathAppKey;
+ uint64_t pathMessage;
+ uint64_t pathMessageParam;
+ uint64_t pathManifestPath;
+};
+
+struct VREvent_SpatialAnchor_t
+{
+ SpatialAnchorHandle_t unHandle;
+};
+
typedef union
{
VREvent_Reserved_t reserved;
@@ -819,6 +1031,13 @@ typedef union
VREvent_EditingCameraSurface_t cameraSurface;
VREvent_MessageOverlay_t messageOverlay;
VREvent_Property_t property;
+ VREvent_DualAnalog_t dualAnalog;
+ VREvent_HapticVibration_t hapticVibration;
+ VREvent_WebConsole_t webConsole;
+ VREvent_InputBindingLoad_t inputBinding;
+ VREvent_InputActionManifestLoad_t actionManifest;
+ VREvent_SpatialAnchor_t spatialAnchor;
+ /** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py */
} VREvent_Data_t;
@@ -842,6 +1061,45 @@ struct VREvent_t
#pragma pack( pop )
#endif
+enum EVRInputError
+{
+ VRInputError_None = 0,
+ VRInputError_NameNotFound = 1,
+ VRInputError_WrongType = 2,
+ VRInputError_InvalidHandle = 3,
+ VRInputError_InvalidParam = 4,
+ VRInputError_NoSteam = 5,
+ VRInputError_MaxCapacityReached = 6,
+ VRInputError_IPCError = 7,
+ VRInputError_NoActiveActionSet = 8,
+ VRInputError_InvalidDevice = 9,
+ VRInputError_InvalidSkeleton = 10,
+ VRInputError_InvalidBoneCount = 11,
+ VRInputError_InvalidCompressedData = 12,
+ VRInputError_NoData = 13,
+ VRInputError_BufferTooSmall = 14,
+ VRInputError_MismatchedActionManifest = 15,
+ VRInputError_MissingSkeletonData = 16,
+};
+
+enum EVRSpatialAnchorError
+{
+ VRSpatialAnchorError_Success = 0,
+ VRSpatialAnchorError_Internal = 1,
+ VRSpatialAnchorError_UnknownHandle = 2,
+ VRSpatialAnchorError_ArrayTooSmall = 3,
+ VRSpatialAnchorError_InvalidDescriptorChar = 4,
+ VRSpatialAnchorError_NotYetAvailable = 5,
+ VRSpatialAnchorError_NotAvailableInThisUniverse = 6,
+ VRSpatialAnchorError_PermanentlyUnavailable = 7,
+ VRSpatialAnchorError_WrongDriver = 8,
+ VRSpatialAnchorError_DescriptorTooLong = 9,
+ VRSpatialAnchorError_Unknown = 10,
+ VRSpatialAnchorError_NoRoomCalibration = 11,
+ VRSpatialAnchorError_InvalidArgument = 12,
+ VRSpatialAnchorError_UnknownDriver = 13,
+};
+
/** The mesh to draw into the stencil (or depth) buffer to perform
* early stencil (or depth) kills of pixels that will never appear on the HMD.
* This mesh draws on all the pixels that will be hidden after distortion.
@@ -979,6 +1237,9 @@ enum EVROverlayError
VROverlayError_NoNeighbor = 27,
VROverlayError_TooManyMaskPrimitives = 29,
VROverlayError_BadMaskPrimitive = 30,
+ VROverlayError_TextureAlreadyLocked = 31,
+ VROverlayError_TextureLockCapacityReached = 32,
+ VROverlayError_TextureNotLocked = 33,
};
/** enum values to pass in to VR_Init to identify whether the application will
@@ -1020,6 +1281,27 @@ enum EVRNotificationError
};
+enum EVRSkeletalMotionRange
+{
+ // The range of motion of the skeleton takes into account any physical limits imposed by
+ // the controller itself. This will tend to be the most accurate pose compared to the user's
+ // actual hand pose, but might not allow a closed fist for example
+ VRSkeletalMotionRange_WithController = 0,
+
+ // Retarget the range of motion provided by the input device to make the hand appear to move
+ // as if it was not holding a controller. eg: map "hand grasping controller" to "closed fist"
+ VRSkeletalMotionRange_WithoutController = 1,
+};
+
+
+/** Holds the transform for a single bone */
+struct VRBoneTransform_t
+{
+ HmdVector4_t position;
+ HmdQuaternionf_t orientation;
+};
+
+
/** error codes returned by Vr_Init */
// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
@@ -1068,7 +1350,9 @@ enum EVRInitError
VRInitError_Init_RebootingBusy = 137,
VRInitError_Init_FirmwareUpdateBusy = 138,
VRInitError_Init_FirmwareRecoveryBusy = 139,
-
+ VRInitError_Init_USBServiceBusy = 140,
+ VRInitError_Init_VRWebHelperStartupFailed = 141,
+ VRInitError_Init_TrackerManagerInitFailed = 142,
VRInitError_Driver_Failed = 200,
VRInitError_Driver_Unknown = 201,
@@ -1102,6 +1386,7 @@ enum EVRInitError
VRInitError_Compositor_UnableToCreateDevice = 405,
VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000,
+ VRInitError_VendorSpecific_WindowsNotInDevMode = 1001,
VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101,
VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102,
@@ -1157,6 +1442,14 @@ enum EVRTrackedCameraError
VRTrackedCameraError_InvalidFrameBufferSize = 115,
};
+enum EVRTrackedCameraFrameLayout
+{
+ EVRTrackedCameraFrameLayout_Mono = 0x0001,
+ EVRTrackedCameraFrameLayout_Stereo = 0x0002,
+ EVRTrackedCameraFrameLayout_VerticalLayout = 0x0010, // Stereo frames are Top/Bottom (left/right)
+ EVRTrackedCameraFrameLayout_HorizontalLayout = 0x0020, // Stereo frames are Left/Right
+};
+
enum EVRTrackedCameraFrameType
{
VRTrackedCameraFrameType_Distorted = 0, // This is the camera video frame size in pixels, still distorted.
@@ -1186,6 +1479,48 @@ typedef uint32_t ScreenshotHandle_t;
static const uint32_t k_unScreenshotHandleInvalid = 0;
+/** Frame timing data provided by direct mode drivers. */
+struct DriverDirectMode_FrameTiming
+{
+ uint32_t m_nSize; // Set to sizeof( DriverDirectMode_FrameTiming )
+ uint32_t m_nNumFramePresents; // number of times frame was presented
+ uint32_t m_nNumMisPresented; // number of times frame was presented on a vsync other than it was originally predicted to
+ uint32_t m_nNumDroppedFrames; // number of additional times previous frame was scanned out (i.e. compositor missed vsync)
+ uint32_t m_nReprojectionFlags;
+};
+
+enum EVSync
+{
+ VSync_None,
+ VSync_WaitRender, // block following render work until vsync
+ VSync_NoWaitRender, // do not block following render work (allow to get started early)
+};
+
+enum EVRMuraCorrectionMode
+{
+ EVRMuraCorrectionMode_Default = 0,
+ EVRMuraCorrectionMode_NoCorrection
+};
+
+/** raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs */
+enum Imu_OffScaleFlags
+{
+ OffScale_AccelX = 0x01,
+ OffScale_AccelY = 0x02,
+ OffScale_AccelZ = 0x04,
+ OffScale_GyroX = 0x08,
+ OffScale_GyroY = 0x10,
+ OffScale_GyroZ = 0x20,
+};
+
+struct ImuSample_t
+{
+ double fSampleTime;
+ HmdVector3d_t vAccel;
+ HmdVector3d_t vGyro;
+ uint32_t unOffScaleFlags;
+};
+
#pragma pack( pop )
// figure out how to import from the VR API dll
@@ -1307,7 +1642,12 @@ class IVRSystem
* pInstance must be the instance the application will use to query for the VkPhysicalDevice. The application
* must create the VkInstance with extensions returned by IVRCompositor::GetVulkanInstanceExtensionsRequired enabled.
* [macOS Only]
- * Returns an id that should be used by the application.
+ * For TextureType_IOSurface returns the id that should be used by the application.
+ * On 10.13+ for TextureType_OpenGL returns the 'registryId' of the renderer which should be used
+ * by the application. See Apple Technical Q&A QA1168 for information on enumerating GL Renderers, and the
+ * new kCGLRPRegistryIDLow and kCGLRPRegistryIDHigh CGLRendererProperty values in the 10.13 SDK.
+ * Pre 10.13 for TextureType_OpenGL returns 0, as there is no dependable way to correlate the HMDs MTLDevice
+ * with a GL Renderer.
*/
virtual void GetOutputDevice( uint64_t *pnDevice, ETextureType textureType, VkInstance_T *pInstance = nullptr ) = 0;
@@ -1380,10 +1720,10 @@ class IVRSystem
*/
virtual void ApplyTransform( TrackedDevicePose_t *pOutputPose, const TrackedDevicePose_t *pTrackedDevicePose, const HmdMatrix34_t *pTransform ) = 0;
- /** Returns the device index associated with a specific role, for example the left hand or the right hand. */
+ /** Returns the device index associated with a specific role, for example the left hand or the right hand. This function is deprecated in favor of the new IVRInput system. */
virtual vr::TrackedDeviceIndex_t GetTrackedDeviceIndexForControllerRole( vr::ETrackedControllerRole unDeviceType ) = 0;
- /** Returns the controller type associated with a device index. */
+ /** Returns the controller type associated with a device index. This function is deprecated in favor of the new IVRInput system. */
virtual vr::ETrackedControllerRole GetControllerRoleForTrackedDeviceIndex( vr::TrackedDeviceIndex_t unDeviceIndex ) = 0;
// ------------------------------------
@@ -1416,6 +1756,11 @@ class IVRSystem
/** Returns a matrix property. If the device index is not valid or the property is not a matrix type, this function will return identity. */
virtual HmdMatrix34_t GetMatrix34TrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ) = 0;
+
+ /** Returns an array of one type of property. If the device index is not valid or the property is not a single value or an array of the specified type,
+ * this function will return 0. Otherwise it returns the number of bytes necessary to hold the array of properties. If unBufferSize is
+ * greater than the returned size and pBuffer is non-NULL, pBuffer is filled with the contents of array of properties. */
+ virtual uint32_t GetArrayTrackedDeviceProperty( vr::TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, PropertyTypeTag_t propType, void *pBuffer, uint32_t unBufferSize, ETrackedPropertyError *pError = 0L ) = 0;
/** Returns a string property. If the device index is not valid or the property is not a string type this function will
* return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing
@@ -1462,35 +1807,39 @@ class IVRSystem
// ------------------------------------
/** Fills the supplied struct with the current state of the controller. Returns false if the controller index
- * is invalid. */
+ * is invalid. This function is deprecated in favor of the new IVRInput system. */
virtual bool GetControllerState( vr::TrackedDeviceIndex_t unControllerDeviceIndex, vr::VRControllerState_t *pControllerState, uint32_t unControllerStateSize ) = 0;
/** fills the supplied struct with the current state of the controller and the provided pose with the pose of
* the controller when the controller state was updated most recently. Use this form if you need a precise controller
- * pose as input to your application when the user presses or releases a button. */
+ * pose as input to your application when the user presses or releases a button. This function is deprecated in favor of the new IVRInput system. */
virtual bool GetControllerStateWithPose( ETrackingUniverseOrigin eOrigin, vr::TrackedDeviceIndex_t unControllerDeviceIndex, vr::VRControllerState_t *pControllerState, uint32_t unControllerStateSize, TrackedDevicePose_t *pTrackedDevicePose ) = 0;
/** Trigger a single haptic pulse on a controller. After this call the application may not trigger another haptic pulse on this controller
- * and axis combination for 5ms. */
+ * and axis combination for 5ms. This function is deprecated in favor of the new IVRInput system. */
virtual void TriggerHapticPulse( vr::TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec ) = 0;
- /** returns the name of an EVRButtonId enum value */
+ /** returns the name of an EVRButtonId enum value. This function is deprecated in favor of the new IVRInput system. */
virtual const char *GetButtonIdNameFromEnum( EVRButtonId eButtonId ) = 0;
- /** returns the name of an EVRControllerAxisType enum value */
+ /** returns the name of an EVRControllerAxisType enum value. This function is deprecated in favor of the new IVRInput system. */
virtual const char *GetControllerAxisTypeNameFromEnum( EVRControllerAxisType eAxisType ) = 0;
- /** Tells OpenVR that this process wants exclusive access to controller button states and button events. Other apps will be notified that
- * they have lost input focus with a VREvent_InputFocusCaptured event. Returns false if input focus could not be captured for
- * some reason. */
- virtual bool CaptureInputFocus() = 0;
+ /** Returns true if this application is receiving input from the system. This would return false if
+ * system-related functionality is consuming the input stream. */
+ virtual bool IsInputAvailable() = 0;
+
+ /** Returns true SteamVR is drawing controllers on top of the application. Applications should consider
+ * not drawing anything attached to the user's hands in this case. */
+ virtual bool IsSteamVRDrawingControllers() = 0;
- /** Tells OpenVR that this process no longer wants exclusive access to button states and button events. Other apps will be notified
- * that input focus has been released with a VREvent_InputFocusReleased event. */
- virtual void ReleaseInputFocus() = 0;
+ /** Returns true if the user has put SteamVR into a mode that is distracting them from the application.
+ * For applications where this is appropriate, the application should pause ongoing activity. */
+ virtual bool ShouldApplicationPause() = 0;
- /** Returns true if input focus is captured by another process. */
- virtual bool IsInputFocusCapturedByAnotherProcess() = 0;
+ /** Returns true if SteamVR is doing significant rendering work and the game should do what it can to reduce
+ * its own workload. One common way to do this is to reduce the size of the render target provided for each eye. */
+ virtual bool ShouldApplicationReduceRenderingWork() = 0;
// ------------------------------------
// Debug Methods
@@ -1499,7 +1848,7 @@ class IVRSystem
/** Sends a request to the driver for the specified device and returns the response. The maximum response size is 32k,
* but this method can be called with a smaller buffer. If the response exceeds the size of the buffer, it is truncated.
* The size of the response including its terminating null is returned. */
- virtual uint32_t DriverDebugRequest( vr::TrackedDeviceIndex_t unDeviceIndex, const char *pchRequest, char *pchResponseBuffer, uint32_t unResponseBufferSize ) = 0;
+ virtual uint32_t DriverDebugRequest( vr::TrackedDeviceIndex_t unDeviceIndex, const char *pchRequest, VR_OUT_STRING() char *pchResponseBuffer, uint32_t unResponseBufferSize ) = 0;
// ------------------------------------
// Firmware methods
@@ -1527,7 +1876,7 @@ class IVRSystem
};
-static const char * const IVRSystem_Version = "IVRSystem_017";
+static const char * const IVRSystem_Version = "IVRSystem_019";
}
@@ -1582,6 +1931,7 @@ namespace vr
VRApplicationProperty_NewsURL_String = 51,
VRApplicationProperty_ImagePath_String = 52,
VRApplicationProperty_Source_String = 53,
+ VRApplicationProperty_ActionManifestURL_String = 54,
VRApplicationProperty_IsDashboardOverlay_Bool = 60,
VRApplicationProperty_IsTemplate_Bool = 61,
@@ -1639,7 +1989,7 @@ namespace vr
/** Returns the key of the application for the specified Process Id. The buffer should be at least
* k_unMaxApplicationKeyLength in order to fit the key. */
- virtual EVRApplicationError GetApplicationKeyByProcessId( uint32_t unProcessId, char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0;
+ virtual EVRApplicationError GetApplicationKeyByProcessId( uint32_t unProcessId, VR_OUT_STRING() char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0;
/** Launches the application. The existing scene application will exit and then the new application will start.
* This call is not valid for dashboard overlay applications. */
@@ -1693,21 +2043,21 @@ namespace vr
virtual EVRApplicationError SetDefaultApplicationForMimeType( const char *pchAppKey, const char *pchMimeType ) = 0;
/** return the app key that will open this mime type */
- virtual bool GetDefaultApplicationForMimeType( const char *pchMimeType, char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0;
+ virtual bool GetDefaultApplicationForMimeType( const char *pchMimeType, VR_OUT_STRING() char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0;
/** Get the list of supported mime types for this application, comma-delimited */
- virtual bool GetApplicationSupportedMimeTypes( const char *pchAppKey, char *pchMimeTypesBuffer, uint32_t unMimeTypesBuffer ) = 0;
+ virtual bool GetApplicationSupportedMimeTypes( const char *pchAppKey, VR_OUT_STRING() char *pchMimeTypesBuffer, uint32_t unMimeTypesBuffer ) = 0;
/** Get the list of app-keys that support this mime type, comma-delimited, the return value is number of bytes you need to return the full string */
- virtual uint32_t GetApplicationsThatSupportMimeType( const char *pchMimeType, char *pchAppKeysThatSupportBuffer, uint32_t unAppKeysThatSupportBuffer ) = 0;
+ virtual uint32_t GetApplicationsThatSupportMimeType( const char *pchMimeType, VR_OUT_STRING() char *pchAppKeysThatSupportBuffer, uint32_t unAppKeysThatSupportBuffer ) = 0;
/** Get the args list from an app launch that had the process already running, you call this when you get a VREvent_ApplicationMimeTypeLoad */
- virtual uint32_t GetApplicationLaunchArguments( uint32_t unHandle, char *pchArgs, uint32_t unArgs ) = 0;
+ virtual uint32_t GetApplicationLaunchArguments( uint32_t unHandle, VR_OUT_STRING() char *pchArgs, uint32_t unArgs ) = 0;
// --------------- Transition methods --------------- //
/** Returns the app key for the application that is starting up */
- virtual EVRApplicationError GetStartingApplication( char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0;
+ virtual EVRApplicationError GetStartingApplication( VR_OUT_STRING() char *pchAppKeyBuffer, uint32_t unAppKeyBufferLen ) = 0;
/** Returns the application transition state */
virtual EVRApplicationTransitionState GetTransitionState() = 0;
@@ -1747,6 +2097,8 @@ namespace vr
} // namespace vr
// ivrsettings.h
+#include
+
namespace vr
{
enum EVRSettingsError
@@ -1789,6 +2141,88 @@ namespace vr
//-----------------------------------------------------------------------------
static const char * const IVRSettings_Version = "IVRSettings_002";
+ class CVRSettingHelper
+ {
+ IVRSettings *m_pSettings = nullptr;
+ public:
+ CVRSettingHelper( IVRSettings *pSettings )
+ {
+ m_pSettings = pSettings;
+ }
+
+ const char *GetSettingsErrorNameFromEnum( EVRSettingsError eError )
+ {
+ return m_pSettings->GetSettingsErrorNameFromEnum( eError );
+ }
+
+ // Returns true if file sync occurred (force or settings dirty)
+ bool Sync( bool bForce = false, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->Sync( bForce, peError );
+ }
+
+ void SetBool( const char *pchSection, const char *pchSettingsKey, bool bValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetBool( pchSection, pchSettingsKey, bValue, peError );
+ }
+
+ void SetInt32( const char *pchSection, const char *pchSettingsKey, int32_t nValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetInt32( pchSection, pchSettingsKey, nValue, peError );
+ }
+ void SetFloat( const char *pchSection, const char *pchSettingsKey, float flValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetFloat( pchSection, pchSettingsKey, flValue, peError );
+ }
+ void SetString( const char *pchSection, const char *pchSettingsKey, const char *pchValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetString( pchSection, pchSettingsKey, pchValue, peError );
+ }
+ void SetString( const std::string & sSection, const std::string & sSettingsKey, const std::string & sValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetString( sSection.c_str(), sSettingsKey.c_str(), sValue.c_str(), peError );
+ }
+
+ bool GetBool( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->GetBool( pchSection, pchSettingsKey, peError );
+ }
+ int32_t GetInt32( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->GetInt32( pchSection, pchSettingsKey, peError );
+ }
+ float GetFloat( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->GetFloat( pchSection, pchSettingsKey, peError );
+ }
+ void GetString( const char *pchSection, const char *pchSettingsKey, VR_OUT_STRING() char *pchValue, uint32_t unValueLen, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->GetString( pchSection, pchSettingsKey, pchValue, unValueLen, peError );
+ }
+ std::string GetString( const std::string & sSection, const std::string & sSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ char buf[4096];
+ vr::EVRSettingsError eError;
+ m_pSettings->GetString( sSection.c_str(), sSettingsKey.c_str(), buf, sizeof( buf ), &eError );
+ if ( peError )
+ *peError = eError;
+ if ( eError == vr::VRSettingsError_None )
+ return buf;
+ else
+ return "";
+ }
+
+ void RemoveSection( const char *pchSection, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->RemoveSection( pchSection, peError );
+ }
+ void RemoveKeyInSection( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->RemoveKeyInSection( pchSection, pchSettingsKey, peError );
+ }
+ };
+
+
//-----------------------------------------------------------------------------
// steamvr keys
static const char * const k_pch_SteamVR_Section = "steamvr";
@@ -1834,16 +2268,28 @@ namespace vr
static const char * const k_pch_SteamVR_RetailDemo_Bool = "retailDemo";
static const char * const k_pch_SteamVR_IpdOffset_Float = "ipdOffset";
static const char * const k_pch_SteamVR_AllowSupersampleFiltering_Bool = "allowSupersampleFiltering";
+ static const char * const k_pch_SteamVR_SupersampleManualOverride_Bool = "supersampleManualOverride";
static const char * const k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = "enableLinuxVulkanAsync";
+ static const char * const k_pch_SteamVR_AllowDisplayLockedMode_Bool = "allowDisplayLockedMode";
+ static const char * const k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool = "haveStartedTutorialForNativeChaperoneDriver";
+ static const char * const k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor";
+ static const char * const k_pch_SteamVR_DebugInput = "debugInput";
+ static const char * const k_pch_SteamVR_LegacyInputRebinding = "legacyInputRebinding";
+ static const char * const k_pch_SteamVR_DebugInputBinding = "debugInputBinding";
+ static const char * const k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI";
+ static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode";
//-----------------------------------------------------------------------------
// lighthouse keys
static const char * const k_pch_Lighthouse_Section = "driver_lighthouse";
static const char * const k_pch_Lighthouse_DisableIMU_Bool = "disableimu";
+ static const char * const k_pch_Lighthouse_DisableIMUExceptHMD_Bool = "disableimuexcepthmd";
static const char * const k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation";
static const char * const k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug";
static const char * const k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation";
static const char * const k_pch_Lighthouse_DBHistory_Bool = "dbhistory";
+ static const char * const k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth";
+ static const char * const k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations";
//-----------------------------------------------------------------------------
// null keys
@@ -1919,6 +2365,7 @@ namespace vr
static const char * const k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB";
static const char * const k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA";
static const char * const k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength";
+ static const char * const k_pch_Camera_RoomViewMode_Int32 = "cameraRoomViewMode";
//-----------------------------------------------------------------------------
// audio keys
@@ -1945,6 +2392,9 @@ namespace vr
static const char * const k_pch_Dashboard_Section = "dashboard";
static const char * const k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard";
static const char * const k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode";
+ static const char * const k_pch_Dashboard_EnableWebUI = "webUI";
+ static const char * const k_pch_Dashboard_EnableWebUIDevTools = "webUIDevTools";
+ static const char * const k_pch_Dashboard_EnableWebUIDashboardReplacement = "webUIDashboard";
//-----------------------------------------------------------------------------
// model skin keys
@@ -1954,6 +2404,28 @@ namespace vr
// driver keys - These could be checked in any driver_ section
static const char * const k_pch_Driver_Enable_Bool = "enable";
+ //-----------------------------------------------------------------------------
+ // web interface keys
+ static const char* const k_pch_WebInterface_Section = "WebInterface";
+ static const char* const k_pch_WebInterface_WebEnable_Bool = "WebEnable";
+ static const char* const k_pch_WebInterface_WebPort_String = "WebPort";
+
+ //-----------------------------------------------------------------------------
+ // tracking overrides - keys are device paths, values are the device paths their
+ // tracking/pose information overrides
+ static const char* const k_pch_TrackingOverride_Section = "TrackingOverrides";
+
+ //-----------------------------------------------------------------------------
+ // per-app keys - the section name for these is the app key itself. Some of these are prefixed by the controller type
+ static const char* const k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL";
+ static const char* const k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL";
+ static const char* const k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave";
+ static const char* const k_pch_App_ActionManifestURL_String = "ActionManifestURL";
+
+ //-----------------------------------------------------------------------------
+ // configuration for trackers
+ static const char * const k_pch_Trackers_Section = "trackers";
+
} // namespace vr
// ivrchaperone.h
@@ -2140,6 +2612,14 @@ enum EVRCompositorError
VRCompositorError_InvalidBounds = 109,
};
+/** Timing mode passed to SetExplicitTimingMode(); see that function for documentation */
+enum EVRCompositorTimingMode
+{
+ VRCompositorTimingMode_Implicit = 0,
+ VRCompositorTimingMode_Explicit_RuntimePerformsPostPresentHandoff = 1,
+ VRCompositorTimingMode_Explicit_ApplicationPerformsPostPresentHandoff = 2,
+};
+
const uint32_t VRCompositor_ReprojectionReason_Cpu = 0x01;
const uint32_t VRCompositor_ReprojectionReason_Gpu = 0x02;
const uint32_t VRCompositor_ReprojectionAsync = 0x04; // This flag indicates the async reprojection mode is active,
@@ -2350,7 +2830,7 @@ class IVRCompositor
/** Returns true if the mirror window is shown. */
virtual bool IsMirrorWindowVisible() = 0;
- /** Writes all images that the compositor knows about (including overlays) to a 'screenshots' folder in the SteamVR runtime root. */
+ /** Writes back buffer and stereo left/right pair from the application to a 'screenshots' folder in the SteamVR runtime root. */
virtual void CompositorDumpImages() = 0;
/** Let an app know it should be rendering with low resources. */
@@ -2400,11 +2880,11 @@ class IVRCompositor
* Vulkan/D3D12 as it is for D3D11, resulting in a more accurate GPU time measurement for the frame.
*
* Avoiding WaitGetPoses accessing the Vulkan queue can be achieved using SetExplicitTimingMode as well. If this is desired,
- * the application *MUST* call PostPresentHandoff itself prior to WaitGetPoses. If SetExplicitTimingMode is true and the
- * application calls PostPresentHandoff, then WaitGetPoses is guaranteed not to access the queue. Note that PostPresentHandoff
+ * the application should set the timing mode to Explicit_ApplicationPerformsPostPresentHandoff and *MUST* call PostPresentHandoff
+ * itself. If these conditions are met, then WaitGetPoses is guaranteed not to access the queue. Note that PostPresentHandoff
* and SubmitExplicitTimingData will access the queue, so only WaitGetPoses becomes safe for accessing the queue from another
* thread. */
- virtual void SetExplicitTimingMode( bool bExplicitTimingMode ) = 0;
+ virtual void SetExplicitTimingMode( EVRCompositorTimingMode eTimingMode ) = 0;
/** [ Vulkan/D3D12 Only ]
* Submit explicit timing data. When SetExplicitTimingMode is true, this must be called immediately before
@@ -2415,7 +2895,7 @@ class IVRCompositor
virtual EVRCompositorError SubmitExplicitTimingData() = 0;
};
-static const char * const IVRCompositor_Version = "IVRCompositor_021";
+static const char * const IVRCompositor_Version = "IVRCompositor_022";
} // namespace vr
@@ -2531,6 +3011,7 @@ namespace vr
{
VROverlayInputMethod_None = 0, // No input events will be generated automatically for this overlay
VROverlayInputMethod_Mouse = 1, // Tracked controllers will get mouse events automatically
+ VROverlayInputMethod_DualAnalog = 2, // Analog inputs from tracked controllers are turned into DualAnalog events
};
/** Allows the caller to figure out which overlay transform getter to call. */
@@ -2798,7 +3279,7 @@ namespace vr
virtual EVROverlayError GetOverlayTextureBounds( VROverlayHandle_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds ) = 0;
/** Gets render model to draw behind this overlay */
- virtual uint32_t GetOverlayRenderModel( vr::VROverlayHandle_t ulOverlayHandle, char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, vr::EVROverlayError *pError ) = 0;
+ virtual uint32_t GetOverlayRenderModel( vr::VROverlayHandle_t ulOverlayHandle, VR_OUT_STRING() char *pchValue, uint32_t unBufferSize, HmdColor_t *pColor, vr::EVROverlayError *pError ) = 0;
/** Sets render model to draw behind this overlay and the vertex color to use, pass null for pColor to match the overlays vertex color.
The model is scaled by the same amount as the overlay, with a default of 1m. */
@@ -2824,7 +3305,7 @@ namespace vr
virtual EVROverlayError SetOverlayTransformTrackedDeviceComponent( VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unDeviceIndex, const char *pchComponentName ) = 0;
/** Gets the transform information when the overlay is rendering on a component. */
- virtual EVROverlayError GetOverlayTransformTrackedDeviceComponent( VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t *punDeviceIndex, char *pchComponentName, uint32_t unComponentNameSize ) = 0;
+ virtual EVROverlayError GetOverlayTransformTrackedDeviceComponent( VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t *punDeviceIndex, VR_OUT_STRING() char *pchComponentName, uint32_t unComponentNameSize ) = 0;
/** Gets the transform if it is relative to another overlay. Returns an error if the transform is some other type. */
virtual vr::EVROverlayError GetOverlayTransformOverlayRelative( VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform ) = 0;
@@ -2870,13 +3351,6 @@ namespace vr
* specified settings. Returns false if there is no intersection. */
virtual bool ComputeOverlayIntersection( VROverlayHandle_t ulOverlayHandle, const VROverlayIntersectionParams_t *pParams, VROverlayIntersectionResults_t *pResults ) = 0;
- /** Processes mouse input from the specified controller as though it were a mouse pointed at a compositor overlay with the
- * specified settings. The controller is treated like a laser pointer on the -z axis. The point where the laser pointer would
- * intersect with the overlay is the mouse position, the trigger is left mouse, and the track pad is right mouse.
- *
- * Return true if the controller is pointed at the overlay and an event was generated. */
- virtual bool HandleControllerOverlayInteractionAsMouse( VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unControllerDeviceIndex ) = 0;
-
/** Returns true if the specified overlay is the hover target. An overlay is the hover target when it is the last overlay "moused over"
* by the virtual mouse pointer */
virtual bool IsHoverTargetOverlay( VROverlayHandle_t ulOverlayHandle ) = 0;
@@ -2896,6 +3370,12 @@ namespace vr
* neighbor in that direction */
virtual EVROverlayError MoveGamepadFocusToNeighbor( EOverlayDirection eDirection, VROverlayHandle_t ulFrom ) = 0;
+ /** Sets the analog input to Dual Analog coordinate scale for the specified overlay. */
+ virtual EVROverlayError SetOverlayDualAnalogTransform( VROverlayHandle_t ulOverlay, EDualAnalogWhich eWhich, const HmdVector2_t & vCenter, float fRadius ) = 0;
+
+ /** Gets the analog input to Dual Analog coordinate scale for the specified overlay. */
+ virtual EVROverlayError GetOverlayDualAnalogTransform( VROverlayHandle_t ulOverlay, EDualAnalogWhich eWhich, HmdVector2_t *pvCenter, float *pfRadius ) = 0;
+
// ---------------------------------------------
// Overlay texture methods
// ---------------------------------------------
@@ -3005,7 +3485,7 @@ namespace vr
virtual void CloseMessageOverlay() = 0;
};
- static const char * const IVROverlay_Version = "IVROverlay_016";
+ static const char * const IVROverlay_Version = "IVROverlay_018";
} // namespace vr
@@ -3193,6 +3673,9 @@ class IVRRenderModels
* If the pchRenderModelName or pchComponentName is invalid, this will return false (and transforms will be set to identity).
* Otherwise, return true
* Note: For dynamic objects, visibility may be dynamic. (I.e., true/false will be returned based on controller state and controller mode state ) */
+ virtual bool GetComponentStateForDevicePath( const char *pchRenderModelName, const char *pchComponentName, vr::VRInputValueHandle_t devicePath, const vr::RenderModel_ControllerMode_State_t *pState, vr::RenderModel_ComponentState_t *pComponentState ) = 0;
+
+ /** This version of GetComponentState takes a controller state block instead of an action origin. This function is deprecated. You should use the new input system and GetComponentStateForDevicePath instead. */
virtual bool GetComponentState( const char *pchRenderModelName, const char *pchComponentName, const vr::VRControllerState_t *pControllerState, const RenderModel_ControllerMode_State_t *pState, RenderModel_ComponentState_t *pComponentState ) = 0;
/** Returns true if the render model has a component with the specified name */
@@ -3210,7 +3693,7 @@ class IVRRenderModels
virtual const char *GetRenderModelErrorNameFromEnum( vr::EVRRenderModelError error ) = 0;
};
-static const char * const IVRRenderModels_Version = "IVRRenderModels_005";
+static const char * const IVRRenderModels_Version = "IVRRenderModels_006";
}
@@ -3425,7 +3908,7 @@ class IVRResources
/** Provides the full path to the specified resource. Resource names can include named directories for
* drivers and other things, and this resolves all of those and returns the actual physical path.
* pchResourceTypeDirectory is the subdirectory of resources to look in. */
- virtual uint32_t GetResourceFullPath( const char *pchResourceName, const char *pchResourceTypeDirectory, char *pchPathBuffer, uint32_t unBufferLen ) = 0;
+ virtual uint32_t GetResourceFullPath( const char *pchResourceName, const char *pchResourceTypeDirectory, VR_OUT_STRING() char *pchPathBuffer, uint32_t unBufferLen ) = 0;
};
static const char * const IVRResources_Version = "IVRResources_001";
@@ -3443,6 +3926,8 @@ class IVRDriverManager
/** Returns the length of the number of bytes necessary to hold this string including the trailing null. */
virtual uint32_t GetDriverName( vr::DriverId_t nDriver, VR_OUT_STRING() char *pchValue, uint32_t unBufferSize ) = 0;
+
+ virtual DriverHandle_t GetDriverHandle( const char *pchDriverName ) = 0;
};
static const char * const IVRDriverManager_Version = "IVRDriverManager_001";
@@ -3450,6 +3935,301 @@ static const char * const IVRDriverManager_Version = "IVRDriverManager_001";
} // namespace vr
+
+// ivrinput.h
+namespace vr
+{
+
+ static const uint32_t k_unMaxActionNameLength = 64;
+ static const uint32_t k_unMaxActionSetNameLength = 64;
+ static const uint32_t k_unMaxActionOriginCount = 16;
+
+ struct InputAnalogActionData_t
+ {
+ // Whether or not this action is currently available to be bound in the active action set
+ bool bActive;
+
+ // The origin that caused this action's current state
+ VRInputValueHandle_t activeOrigin;
+
+ // The current state of this action; will be delta updates for mouse actions
+ float x, y, z;
+
+ // Deltas since the previous call to UpdateActionState()
+ float deltaX, deltaY, deltaZ;
+
+ // Time relative to now when this event happened. Will be negative to indicate a past time.
+ float fUpdateTime;
+ };
+
+ struct InputDigitalActionData_t
+ {
+ // Whether or not this action is currently available to be bound in the active action set
+ bool bActive;
+
+ // The origin that caused this action's current state
+ VRInputValueHandle_t activeOrigin;
+
+ // The current state of this action; will be true if currently pressed
+ bool bState;
+
+ // This is true if the state has changed since the last frame
+ bool bChanged;
+
+ // Time relative to now when this event happened. Will be negative to indicate a past time.
+ float fUpdateTime;
+ };
+
+ struct InputPoseActionData_t
+ {
+ // Whether or not this action is currently available to be bound in the active action set
+ bool bActive;
+
+ // The origin that caused this action's current state
+ VRInputValueHandle_t activeOrigin;
+
+ // The current state of this action
+ TrackedDevicePose_t pose;
+ };
+
+ struct InputSkeletalActionData_t
+ {
+ // Whether or not this action is currently available to be bound in the active action set
+ bool bActive;
+
+ // The origin that caused this action's current state
+ VRInputValueHandle_t activeOrigin;
+
+ // The number of bones in the skeletal data
+ uint32_t boneCount;
+ };
+
+ enum EVRSkeletalTransformSpace
+ {
+ VRSkeletalTransformSpace_Model = 0,
+ VRSkeletalTransformSpace_Parent = 1,
+ VRSkeletalTransformSpace_Additive = 2,
+ };
+
+ enum EVRInputFilterCancelType
+ {
+ VRInputFilterCancel_Timers = 0,
+ VRInputFilterCancel_Momentum = 1,
+ };
+
+ struct InputOriginInfo_t
+ {
+ VRInputValueHandle_t devicePath;
+ TrackedDeviceIndex_t trackedDeviceIndex;
+ char rchRenderModelComponentName[128];
+ };
+
+ struct VRActiveActionSet_t
+ {
+ /** This is the handle of the action set to activate for this frame. */
+ VRActionSetHandle_t ulActionSet;
+
+ /** This is the handle of a device path that this action set should be active for. To
+ * activate for all devices, set this to k_ulInvalidInputValueHandle. */
+ VRInputValueHandle_t ulRestrictedToDevice;
+
+ /** The action set to activate for all devices other than ulRestrictedDevice. If
+ * ulRestrictedToDevice is set to k_ulInvalidInputValueHandle, this parameter is
+ * ignored. */
+ VRActionSetHandle_t ulSecondaryActionSet;
+
+ // This field is ignored
+ uint32_t unPadding;
+
+ /** The priority of this action set relative to other action sets. Any inputs
+ * bound to a source (e.g. trackpad, joystick, trigger) will disable bindings in
+ * other active action sets with a smaller priority. */
+ int32_t nPriority;
+ };
+
+
+ class IVRInput
+ {
+ public:
+
+ // --------------- Handle management --------------- //
+
+ /** Sets the path to the action manifest JSON file that is used by this application. If this information
+ * was set on the Steam partner site, calls to this function are ignored. If the Steam partner site
+ * setting and the path provided by this call are different, VRInputError_MismatchedActionManifest is returned.
+ * This call must be made before the first call to UpdateActionState or IVRSystem::PollNextEvent. */
+ virtual EVRInputError SetActionManifestPath( const char *pchActionManifestPath ) = 0;
+
+ /** Returns a handle for an action set. This handle is used for all performance-sensitive calls. */
+ virtual EVRInputError GetActionSetHandle( const char *pchActionSetName, VRActionSetHandle_t *pHandle ) = 0;
+
+ /** Returns a handle for an action. This handle is used for all performance-sensitive calls. */
+ virtual EVRInputError GetActionHandle( const char *pchActionName, VRActionHandle_t *pHandle ) = 0;
+
+ /** Returns a handle for any path in the input system. E.g. /user/hand/right */
+ virtual EVRInputError GetInputSourceHandle( const char *pchInputSourcePath, VRInputValueHandle_t *pHandle ) = 0;
+
+ // --------------- Reading action state ------------------- //
+
+ /** Reads the current state into all actions. After this call, the results of Get*Action calls
+ * will be the same until the next call to UpdateActionState. */
+ virtual EVRInputError UpdateActionState( VR_ARRAY_COUNT( unSetCount ) VRActiveActionSet_t *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount ) = 0;
+
+ /** Reads the state of a digital action given its handle. This will return VRInputError_WrongType if the type of
+ * action is something other than digital */
+ virtual EVRInputError GetDigitalActionData( VRActionHandle_t action, InputDigitalActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0;
+
+ /** Reads the state of an analog action given its handle. This will return VRInputError_WrongType if the type of
+ * action is something other than analog */
+ virtual EVRInputError GetAnalogActionData( VRActionHandle_t action, InputAnalogActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0;
+
+ /** Reads the state of a pose action given its handle. */
+ virtual EVRInputError GetPoseActionData( VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, InputPoseActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0;
+
+ /** Reads the state of a skeletal action given its handle. */
+ virtual EVRInputError GetSkeletalActionData( VRActionHandle_t action, InputSkeletalActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0;
+
+ // --------------- Skeletal Bone Data ------------------- //
+
+ /** Reads the state of the skeletal bone data associated with this action and copies it into the given buffer. */
+ virtual EVRInputError GetSkeletalBoneData( VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, VR_ARRAY_COUNT( unTransformArrayCount ) VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount, VRInputValueHandle_t ulRestrictToDevice ) = 0;
+
+ /** Reads the state of the skeletal bone data in a compressed form that is suitable for
+ * sending over the network. The required buffer size will never exceed ( sizeof(VR_BoneTransform_t)*boneCount + 2).
+ * Usually the size will be much smaller. */
+ virtual EVRInputError GetSkeletalBoneDataCompressed( VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, VR_OUT_BUFFER_COUNT( unCompressedSize ) void *pvCompressedData, uint32_t unCompressedSize, uint32_t *punRequiredCompressedSize, VRInputValueHandle_t ulRestrictToDevice ) = 0;
+
+ /** Turns a compressed buffer from GetSkeletalBoneDataCompressed and turns it back into a bone transform array. */
+ virtual EVRInputError DecompressSkeletalBoneData( void *pvCompressedBuffer, uint32_t unCompressedBufferSize, EVRSkeletalTransformSpace *peTransformSpace, VR_ARRAY_COUNT( unTransformArrayCount ) VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount ) = 0;
+
+ // --------------- Haptics ------------------- //
+
+ /** Triggers a haptic event as described by the specified action */
+ virtual EVRInputError TriggerHapticVibrationAction( VRActionHandle_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, VRInputValueHandle_t ulRestrictToDevice ) = 0;
+
+ // --------------- Action Origins ---------------- //
+
+ /** Retrieve origin handles for an action */
+ virtual EVRInputError GetActionOrigins( VRActionSetHandle_t actionSetHandle, VRActionHandle_t digitalActionHandle, VR_ARRAY_COUNT( originOutCount ) VRInputValueHandle_t *originsOut, uint32_t originOutCount ) = 0;
+
+ /** Retrieves the name of the origin in the current language */
+ virtual EVRInputError GetOriginLocalizedName( VRInputValueHandle_t origin, VR_OUT_STRING() char *pchNameArray, uint32_t unNameArraySize ) = 0;
+
+ /** Retrieves useful information for the origin of this action */
+ virtual EVRInputError GetOriginTrackedDeviceInfo( VRInputValueHandle_t origin, InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize ) = 0;
+
+ /** Shows the current binding for the action in-headset */
+ virtual EVRInputError ShowActionOrigins( VRActionSetHandle_t actionSetHandle, VRActionHandle_t ulActionHandle ) = 0;
+
+ /** Shows the current binding all the actions in the specified action sets */
+ virtual EVRInputError ShowBindingsForActionSet( VR_ARRAY_COUNT( unSetCount ) VRActiveActionSet_t *pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, VRInputValueHandle_t originToHighlight ) = 0;
+ };
+
+ static const char * const IVRInput_Version = "IVRInput_004";
+
+} // namespace vr
+
+// ivriobuffer.h
+namespace vr
+{
+
+typedef uint64_t IOBufferHandle_t;
+static const uint64_t k_ulInvalidIOBufferHandle = 0;
+
+ enum EIOBufferError
+ {
+ IOBuffer_Success = 0,
+ IOBuffer_OperationFailed = 100,
+ IOBuffer_InvalidHandle = 101,
+ IOBuffer_InvalidArgument = 102,
+ IOBuffer_PathExists = 103,
+ IOBuffer_PathDoesNotExist = 104,
+ IOBuffer_Permission = 105,
+ };
+
+ enum EIOBufferMode
+ {
+ IOBufferMode_Read = 0x0001,
+ IOBufferMode_Write = 0x0002,
+ IOBufferMode_Create = 0x0200,
+ };
+
+ // ----------------------------------------------------------------------------------------------
+ // Purpose:
+ // ----------------------------------------------------------------------------------------------
+ class IVRIOBuffer
+ {
+ public:
+ /** opens an existing or creates a new IOBuffer of unSize bytes */
+ virtual vr::EIOBufferError Open( const char *pchPath, vr::EIOBufferMode mode, uint32_t unElementSize, uint32_t unElements, vr::IOBufferHandle_t *pulBuffer ) = 0;
+
+ /** closes a previously opened or created buffer */
+ virtual vr::EIOBufferError Close( vr::IOBufferHandle_t ulBuffer ) = 0;
+
+ /** reads up to unBytes from buffer into *pDst, returning number of bytes read in *punRead */
+ virtual vr::EIOBufferError Read( vr::IOBufferHandle_t ulBuffer, void *pDst, uint32_t unBytes, uint32_t *punRead ) = 0;
+
+ /** writes unBytes of data from *pSrc into a buffer. */
+ virtual vr::EIOBufferError Write( vr::IOBufferHandle_t ulBuffer, void *pSrc, uint32_t unBytes ) = 0;
+
+ /** retrieves the property container of an buffer. */
+ virtual vr::PropertyContainerHandle_t PropertyContainer( vr::IOBufferHandle_t ulBuffer ) = 0;
+ };
+
+ static const char *IVRIOBuffer_Version = "IVRIOBuffer_001";
+}
+
+// ivrspatialanchors.h
+namespace vr
+{
+ static const SpatialAnchorHandle_t k_ulInvalidSpatialAnchorHandle = 0;
+
+ struct SpatialAnchorPose_t
+ {
+ HmdMatrix34_t mAnchorToAbsoluteTracking;
+ };
+
+ class IVRSpatialAnchors
+ {
+ public:
+
+ /** Returns a handle for an spatial anchor described by "descriptor". On success, pHandle
+ * will contain a handle valid for this session. Caller can wait for an event or occasionally
+ * poll GetSpatialAnchorPose() to find the virtual coordinate associated with this anchor. */
+ virtual EVRSpatialAnchorError CreateSpatialAnchorFromDescriptor( const char *pchDescriptor, SpatialAnchorHandle_t *pHandleOut ) = 0;
+
+ /** Returns a handle for an new spatial anchor at pPose. On success, pHandle
+ * will contain a handle valid for this session. Caller can wait for an event or occasionally
+ * poll GetSpatialAnchorDescriptor() to find the permanent descriptor for this pose.
+ * The result of GetSpatialAnchorPose() may evolve from this initial position if the driver chooses
+ * to update it.
+ * The anchor will be associated with the driver that provides unDeviceIndex, and the driver may use that specific
+ * device as a hint for how to best create the anchor.
+ * The eOrigin must match whatever tracking origin you are working in (seated/standing/raw).
+ * This should be called when the user is close to (and ideally looking at/interacting with) the target physical
+ * location. At that moment, the driver will have the most information about how to recover that physical point
+ * in the future, and the quality of the anchor (when the descriptor is re-used) will be highest.
+ * The caller may decide to apply offsets from this initial pose, but is advised to stay relatively close to the
+ * original pose location for highest fidelity. */
+ virtual EVRSpatialAnchorError CreateSpatialAnchorFromPose( TrackedDeviceIndex_t unDeviceIndex, ETrackingUniverseOrigin eOrigin, SpatialAnchorPose_t *pPose, SpatialAnchorHandle_t *pHandleOut ) = 0;
+
+ /** Get the pose for a given handle. This is intended to be cheap enough to call every frame (or fairly often)
+ * so that the driver can refine this position when it has more information available. */
+ virtual EVRSpatialAnchorError GetSpatialAnchorPose( SpatialAnchorHandle_t unHandle, ETrackingUniverseOrigin eOrigin, SpatialAnchorPose_t *pPoseOut ) = 0;
+
+ /** Get the descriptor for a given handle. This will be empty for handles where the driver has not
+ * yet built a descriptor. It will be the application-supplied descriptor for previously saved anchors
+ * that the application is requesting poses for. If the driver has called UpdateSpatialAnchorDescriptor()
+ * already in this session, it will be the descriptor provided by the driver.
+ * Returns true if the descriptor fits into the buffer, else false. Buffer size should be at least
+ * k_unMaxSpatialAnchorDescriptorSize. */
+ virtual EVRSpatialAnchorError GetSpatialAnchorDescriptor( SpatialAnchorHandle_t unHandle, VR_OUT_STRING() char *pchDescriptorOut, uint32_t *punDescriptorBufferLenInOut ) = 0;
+
+ };
+
+ static const char * const IVRSpatialAnchors_Version = "IVRSpatialAnchors_001";
+
+} // namespace vr
// End
#endif // _OPENVR_API
@@ -3457,6 +4237,8 @@ static const char * const IVRDriverManager_Version = "IVRDriverManager_001";
namespace vr
{
+#if !defined( OPENVR_INTERFACE_INTERNAL )
+
/** Finds the active installation of the VR API and initializes it. The provided path must be absolute
* or relative to the current working directory. These are the local install versions of the equivalent
* functions in steamvr.h and will work without a local Steam install.
@@ -3684,6 +4466,38 @@ namespace vr
return m_pVRDriverManager;
}
+ IVRInput *VRInput()
+ {
+ CheckClear();
+ if ( !m_pVRInput )
+ {
+ EVRInitError eError;
+ m_pVRInput = (IVRInput *)VR_GetGenericInterface( IVRInput_Version, &eError );
+ }
+ return m_pVRInput;
+ }
+
+ IVRSpatialAnchors *VRSpatialAnchors()
+ {
+ CheckClear();
+ if ( !m_pVRSpatialAnchors )
+ {
+ EVRInitError eError;
+ m_pVRSpatialAnchors = (IVRSpatialAnchors *)VR_GetGenericInterface( IVRSpatialAnchors_Version, &eError );
+ }
+ return m_pVRSpatialAnchors;
+ }
+
+ IVRIOBuffer *VRIOBuffer()
+ {
+ if ( !m_pVRIOBuffer )
+ {
+ EVRInitError eError;
+ m_pVRIOBuffer = ( IVRIOBuffer * )VR_GetGenericInterface( IVRIOBuffer_Version, &eError );
+ }
+ return m_pVRIOBuffer;
+ }
+
private:
IVRSystem *m_pVRSystem;
IVRChaperone *m_pVRChaperone;
@@ -3698,6 +4512,9 @@ namespace vr
IVRTrackedCamera *m_pVRTrackedCamera;
IVRScreenshots *m_pVRScreenshots;
IVRDriverManager *m_pVRDriverManager;
+ IVRInput *m_pVRInput;
+ IVRIOBuffer *m_pVRIOBuffer;
+ IVRSpatialAnchors *m_pVRSpatialAnchors;
};
inline COpenVRContext &OpenVRInternal_ModuleContext()
@@ -3719,6 +4536,9 @@ namespace vr
inline IVRExtendedDisplay *VR_CALLTYPE VRExtendedDisplay() { return OpenVRInternal_ModuleContext().VRExtendedDisplay(); }
inline IVRTrackedCamera *VR_CALLTYPE VRTrackedCamera() { return OpenVRInternal_ModuleContext().VRTrackedCamera(); }
inline IVRDriverManager *VR_CALLTYPE VRDriverManager() { return OpenVRInternal_ModuleContext().VRDriverManager(); }
+ inline IVRInput *VR_CALLTYPE VRInput() { return OpenVRInternal_ModuleContext().VRInput(); }
+ inline IVRIOBuffer *VR_CALLTYPE VRIOBuffer() { return OpenVRInternal_ModuleContext().VRIOBuffer(); }
+ inline IVRSpatialAnchors *VR_CALLTYPE VRSpatialAnchors() { return OpenVRInternal_ModuleContext().VRSpatialAnchors(); }
inline void COpenVRContext::Clear()
{
@@ -3735,6 +4555,9 @@ namespace vr
m_pVRResources = nullptr;
m_pVRScreenshots = nullptr;
m_pVRDriverManager = nullptr;
+ m_pVRInput = nullptr;
+ m_pVRIOBuffer = nullptr;
+ m_pVRSpatialAnchors = nullptr;
}
VR_INTERFACE uint32_t VR_CALLTYPE VR_InitInternal2( EVRInitError *peError, EVRApplicationType eApplicationType, const char *pStartupInfo );
@@ -3774,4 +4597,6 @@ namespace vr
{
VR_ShutdownInternal();
}
+
+#endif // OPENVR_INTERFACE_INTERNAL
}
diff --git a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.cs b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.cs
index 393a9171..23966f36 100644
--- a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.cs
+++ b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.cs
@@ -150,6 +150,11 @@ public struct IVRSystem
[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)]
@@ -191,7 +196,7 @@ public struct IVRSystem
internal _GetControllerStateWithPose GetControllerStateWithPose;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate void _TriggerHapticPulse(uint unControllerDeviceIndex, uint unAxisId, char usDurationMicroSec);
+ internal delegate void _TriggerHapticPulse(uint unControllerDeviceIndex, uint unAxisId, ushort usDurationMicroSec);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _TriggerHapticPulse TriggerHapticPulse;
@@ -206,22 +211,27 @@ public struct IVRSystem
internal _GetControllerAxisTypeNameFromEnum GetControllerAxisTypeNameFromEnum;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate bool _CaptureInputFocus();
+ internal delegate bool _IsInputAvailable();
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _IsInputAvailable IsInputAvailable;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate bool _IsSteamVRDrawingControllers();
[MarshalAs(UnmanagedType.FunctionPtr)]
- internal _CaptureInputFocus CaptureInputFocus;
+ internal _IsSteamVRDrawingControllers IsSteamVRDrawingControllers;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate void _ReleaseInputFocus();
+ internal delegate bool _ShouldApplicationPause();
[MarshalAs(UnmanagedType.FunctionPtr)]
- internal _ReleaseInputFocus ReleaseInputFocus;
+ internal _ShouldApplicationPause ShouldApplicationPause;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate bool _IsInputFocusCapturedByAnotherProcess();
+ internal delegate bool _ShouldApplicationReduceRenderingWork();
[MarshalAs(UnmanagedType.FunctionPtr)]
- internal _IsInputFocusCapturedByAnotherProcess IsInputFocusCapturedByAnotherProcess;
+ internal _ShouldApplicationReduceRenderingWork ShouldApplicationReduceRenderingWork;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate uint _DriverDebugRequest(uint unDeviceIndex, string pchRequest, string pchResponseBuffer, uint unResponseBufferSize);
+ internal delegate uint _DriverDebugRequest(uint unDeviceIndex, string pchRequest, System.Text.StringBuilder pchResponseBuffer, uint unResponseBufferSize);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _DriverDebugRequest DriverDebugRequest;
@@ -356,7 +366,7 @@ public struct IVRApplications
internal _GetApplicationKeyByIndex GetApplicationKeyByIndex;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate EVRApplicationError _GetApplicationKeyByProcessId(uint unProcessId, string pchAppKeyBuffer, uint unAppKeyBufferLen);
+ internal delegate EVRApplicationError _GetApplicationKeyByProcessId(uint unProcessId, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetApplicationKeyByProcessId GetApplicationKeyByProcessId;
@@ -431,27 +441,27 @@ public struct IVRApplications
internal _SetDefaultApplicationForMimeType SetDefaultApplicationForMimeType;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate bool _GetDefaultApplicationForMimeType(string pchMimeType, string pchAppKeyBuffer, uint unAppKeyBufferLen);
+ internal delegate bool _GetDefaultApplicationForMimeType(string pchMimeType, System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetDefaultApplicationForMimeType GetDefaultApplicationForMimeType;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate bool _GetApplicationSupportedMimeTypes(string pchAppKey, string pchMimeTypesBuffer, uint unMimeTypesBuffer);
+ internal delegate bool _GetApplicationSupportedMimeTypes(string pchAppKey, System.Text.StringBuilder pchMimeTypesBuffer, uint unMimeTypesBuffer);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetApplicationSupportedMimeTypes GetApplicationSupportedMimeTypes;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate uint _GetApplicationsThatSupportMimeType(string pchMimeType, string pchAppKeysThatSupportBuffer, uint unAppKeysThatSupportBuffer);
+ internal delegate uint _GetApplicationsThatSupportMimeType(string pchMimeType, System.Text.StringBuilder pchAppKeysThatSupportBuffer, uint unAppKeysThatSupportBuffer);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetApplicationsThatSupportMimeType GetApplicationsThatSupportMimeType;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate uint _GetApplicationLaunchArguments(uint unHandle, string pchArgs, uint unArgs);
+ 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(string pchAppKeyBuffer, uint unAppKeyBufferLen);
+ internal delegate EVRApplicationError _GetStartingApplication(System.Text.StringBuilder pchAppKeyBuffer, uint unAppKeyBufferLen);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetStartingApplication GetStartingApplication;
@@ -846,7 +856,7 @@ public struct IVRCompositor
internal _GetVulkanDeviceExtensionsRequired GetVulkanDeviceExtensionsRequired;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate void _SetExplicitTimingMode(bool bExplicitTimingMode);
+ internal delegate void _SetExplicitTimingMode(EVRCompositorTimingMode eTimingMode);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _SetExplicitTimingMode SetExplicitTimingMode;
@@ -1011,7 +1021,7 @@ public struct IVROverlay
internal _GetOverlayTextureBounds GetOverlayTextureBounds;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate uint _GetOverlayRenderModel(ulong ulOverlayHandle, string pchValue, uint unBufferSize, ref HmdColor_t pColor, ref EVROverlayError pError);
+ internal delegate uint _GetOverlayRenderModel(ulong ulOverlayHandle, System.Text.StringBuilder pchValue, uint unBufferSize, ref HmdColor_t pColor, ref EVROverlayError pError);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetOverlayRenderModel GetOverlayRenderModel;
@@ -1051,7 +1061,7 @@ public struct IVROverlay
internal _SetOverlayTransformTrackedDeviceComponent SetOverlayTransformTrackedDeviceComponent;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, ref uint punDeviceIndex, string pchComponentName, uint unComponentNameSize);
+ internal delegate EVROverlayError _GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle, ref uint punDeviceIndex, System.Text.StringBuilder pchComponentName, uint unComponentNameSize);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetOverlayTransformTrackedDeviceComponent GetOverlayTransformTrackedDeviceComponent;
@@ -1115,11 +1125,6 @@ public struct IVROverlay
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _ComputeOverlayIntersection ComputeOverlayIntersection;
- [UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate bool _HandleControllerOverlayInteractionAsMouse(ulong ulOverlayHandle, uint unControllerDeviceIndex);
- [MarshalAs(UnmanagedType.FunctionPtr)]
- internal _HandleControllerOverlayInteractionAsMouse HandleControllerOverlayInteractionAsMouse;
-
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
internal delegate bool _IsHoverTargetOverlay(ulong ulOverlayHandle);
[MarshalAs(UnmanagedType.FunctionPtr)]
@@ -1145,6 +1150,16 @@ public struct IVROverlay
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _MoveGamepadFocusToNeighbor MoveGamepadFocusToNeighbor;
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVROverlayError _SetOverlayDualAnalogTransform(ulong ulOverlay, EDualAnalogWhich eWhich, IntPtr vCenter, float fRadius);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _SetOverlayDualAnalogTransform SetOverlayDualAnalogTransform;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVROverlayError _GetOverlayDualAnalogTransform(ulong ulOverlay, EDualAnalogWhich eWhich, ref HmdVector2_t pvCenter, ref float pfRadius);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetOverlayDualAnalogTransform GetOverlayDualAnalogTransform;
+
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
internal delegate EVROverlayError _SetOverlayTexture(ulong ulOverlayHandle, ref Texture_t pTexture);
[MarshalAs(UnmanagedType.FunctionPtr)]
@@ -1335,6 +1350,11 @@ public struct IVRRenderModels
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetComponentRenderModelName GetComponentRenderModelName;
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate bool _GetComponentStateForDevicePath(string pchRenderModelName, string 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(string pchRenderModelName, string pchComponentName, ref VRControllerState_t pControllerState, ref RenderModel_ControllerMode_State_t pState, ref RenderModel_ComponentState_t pComponentState);
[MarshalAs(UnmanagedType.FunctionPtr)]
@@ -1491,7 +1511,7 @@ public struct IVRResources
internal _LoadSharedResource LoadSharedResource;
[UnmanagedFunctionPointer(CallingConvention.StdCall)]
- internal delegate uint _GetResourceFullPath(string pchResourceName, string pchResourceTypeDirectory, string pchPathBuffer, uint unBufferLen);
+ internal delegate uint _GetResourceFullPath(string pchResourceName, string pchResourceTypeDirectory, System.Text.StringBuilder pchPathBuffer, uint unBufferLen);
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetResourceFullPath GetResourceFullPath;
@@ -1510,6 +1530,161 @@ public struct IVRDriverManager
[MarshalAs(UnmanagedType.FunctionPtr)]
internal _GetDriverName GetDriverName;
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate ulong _GetDriverHandle(string pchDriverName);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetDriverHandle GetDriverHandle;
+
+}
+
+[StructLayout(LayoutKind.Sequential)]
+public struct IVRInput
+{
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _SetActionManifestPath(string pchActionManifestPath);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _SetActionManifestPath SetActionManifestPath;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _GetActionSetHandle(string pchActionSetName, ref ulong pHandle);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetActionSetHandle GetActionSetHandle;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _GetActionHandle(string pchActionName, ref ulong pHandle);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetActionHandle GetActionHandle;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _GetInputSourceHandle(string 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 _GetPoseActionData(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetPoseActionData GetPoseActionData;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _GetSkeletalActionData(ulong action, ref InputSkeletalActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetSkeletalActionData GetSkeletalActionData;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _GetSkeletalBoneData(ulong action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, [In, Out] VRBoneTransform_t[] pTransformArray, uint unTransformArrayCount, ulong ulRestrictToDevice);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetSkeletalBoneData GetSkeletalBoneData;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _GetSkeletalBoneDataCompressed(ulong action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, IntPtr pvCompressedData, uint unCompressedSize, ref uint punRequiredCompressedSize, ulong ulRestrictToDevice);
+ [MarshalAs(UnmanagedType.FunctionPtr)]
+ internal _GetSkeletalBoneDataCompressed GetSkeletalBoneDataCompressed;
+
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRInputError _DecompressSkeletalBoneData(IntPtr pvCompressedBuffer, uint unCompressedBufferSize, ref EVRSkeletalTransformSpace peTransformSpace, [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);
+ [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 _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;
+
+}
+
+[StructLayout(LayoutKind.Sequential)]
+public struct IVRIOBuffer
+{
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EIOBufferError _Open(string 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;
+
+}
+
+[StructLayout(LayoutKind.Sequential)]
+public struct IVRSpatialAnchors
+{
+ [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+ internal delegate EVRSpatialAnchorError _CreateSpatialAnchorFromDescriptor(string 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;
+
}
@@ -1658,6 +1833,11 @@ public HmdMatrix34_t GetMatrix34TrackedDeviceProperty(uint unDeviceIndex,ETracke
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);
@@ -1776,7 +1956,7 @@ public bool GetControllerStateWithPose(ETrackingUniverseOrigin eOrigin,uint unCo
bool result = FnTable.GetControllerStateWithPose(eOrigin,unControllerDeviceIndex,ref pControllerState,unControllerStateSize,ref pTrackedDevicePose);
return result;
}
- public void TriggerHapticPulse(uint unControllerDeviceIndex,uint unAxisId,char usDurationMicroSec)
+ public void TriggerHapticPulse(uint unControllerDeviceIndex,uint unAxisId,ushort usDurationMicroSec)
{
FnTable.TriggerHapticPulse(unControllerDeviceIndex,unAxisId,usDurationMicroSec);
}
@@ -1790,21 +1970,27 @@ public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType)
IntPtr result = FnTable.GetControllerAxisTypeNameFromEnum(eAxisType);
return Marshal.PtrToStringAnsi(result);
}
- public bool CaptureInputFocus()
+ public bool IsInputAvailable()
{
- bool result = FnTable.CaptureInputFocus();
+ bool result = FnTable.IsInputAvailable();
return result;
}
- public void ReleaseInputFocus()
+ public bool IsSteamVRDrawingControllers()
{
- FnTable.ReleaseInputFocus();
+ bool result = FnTable.IsSteamVRDrawingControllers();
+ return result;
+ }
+ public bool ShouldApplicationPause()
+ {
+ bool result = FnTable.ShouldApplicationPause();
+ return result;
}
- public bool IsInputFocusCapturedByAnotherProcess()
+ public bool ShouldApplicationReduceRenderingWork()
{
- bool result = FnTable.IsInputFocusCapturedByAnotherProcess();
+ bool result = FnTable.ShouldApplicationReduceRenderingWork();
return result;
}
- public uint DriverDebugRequest(uint unDeviceIndex,string pchRequest,string pchResponseBuffer,uint unResponseBufferSize)
+ public uint DriverDebugRequest(uint unDeviceIndex,string pchRequest,System.Text.StringBuilder pchResponseBuffer,uint unResponseBufferSize)
{
uint result = FnTable.DriverDebugRequest(unDeviceIndex,pchRequest,pchResponseBuffer,unResponseBufferSize);
return result;
@@ -1967,7 +2153,7 @@ public EVRApplicationError GetApplicationKeyByIndex(uint unApplicationIndex,Syst
EVRApplicationError result = FnTable.GetApplicationKeyByIndex(unApplicationIndex,pchAppKeyBuffer,unAppKeyBufferLen);
return result;
}
- public EVRApplicationError GetApplicationKeyByProcessId(uint unProcessId,string pchAppKeyBuffer,uint unAppKeyBufferLen)
+ public EVRApplicationError GetApplicationKeyByProcessId(uint unProcessId,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen)
{
EVRApplicationError result = FnTable.GetApplicationKeyByProcessId(unProcessId,pchAppKeyBuffer,unAppKeyBufferLen);
return result;
@@ -2042,27 +2228,27 @@ public EVRApplicationError SetDefaultApplicationForMimeType(string pchAppKey,str
EVRApplicationError result = FnTable.SetDefaultApplicationForMimeType(pchAppKey,pchMimeType);
return result;
}
- public bool GetDefaultApplicationForMimeType(string pchMimeType,string pchAppKeyBuffer,uint unAppKeyBufferLen)
+ public bool GetDefaultApplicationForMimeType(string pchMimeType,System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen)
{
bool result = FnTable.GetDefaultApplicationForMimeType(pchMimeType,pchAppKeyBuffer,unAppKeyBufferLen);
return result;
}
- public bool GetApplicationSupportedMimeTypes(string pchAppKey,string pchMimeTypesBuffer,uint unMimeTypesBuffer)
+ public bool GetApplicationSupportedMimeTypes(string pchAppKey,System.Text.StringBuilder pchMimeTypesBuffer,uint unMimeTypesBuffer)
{
bool result = FnTable.GetApplicationSupportedMimeTypes(pchAppKey,pchMimeTypesBuffer,unMimeTypesBuffer);
return result;
}
- public uint GetApplicationsThatSupportMimeType(string pchMimeType,string pchAppKeysThatSupportBuffer,uint unAppKeysThatSupportBuffer)
+ public uint GetApplicationsThatSupportMimeType(string pchMimeType,System.Text.StringBuilder pchAppKeysThatSupportBuffer,uint unAppKeysThatSupportBuffer)
{
uint result = FnTable.GetApplicationsThatSupportMimeType(pchMimeType,pchAppKeysThatSupportBuffer,unAppKeysThatSupportBuffer);
return result;
}
- public uint GetApplicationLaunchArguments(uint unHandle,string pchArgs,uint unArgs)
+ public uint GetApplicationLaunchArguments(uint unHandle,System.Text.StringBuilder pchArgs,uint unArgs)
{
uint result = FnTable.GetApplicationLaunchArguments(unHandle,pchArgs,unArgs);
return result;
}
- public EVRApplicationError GetStartingApplication(string pchAppKeyBuffer,uint unAppKeyBufferLen)
+ public EVRApplicationError GetStartingApplication(System.Text.StringBuilder pchAppKeyBuffer,uint unAppKeyBufferLen)
{
EVRApplicationError result = FnTable.GetStartingApplication(pchAppKeyBuffer,unAppKeyBufferLen);
return result;
@@ -2460,9 +2646,9 @@ public uint GetVulkanDeviceExtensionsRequired(IntPtr pPhysicalDevice,System.Text
uint result = FnTable.GetVulkanDeviceExtensionsRequired(pPhysicalDevice,pchValue,unBufferSize);
return result;
}
- public void SetExplicitTimingMode(bool bExplicitTimingMode)
+ public void SetExplicitTimingMode(EVRCompositorTimingMode eTimingMode)
{
- FnTable.SetExplicitTimingMode(bExplicitTimingMode);
+ FnTable.SetExplicitTimingMode(eTimingMode);
}
public EVRCompositorError SubmitExplicitTimingData()
{
@@ -2643,7 +2829,7 @@ public EVROverlayError GetOverlayTextureBounds(ulong ulOverlayHandle,ref VRTextu
EVROverlayError result = FnTable.GetOverlayTextureBounds(ulOverlayHandle,ref pOverlayTextureBounds);
return result;
}
- public uint GetOverlayRenderModel(ulong ulOverlayHandle,string pchValue,uint unBufferSize,ref HmdColor_t pColor,ref EVROverlayError pError)
+ public uint GetOverlayRenderModel(ulong ulOverlayHandle,System.Text.StringBuilder pchValue,uint unBufferSize,ref HmdColor_t pColor,ref EVROverlayError pError)
{
uint result = FnTable.GetOverlayRenderModel(ulOverlayHandle,pchValue,unBufferSize,ref pColor,ref pError);
return result;
@@ -2684,7 +2870,7 @@ public EVROverlayError SetOverlayTransformTrackedDeviceComponent(ulong ulOverlay
EVROverlayError result = FnTable.SetOverlayTransformTrackedDeviceComponent(ulOverlayHandle,unDeviceIndex,pchComponentName);
return result;
}
- public EVROverlayError GetOverlayTransformTrackedDeviceComponent(ulong ulOverlayHandle,ref uint punDeviceIndex,string pchComponentName,uint unComponentNameSize)
+ 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);
@@ -2777,11 +2963,6 @@ public bool ComputeOverlayIntersection(ulong ulOverlayHandle,ref VROverlayInters
bool result = FnTable.ComputeOverlayIntersection(ulOverlayHandle,ref pParams,ref pResults);
return result;
}
- public bool HandleControllerOverlayInteractionAsMouse(ulong ulOverlayHandle,uint unControllerDeviceIndex)
- {
- bool result = FnTable.HandleControllerOverlayInteractionAsMouse(ulOverlayHandle,unControllerDeviceIndex);
- return result;
- }
public bool IsHoverTargetOverlay(ulong ulOverlayHandle)
{
bool result = FnTable.IsHoverTargetOverlay(ulOverlayHandle);
@@ -2807,6 +2988,17 @@ public EVROverlayError MoveGamepadFocusToNeighbor(EOverlayDirection eDirection,u
EVROverlayError result = FnTable.MoveGamepadFocusToNeighbor(eDirection,ulFrom);
return result;
}
+ public EVROverlayError SetOverlayDualAnalogTransform(ulong ulOverlay,EDualAnalogWhich eWhich,IntPtr vCenter,float fRadius)
+ {
+ EVROverlayError result = FnTable.SetOverlayDualAnalogTransform(ulOverlay,eWhich,vCenter,fRadius);
+ return result;
+ }
+ public EVROverlayError GetOverlayDualAnalogTransform(ulong ulOverlay,EDualAnalogWhich eWhich,ref HmdVector2_t pvCenter,ref float pfRadius)
+ {
+ pfRadius = 0;
+ EVROverlayError result = FnTable.GetOverlayDualAnalogTransform(ulOverlay,eWhich,ref pvCenter,ref pfRadius);
+ return result;
+ }
public EVROverlayError SetOverlayTexture(ulong ulOverlayHandle,ref Texture_t pTexture)
{
EVROverlayError result = FnTable.SetOverlayTexture(ulOverlayHandle,ref pTexture);
@@ -3003,6 +3195,11 @@ public uint GetComponentRenderModelName(string pchRenderModelName,string pchComp
uint result = FnTable.GetComponentRenderModelName(pchRenderModelName,pchComponentName,pchComponentRenderModelName,unComponentRenderModelNameLen);
return result;
}
+ public bool GetComponentStateForDevicePath(string pchRenderModelName,string pchComponentName,ulong devicePath,ref RenderModel_ControllerMode_State_t pState,ref RenderModel_ComponentState_t pComponentState)
+ {
+ bool result = FnTable.GetComponentStateForDevicePath(pchRenderModelName,pchComponentName,devicePath,ref pState,ref pComponentState);
+ 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)]
@@ -3200,7 +3397,7 @@ public uint LoadSharedResource(string pchResourceName,string pchBuffer,uint unBu
uint result = FnTable.LoadSharedResource(pchResourceName,pchBuffer,unBufferLen);
return result;
}
- public uint GetResourceFullPath(string pchResourceName,string pchResourceTypeDirectory,string pchPathBuffer,uint unBufferLen)
+ public uint GetResourceFullPath(string pchResourceName,string pchResourceTypeDirectory,System.Text.StringBuilder pchPathBuffer,uint unBufferLen)
{
uint result = FnTable.GetResourceFullPath(pchResourceName,pchResourceTypeDirectory,pchPathBuffer,unBufferLen);
return result;
@@ -3225,6 +3422,185 @@ public uint GetDriverName(uint nDriver,System.Text.StringBuilder pchValue,uint u
uint result = FnTable.GetDriverName(nDriver,pchValue,unBufferSize);
return result;
}
+ public ulong GetDriverHandle(string pchDriverName)
+ {
+ ulong result = FnTable.GetDriverHandle(pchDriverName);
+ return result;
+ }
+}
+
+
+public class CVRInput
+{
+ IVRInput FnTable;
+ internal CVRInput(IntPtr pInterface)
+ {
+ FnTable = (IVRInput)Marshal.PtrToStructure(pInterface, typeof(IVRInput));
+ }
+ public EVRInputError SetActionManifestPath(string pchActionManifestPath)
+ {
+ EVRInputError result = FnTable.SetActionManifestPath(pchActionManifestPath);
+ return result;
+ }
+ public EVRInputError GetActionSetHandle(string pchActionSetName,ref ulong pHandle)
+ {
+ pHandle = 0;
+ EVRInputError result = FnTable.GetActionSetHandle(pchActionSetName,ref pHandle);
+ return result;
+ }
+ public EVRInputError GetActionHandle(string pchActionName,ref ulong pHandle)
+ {
+ pHandle = 0;
+ EVRInputError result = FnTable.GetActionHandle(pchActionName,ref pHandle);
+ return result;
+ }
+ public EVRInputError GetInputSourceHandle(string pchInputSourcePath,ref ulong pHandle)
+ {
+ pHandle = 0;
+ EVRInputError result = FnTable.GetInputSourceHandle(pchInputSourcePath,ref pHandle);
+ 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 GetPoseActionData(ulong action,ETrackingUniverseOrigin eOrigin,float fPredictedSecondsFromNow,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice)
+ {
+ EVRInputError result = FnTable.GetPoseActionData(action,eOrigin,fPredictedSecondsFromNow,ref pActionData,unActionDataSize,ulRestrictToDevice);
+ return result;
+ }
+ public EVRInputError GetSkeletalActionData(ulong action,ref InputSkeletalActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice)
+ {
+ EVRInputError result = FnTable.GetSkeletalActionData(action,ref pActionData,unActionDataSize,ulRestrictToDevice);
+ return result;
+ }
+ public EVRInputError GetSkeletalBoneData(ulong action,EVRSkeletalTransformSpace eTransformSpace,EVRSkeletalMotionRange eMotionRange,VRBoneTransform_t [] pTransformArray,ulong ulRestrictToDevice)
+ {
+ EVRInputError result = FnTable.GetSkeletalBoneData(action,eTransformSpace,eMotionRange,pTransformArray,(uint) pTransformArray.Length,ulRestrictToDevice);
+ return result;
+ }
+ public EVRInputError GetSkeletalBoneDataCompressed(ulong action,EVRSkeletalTransformSpace eTransformSpace,EVRSkeletalMotionRange eMotionRange,IntPtr pvCompressedData,uint unCompressedSize,ref uint punRequiredCompressedSize,ulong ulRestrictToDevice)
+ {
+ punRequiredCompressedSize = 0;
+ EVRInputError result = FnTable.GetSkeletalBoneDataCompressed(action,eTransformSpace,eMotionRange,pvCompressedData,unCompressedSize,ref punRequiredCompressedSize,ulRestrictToDevice);
+ return result;
+ }
+ public EVRInputError DecompressSkeletalBoneData(IntPtr pvCompressedBuffer,uint unCompressedBufferSize,ref EVRSkeletalTransformSpace peTransformSpace,VRBoneTransform_t [] pTransformArray)
+ {
+ EVRInputError result = FnTable.DecompressSkeletalBoneData(pvCompressedBuffer,unCompressedBufferSize,ref peTransformSpace,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)
+ {
+ EVRInputError result = FnTable.GetOriginLocalizedName(origin,pchNameArray,unNameArraySize);
+ 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 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 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)
+ {
+ pulBuffer = 0;
+ EIOBufferError result = FnTable.Open(pchPath,mode,unElementSize,unElements,ref pulBuffer);
+ 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 class CVRSpatialAnchors
+{
+ IVRSpatialAnchors FnTable;
+ internal CVRSpatialAnchors(IntPtr pInterface)
+ {
+ FnTable = (IVRSpatialAnchors)Marshal.PtrToStructure(pInterface, typeof(IVRSpatialAnchors));
+ }
+ public EVRSpatialAnchorError CreateSpatialAnchorFromDescriptor(string pchDescriptor,ref uint pHandleOut)
+ {
+ pHandleOut = 0;
+ EVRSpatialAnchorError result = FnTable.CreateSpatialAnchorFromDescriptor(pchDescriptor,ref pHandleOut);
+ 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;
+ }
}
@@ -3232,6 +3608,8 @@ 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)]
@@ -3256,11 +3634,14 @@ public enum EVREye
}
public enum ETextureType
{
+ Invalid = -1,
DirectX = 0,
OpenGL = 1,
Vulkan = 2,
IOSurface = 3,
DirectX12 = 4,
+ DXGISharedHandle = 5,
+ Metal = 6,
}
public enum EColorSpace
{
@@ -3284,12 +3665,15 @@ public enum ETrackedDeviceClass
GenericTracker = 3,
TrackingReference = 4,
DisplayRedirect = 5,
+ Max = 6,
}
public enum ETrackedControllerRole
{
Invalid = 0,
LeftHand = 1,
RightHand = 2,
+ OptOut = 3,
+ Max = 4,
}
public enum ETrackingUniverseOrigin
{
@@ -3336,6 +3720,11 @@ public enum ETrackedDeviceProperty
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_ReportsTimeSinceVSync_Bool = 2000,
Prop_SecondsFromVsyncToPhotons_Float = 2001,
Prop_DisplayFrequency_Float = 2002,
@@ -3383,6 +3772,35 @@ public enum ETrackedDeviceProperty
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_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_AttachedDeviceId_String = 3000,
Prop_SupportedButtons_Uint64 = 3001,
Prop_Axis0Type_Int32 = 3002,
@@ -3409,6 +3827,7 @@ public enum ETrackedDeviceProperty
Prop_NamedIconPathDeviceAlertLow_String = 5008,
Prop_DisplayHiddenArea_Binary_Start = 5100,
Prop_DisplayHiddenArea_Binary_End = 5150,
+ Prop_ParentContainer = 5151,
Prop_UserConfigPath_String = 6000,
Prop_InstallPath_String = 6001,
Prop_HasDisplayComponent_Bool = 6002,
@@ -3416,8 +3835,12 @@ public enum ETrackedDeviceProperty
Prop_HasCameraComponent_Bool = 6004,
Prop_HasDriverDirectModeComponent_Bool = 6005,
Prop_HasVirtualDisplayComponent_Bool = 6006,
+ Prop_HasSpatialAnchorsSupport_Bool = 6007,
+ Prop_ControllerType_String = 7000,
+ Prop_LegacyInputProfile_String = 7001,
Prop_VendorSpecific_Reserved_Start = 10000,
Prop_VendorSpecific_Reserved_End = 10999,
+ Prop_TrackedDeviceProperty_Max = 1000000,
}
public enum ETrackedPropertyError
{
@@ -3433,6 +3856,7 @@ public enum ETrackedPropertyError
TrackedProp_NotYetAvailable = 9,
TrackedProp_PermissionDenied = 10,
TrackedProp_InvalidOperation = 11,
+ TrackedProp_CannotWriteToWildcards = 12,
}
public enum EVRSubmitFlags
{
@@ -3441,6 +3865,7 @@ public enum EVRSubmitFlags
Submit_GlRenderBuffer = 2,
Submit_Reserved = 4,
Submit_TextureWithPose = 8,
+ Submit_TextureWithDepth = 16,
}
public enum EVRState
{
@@ -3475,6 +3900,14 @@ public enum EVREventType
VREvent_ButtonUnpress = 201,
VREvent_ButtonTouch = 202,
VREvent_ButtonUntouch = 203,
+ VREvent_DualAnalog_Press = 250,
+ VREvent_DualAnalog_Unpress = 251,
+ VREvent_DualAnalog_Touch = 252,
+ VREvent_DualAnalog_Untouch = 253,
+ VREvent_DualAnalog_Move = 254,
+ VREvent_DualAnalog_ModeSwitch1 = 255,
+ VREvent_DualAnalog_ModeSwitch2 = 256,
+ VREvent_DualAnalog_Cancel = 257,
VREvent_MouseMove = 300,
VREvent_MouseButtonDown = 301,
VREvent_MouseButtonUp = 302,
@@ -3491,8 +3924,12 @@ public enum EVREventType
VREvent_SceneFocusChanged = 405,
VREvent_InputFocusChanged = 406,
VREvent_SceneApplicationSecondaryRenderingStarted = 407,
+ VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408,
+ VREvent_ActionBindingReloaded = 409,
VREvent_HideRenderModels = 410,
VREvent_ShowRenderModels = 411,
+ VREvent_ConsoleOpened = 420,
+ VREvent_ConsoleClosed = 421,
VREvent_OverlayShown = 500,
VREvent_OverlayHidden = 501,
VREvent_DashboardActivated = 502,
@@ -3507,17 +3944,18 @@ public enum EVREventType
VREvent_OverlayGamepadFocusGained = 511,
VREvent_OverlayGamepadFocusLost = 512,
VREvent_OverlaySharedTextureChanged = 513,
- VREvent_DashboardGuideButtonDown = 514,
- VREvent_DashboardGuideButtonUp = 515,
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_Notification_Shown = 600,
VREvent_Notification_Hidden = 601,
VREvent_Notification_BeginInteraction = 602,
@@ -3540,7 +3978,18 @@ public enum EVREventType
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_StatusUpdate = 900,
+ VREvent_WebInterface_InstallDriverCompleted = 950,
VREvent_MCImageUpdated = 1000,
VREvent_FirmwareUpdateStarted = 1100,
VREvent_FirmwareUpdateFinished = 1101,
@@ -3569,6 +4018,15 @@ public enum EVREventType
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_SpatialAnchors_PoseUpdated = 1800,
+ VREvent_SpatialAnchors_DescriptorUpdated = 1801,
+ VREvent_SpatialAnchors_RequestPoseUpdate = 1802,
+ VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803,
VREvent_VendorSpecific_Reserved_Start = 10000,
VREvent_VendorSpecific_Reserved_End = 19999,
}
@@ -3599,6 +4057,9 @@ public enum EVRButtonId
k_EButton_SteamVR_Touchpad = 32,
k_EButton_SteamVR_Trigger = 33,
k_EButton_Dashboard_Back = 2,
+ k_EButton_Knuckles_A = 2,
+ k_EButton_Knuckles_B = 1,
+ k_EButton_Knuckles_JoyStick = 35,
k_EButton_Max = 64,
}
public enum EVRMouseButton
@@ -3607,6 +4068,48 @@ public enum EVRMouseButton
Right = 2,
Middle = 4,
}
+public enum EDualAnalogWhich
+{
+ k_EDualAnalog_Left = 0,
+ k_EDualAnalog_Right = 1,
+}
+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,
+}
+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,
@@ -3658,6 +4161,9 @@ public enum EVROverlayError
NoNeighbor = 27,
TooManyMaskPrimitives = 29,
BadMaskPrimitive = 30,
+ TextureAlreadyLocked = 31,
+ TextureLockCapacityReached = 32,
+ TextureNotLocked = 33,
}
public enum EVRApplicationType
{
@@ -3685,6 +4191,11 @@ public enum EVRNotificationError
InvalidOverlayHandle = 102,
SystemWithUserValueAlreadyExists = 103,
}
+public enum EVRSkeletalMotionRange
+{
+ WithController = 0,
+ WithoutController = 1,
+}
public enum EVRInitError
{
None = 0,
@@ -3729,6 +4240,9 @@ public enum EVRInitError
Init_RebootingBusy = 137,
Init_FirmwareUpdateBusy = 138,
Init_FirmwareRecoveryBusy = 139,
+ Init_USBServiceBusy = 140,
+ Init_VRWebHelperStartupFailed = 141,
+ Init_TrackerManagerInitFailed = 142,
Driver_Failed = 200,
Driver_Unknown = 201,
Driver_HmdUnknown = 202,
@@ -3757,6 +4271,7 @@ public enum EVRInitError
Compositor_ScreenshotsInitFailed = 404,
Compositor_UnableToCreateDevice = 405,
VendorSpecific_UnableToConnectToOculusRuntime = 1000,
+ VendorSpecific_WindowsNotInDevMode = 1001,
VendorSpecific_HmdFound_CantOpenDevice = 1101,
VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102,
VendorSpecific_HmdFound_NoStoredConfig = 1103,
@@ -3806,6 +4321,13 @@ public enum EVRTrackedCameraError
InvalidArgument = 114,
InvalidFrameBufferSize = 115,
}
+public enum EVRTrackedCameraFrameLayout
+{
+ Mono = 1,
+ Stereo = 2,
+ VerticalLayout = 16,
+ HorizontalLayout = 32,
+}
public enum EVRTrackedCameraFrameType
{
Distorted = 0,
@@ -3813,6 +4335,26 @@ public enum EVRTrackedCameraFrameType
MaximumUndistorted = 2,
MAX_CAMERA_FRAME_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,
@@ -3849,6 +4391,7 @@ public enum EVRApplicationProperty
NewsURL_String = 51,
ImagePath_String = 52,
Source_String = 53,
+ ActionManifestURL_String = 54,
IsDashboardOverlay_Bool = 60,
IsTemplate_Bool = 61,
IsInstanced_Bool = 62,
@@ -3900,10 +4443,17 @@ public enum EVRCompositorError
AlreadySubmitted = 108,
InvalidBounds = 109,
}
+public enum EVRCompositorTimingMode
+{
+ Implicit = 0,
+ Explicit_RuntimePerformsPostPresentHandoff = 1,
+ Explicit_ApplicationPerformsPostPresentHandoff = 2,
+}
public enum VROverlayInputMethod
{
None = 0,
Mouse = 1,
+ DualAnalog = 2,
}
public enum VROverlayTransformType
{
@@ -4021,6 +4571,33 @@ public enum EVRScreenshotError
BufferTooSmall = 102,
ScreenshotAlreadyInProgress = 108,
}
+public enum EVRSkeletalTransformSpace
+{
+ Model = 0,
+ Parent = 1,
+ Additive = 2,
+}
+public enum EVRInputFilterCancelType
+{
+ VRInputFilterCancel_Timers = 0,
+ VRInputFilterCancel_Momentum = 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,
+}
[StructLayout(LayoutKind.Explicit)] public struct VREvent_Data_t
{
@@ -4042,6 +4619,12 @@ public enum EVRScreenshotError
[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_DualAnalog_t dualAnalog;
+ [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_Keyboard_t keyboard; // This has to be at the end due to a mono bug
}
@@ -4067,6 +4650,18 @@ public enum EVRScreenshotError
public float m10;
public float m11;
}
+[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]
@@ -4117,6 +4712,13 @@ public enum EVRScreenshotError
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;
@@ -4173,6 +4775,20 @@ public enum EVRScreenshotError
{
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 VRTextureDepthInfo_t depth;
+}
+[StructLayout(LayoutKind.Sequential)] public struct VRTextureWithPoseAndDepth_t
+{
+ public VRTextureDepthInfo_t depth;
+}
[StructLayout(LayoutKind.Sequential)] public struct VRVulkanTextureData_t
{
public ulong m_nImage;
@@ -4233,6 +4849,7 @@ public enum EVRScreenshotError
[StructLayout(LayoutKind.Sequential)] public struct VREvent_Overlay_t
{
public ulong overlayHandle;
+ public ulong devicePath;
}
[StructLayout(LayoutKind.Sequential)] public struct VREvent_Status_t
{
@@ -4241,6 +4858,22 @@ public enum EVRScreenshotError
[StructLayout(LayoutKind.Sequential)] public struct VREvent_Keyboard_t
{
public byte cNewInput0,cNewInput1,cNewInput2,cNewInput3,cNewInput4,cNewInput5,cNewInput6,cNewInput7;
+ public string cNewInput
+ {
+ get
+ {
+ var stringBuilder = new System.Text.StringBuilder(8);
+ stringBuilder.Append(cNewInput0);
+ stringBuilder.Append(cNewInput1);
+ stringBuilder.Append(cNewInput2);
+ stringBuilder.Append(cNewInput3);
+ stringBuilder.Append(cNewInput4);
+ stringBuilder.Append(cNewInput5);
+ stringBuilder.Append(cNewInput6);
+ stringBuilder.Append(cNewInput7);
+ return stringBuilder.ToString();
+ }
+ }
public ulong uUserValue;
}
[StructLayout(LayoutKind.Sequential)] public struct VREvent_Ipd_t
@@ -4256,6 +4889,8 @@ public enum EVRScreenshotError
{
public ulong reserved0;
public ulong reserved1;
+ public ulong reserved2;
+ public ulong reserved3;
}
[StructLayout(LayoutKind.Sequential)] public struct VREvent_PerformanceTest_t
{
@@ -4294,6 +4929,44 @@ public enum EVRScreenshotError
public ulong container;
public ETrackedDeviceProperty prop;
}
+[StructLayout(LayoutKind.Sequential)] public struct VREvent_DualAnalog_t
+{
+ public float x;
+ public float y;
+ public float transformedX;
+ public float transformedY;
+ public EDualAnalogWhich which;
+}
+[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_t
{
public uint eventType;
@@ -4397,6 +5070,11 @@ public void Unpack(ref VRControllerState_t unpacked)
public float gridScale;
public HmdMatrix44_t transform;
}
+[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;
@@ -4406,6 +5084,21 @@ public void Unpack(ref VRControllerState_t unpacked)
public uint nFrameSequence;
public TrackedDevicePose_t standingTrackedDevicePose;
}
+[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 *
@@ -4502,15 +5195,15 @@ public void Unpack(ref VRControllerState_t unpacked)
}
[StructLayout(LayoutKind.Sequential)] public struct RenderModel_TextureMap_t
{
- public char unWidth;
- public char unHeight;
+ public ushort unWidth;
+ public ushort unHeight;
public IntPtr rubTextureMapData; // const uint8_t *
}
// This structure is for backwards binary compatibility on Linux and OSX only
[StructLayout(LayoutKind.Sequential, Pack = 4)] public struct RenderModel_TextureMap_t_Packed
{
- public char unWidth;
- public char unHeight;
+ public ushort unWidth;
+ public ushort unHeight;
public IntPtr rubTextureMapData; // const uint8_t *
public RenderModel_TextureMap_t_Packed(RenderModel_TextureMap_t unpacked)
{
@@ -4570,6 +5263,202 @@ public void Unpack(ref RenderModel_t unpacked)
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;
+ public uint boneCount;
+}
+[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
+ {
+ var stringBuilder = new System.Text.StringBuilder(128);
+ stringBuilder.Append(rchRenderModelComponentName0);
+ stringBuilder.Append(rchRenderModelComponentName1);
+ stringBuilder.Append(rchRenderModelComponentName2);
+ stringBuilder.Append(rchRenderModelComponentName3);
+ stringBuilder.Append(rchRenderModelComponentName4);
+ stringBuilder.Append(rchRenderModelComponentName5);
+ stringBuilder.Append(rchRenderModelComponentName6);
+ stringBuilder.Append(rchRenderModelComponentName7);
+ stringBuilder.Append(rchRenderModelComponentName8);
+ stringBuilder.Append(rchRenderModelComponentName9);
+ stringBuilder.Append(rchRenderModelComponentName10);
+ stringBuilder.Append(rchRenderModelComponentName11);
+ stringBuilder.Append(rchRenderModelComponentName12);
+ stringBuilder.Append(rchRenderModelComponentName13);
+ stringBuilder.Append(rchRenderModelComponentName14);
+ stringBuilder.Append(rchRenderModelComponentName15);
+ stringBuilder.Append(rchRenderModelComponentName16);
+ stringBuilder.Append(rchRenderModelComponentName17);
+ stringBuilder.Append(rchRenderModelComponentName18);
+ stringBuilder.Append(rchRenderModelComponentName19);
+ stringBuilder.Append(rchRenderModelComponentName20);
+ stringBuilder.Append(rchRenderModelComponentName21);
+ stringBuilder.Append(rchRenderModelComponentName22);
+ stringBuilder.Append(rchRenderModelComponentName23);
+ stringBuilder.Append(rchRenderModelComponentName24);
+ stringBuilder.Append(rchRenderModelComponentName25);
+ stringBuilder.Append(rchRenderModelComponentName26);
+ stringBuilder.Append(rchRenderModelComponentName27);
+ stringBuilder.Append(rchRenderModelComponentName28);
+ stringBuilder.Append(rchRenderModelComponentName29);
+ stringBuilder.Append(rchRenderModelComponentName30);
+ stringBuilder.Append(rchRenderModelComponentName31);
+ stringBuilder.Append(rchRenderModelComponentName32);
+ stringBuilder.Append(rchRenderModelComponentName33);
+ stringBuilder.Append(rchRenderModelComponentName34);
+ stringBuilder.Append(rchRenderModelComponentName35);
+ stringBuilder.Append(rchRenderModelComponentName36);
+ stringBuilder.Append(rchRenderModelComponentName37);
+ stringBuilder.Append(rchRenderModelComponentName38);
+ stringBuilder.Append(rchRenderModelComponentName39);
+ stringBuilder.Append(rchRenderModelComponentName40);
+ stringBuilder.Append(rchRenderModelComponentName41);
+ stringBuilder.Append(rchRenderModelComponentName42);
+ stringBuilder.Append(rchRenderModelComponentName43);
+ stringBuilder.Append(rchRenderModelComponentName44);
+ stringBuilder.Append(rchRenderModelComponentName45);
+ stringBuilder.Append(rchRenderModelComponentName46);
+ stringBuilder.Append(rchRenderModelComponentName47);
+ stringBuilder.Append(rchRenderModelComponentName48);
+ stringBuilder.Append(rchRenderModelComponentName49);
+ stringBuilder.Append(rchRenderModelComponentName50);
+ stringBuilder.Append(rchRenderModelComponentName51);
+ stringBuilder.Append(rchRenderModelComponentName52);
+ stringBuilder.Append(rchRenderModelComponentName53);
+ stringBuilder.Append(rchRenderModelComponentName54);
+ stringBuilder.Append(rchRenderModelComponentName55);
+ stringBuilder.Append(rchRenderModelComponentName56);
+ stringBuilder.Append(rchRenderModelComponentName57);
+ stringBuilder.Append(rchRenderModelComponentName58);
+ stringBuilder.Append(rchRenderModelComponentName59);
+ stringBuilder.Append(rchRenderModelComponentName60);
+ stringBuilder.Append(rchRenderModelComponentName61);
+ stringBuilder.Append(rchRenderModelComponentName62);
+ stringBuilder.Append(rchRenderModelComponentName63);
+ stringBuilder.Append(rchRenderModelComponentName64);
+ stringBuilder.Append(rchRenderModelComponentName65);
+ stringBuilder.Append(rchRenderModelComponentName66);
+ stringBuilder.Append(rchRenderModelComponentName67);
+ stringBuilder.Append(rchRenderModelComponentName68);
+ stringBuilder.Append(rchRenderModelComponentName69);
+ stringBuilder.Append(rchRenderModelComponentName70);
+ stringBuilder.Append(rchRenderModelComponentName71);
+ stringBuilder.Append(rchRenderModelComponentName72);
+ stringBuilder.Append(rchRenderModelComponentName73);
+ stringBuilder.Append(rchRenderModelComponentName74);
+ stringBuilder.Append(rchRenderModelComponentName75);
+ stringBuilder.Append(rchRenderModelComponentName76);
+ stringBuilder.Append(rchRenderModelComponentName77);
+ stringBuilder.Append(rchRenderModelComponentName78);
+ stringBuilder.Append(rchRenderModelComponentName79);
+ stringBuilder.Append(rchRenderModelComponentName80);
+ stringBuilder.Append(rchRenderModelComponentName81);
+ stringBuilder.Append(rchRenderModelComponentName82);
+ stringBuilder.Append(rchRenderModelComponentName83);
+ stringBuilder.Append(rchRenderModelComponentName84);
+ stringBuilder.Append(rchRenderModelComponentName85);
+ stringBuilder.Append(rchRenderModelComponentName86);
+ stringBuilder.Append(rchRenderModelComponentName87);
+ stringBuilder.Append(rchRenderModelComponentName88);
+ stringBuilder.Append(rchRenderModelComponentName89);
+ stringBuilder.Append(rchRenderModelComponentName90);
+ stringBuilder.Append(rchRenderModelComponentName91);
+ stringBuilder.Append(rchRenderModelComponentName92);
+ stringBuilder.Append(rchRenderModelComponentName93);
+ stringBuilder.Append(rchRenderModelComponentName94);
+ stringBuilder.Append(rchRenderModelComponentName95);
+ stringBuilder.Append(rchRenderModelComponentName96);
+ stringBuilder.Append(rchRenderModelComponentName97);
+ stringBuilder.Append(rchRenderModelComponentName98);
+ stringBuilder.Append(rchRenderModelComponentName99);
+ stringBuilder.Append(rchRenderModelComponentName100);
+ stringBuilder.Append(rchRenderModelComponentName101);
+ stringBuilder.Append(rchRenderModelComponentName102);
+ stringBuilder.Append(rchRenderModelComponentName103);
+ stringBuilder.Append(rchRenderModelComponentName104);
+ stringBuilder.Append(rchRenderModelComponentName105);
+ stringBuilder.Append(rchRenderModelComponentName106);
+ stringBuilder.Append(rchRenderModelComponentName107);
+ stringBuilder.Append(rchRenderModelComponentName108);
+ stringBuilder.Append(rchRenderModelComponentName109);
+ stringBuilder.Append(rchRenderModelComponentName110);
+ stringBuilder.Append(rchRenderModelComponentName111);
+ stringBuilder.Append(rchRenderModelComponentName112);
+ stringBuilder.Append(rchRenderModelComponentName113);
+ stringBuilder.Append(rchRenderModelComponentName114);
+ stringBuilder.Append(rchRenderModelComponentName115);
+ stringBuilder.Append(rchRenderModelComponentName116);
+ stringBuilder.Append(rchRenderModelComponentName117);
+ stringBuilder.Append(rchRenderModelComponentName118);
+ stringBuilder.Append(rchRenderModelComponentName119);
+ stringBuilder.Append(rchRenderModelComponentName120);
+ stringBuilder.Append(rchRenderModelComponentName121);
+ stringBuilder.Append(rchRenderModelComponentName122);
+ stringBuilder.Append(rchRenderModelComponentName123);
+ stringBuilder.Append(rchRenderModelComponentName124);
+ stringBuilder.Append(rchRenderModelComponentName125);
+ stringBuilder.Append(rchRenderModelComponentName126);
+ stringBuilder.Append(rchRenderModelComponentName127);
+ return stringBuilder.ToString();
+ }
+ }
+}
+[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 SpatialAnchorPose_t
+{
+ public HmdMatrix34_t mAnchorToAbsoluteTracking;
+}
[StructLayout(LayoutKind.Sequential)] public struct COpenVRContext
{
public IntPtr m_pVRSystem; // class vr::IVRSystem *
@@ -4585,6 +5474,9 @@ public void Unpack(ref RenderModel_t unpacked)
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 class OpenVR
@@ -4595,6 +5487,11 @@ public static uint InitInternal(ref EVRInitError peError, EVRApplicationType eAp
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();
@@ -4633,11 +5530,12 @@ public static uint 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 = 16;
+ 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;
@@ -4648,13 +5546,23 @@ public static uint GetInitToken()
public const uint k_unHmdVector3PropertyTag = 22;
public const uint k_unHmdVector4PropertyTag = 23;
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_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_unScreenshotHandleInvalid = 0;
- public const string IVRSystem_Version = "IVRSystem_017";
+ public const string IVRSystem_Version = "IVRSystem_019";
public const string IVRExtendedDisplay_Version = "IVRExtendedDisplay_001";
public const string IVRTrackedCamera_Version = "IVRTrackedCamera_003";
public const uint k_unMaxApplicationKeyLength = 128;
@@ -4663,18 +5571,18 @@ public static uint GetInitToken()
public const string IVRApplications_Version = "IVRApplications_006";
public const string IVRChaperone_Version = "IVRChaperone_003";
public const string IVRChaperoneSetup_Version = "IVRChaperoneSetup_005";
- public const string IVRCompositor_Version = "IVRCompositor_021";
+ public const string IVRCompositor_Version = "IVRCompositor_022";
public const uint k_unVROverlayMaxKeyLength = 128;
public const uint k_unVROverlayMaxNameLength = 128;
public const uint k_unMaxOverlayCount = 64;
public const uint k_unMaxOverlayIntersectionMaskPrimitivesCount = 32;
- public const string IVROverlay_Version = "IVROverlay_016";
+ public const string IVROverlay_Version = "IVROverlay_018";
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_005";
+ 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;
@@ -4722,13 +5630,25 @@ public static uint GetInitToken()
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_DebugInput = "debugInput";
+ public const string k_pch_SteamVR_LegacyInputRebinding = "legacyInputRebinding";
+ public const string k_pch_SteamVR_DebugInputBinding = "debugInputBinding";
+ public const string k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI";
+ public const string k_pch_SteamVR_RenderCameraMode = "renderCameraMode";
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_Null_Section = "driver_null";
public const string k_pch_Null_SerialNumber_String = "serialNumber";
public const string k_pch_Null_ModelNumber_String = "modelNumber";
@@ -4783,6 +5703,7 @@ public static uint GetInitToken()
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_RoomViewMode_Int32 = "cameraRoomViewMode";
public const string k_pch_audio_Section = "audio";
public const string k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice";
public const string k_pch_audio_OnRecordDevice_String = "onRecordDevice";
@@ -4800,11 +5721,31 @@ public static uint GetInitToken()
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_EnableWebUI = "webUI";
+ public const string k_pch_Dashboard_EnableWebUIDevTools = "webUIDevTools";
+ public const string k_pch_Dashboard_EnableWebUIDashboardReplacement = "webUIDashboard";
public const string k_pch_modelskin_Section = "modelskins";
public const string k_pch_Driver_Enable_Bool = "enable";
+ public const string k_pch_WebInterface_Section = "WebInterface";
+ public const string k_pch_WebInterface_WebEnable_Bool = "WebEnable";
+ public const string k_pch_WebInterface_WebPort_String = "WebPort";
+ public const string k_pch_TrackingOverride_Section = "TrackingOverrides";
+ public const string k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL";
+ public const string k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL";
+ public const string k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave";
+ public const string k_pch_App_ActionManifestURL_String = "ActionManifestURL";
+ public const string k_pch_Trackers_Section = "trackers";
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 string IVRInput_Version = "IVRInput_004";
+ public const ulong k_ulInvalidIOBufferHandle = 0;
+ public const string IVRIOBuffer_Version = "IVRIOBuffer_001";
+ public const uint k_ulInvalidSpatialAnchorHandle = 0;
+ public const string IVRSpatialAnchors_Version = "IVRSpatialAnchors_001";
static uint VRToken { get; set; }
@@ -4827,6 +5768,8 @@ public void Clear()
m_pVRApplications = null;
m_pVRScreenshots = null;
m_pVRTrackedCamera = null;
+ m_pVRInput = null;
+ m_pVRSpatialAnchors = null;
}
void CheckClear()
@@ -4981,6 +5924,32 @@ public CVRTrackedCamera VRTrackedCamera()
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 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;
+ }
+
private CVRSystem m_pVRSystem;
private CVRChaperone m_pVRChaperone;
private CVRChaperoneSetup m_pVRChaperoneSetup;
@@ -4992,6 +5961,8 @@ public CVRTrackedCamera VRTrackedCamera()
private CVRApplications m_pVRApplications;
private CVRScreenshots m_pVRScreenshots;
private CVRTrackedCamera m_pVRTrackedCamera;
+ private CVRInput m_pVRInput;
+ private CVRSpatialAnchors m_pVRSpatialAnchors;
};
private static COpenVRContext _OpenVRInternal_ModuleContext = null;
@@ -5016,11 +5987,21 @@ static COpenVRContext OpenVRInternal_ModuleContext
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 CVRSpatialAnchors SpatialAnchors { get { return OpenVRInternal_ModuleContext.VRSpatialAnchors(); } }
/** Finds the active installation of vrclient.dll and initializes it */
- public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene)
+ public static CVRSystem Init(ref EVRInitError peError, EVRApplicationType eApplicationType = EVRApplicationType.VRApplication_Scene, string pchStartupInfo= "")
{
- VRToken = InitInternal(ref peError, eApplicationType);
+ try
+ {
+ VRToken = InitInternal2(ref peError, eApplicationType, pchStartupInfo);
+ }
+ catch (EntryPointNotFoundException e)
+ {
+ VRToken = InitInternal(ref peError, eApplicationType);
+ }
+
OpenVRInternal_ModuleContext.Clear();
if (peError != EVRInitError.None)
diff --git a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.json b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.json
index 8fa11a63..528cd166 100644
--- a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.json
+++ b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_api.json
@@ -1,11 +1,17 @@
-{"typedefs":[{"typedef": "vr::glSharedTextureHandle_t","type": "void *"}
+{"typedefs":[{"typedef": "vr::SpatialAnchorHandle_t","type": "uint32_t"}
+,{"typedef": "vr::glSharedTextureHandle_t","type": "void *"}
,{"typedef": "vr::glInt_t","type": "int32_t"}
,{"typedef": "vr::glUInt_t","type": "uint32_t"}
,{"typedef": "vr::SharedTextureHandle_t","type": "uint64_t"}
,{"typedef": "vr::DriverId_t","type": "uint32_t"}
,{"typedef": "vr::TrackedDeviceIndex_t","type": "uint32_t"}
+,{"typedef": "vr::WebConsoleHandle_t","type": "uint64_t"}
,{"typedef": "vr::PropertyContainerHandle_t","type": "uint64_t"}
,{"typedef": "vr::PropertyTypeTag_t","type": "uint32_t"}
+,{"typedef": "vr::DriverHandle_t","type": "PropertyContainerHandle_t"}
+,{"typedef": "vr::VRActionHandle_t","type": "uint64_t"}
+,{"typedef": "vr::VRActionSetHandle_t","type": "uint64_t"}
+,{"typedef": "vr::VRInputValueHandle_t","type": "uint64_t"}
,{"typedef": "vr::VREvent_Data_t","type": "union VREvent_Data_t"}
,{"typedef": "vr::VRControllerState_t","type": "struct vr::VRControllerState001_t"}
,{"typedef": "vr::VROverlayHandle_t","type": "uint64_t"}
@@ -15,6 +21,7 @@
,{"typedef": "vr::VRComponentProperties","type": "uint32_t"}
,{"typedef": "vr::TextureID_t","type": "int32_t"}
,{"typedef": "vr::VRNotificationId","type": "uint32_t"}
+,{"typedef": "vr::IOBufferHandle_t","type": "uint64_t"}
,{"typedef": "vr::HmdError","type": "enum vr::EVRInitError"}
,{"typedef": "vr::Hmd_Eye","type": "enum vr::EVREye"}
,{"typedef": "vr::ColorSpace","type": "enum vr::EColorSpace"}
@@ -37,11 +44,14 @@
,{"name": "Eye_Right","value": "1"}
]}
, {"enumname": "vr::ETextureType","values": [
- {"name": "TextureType_DirectX","value": "0"}
+ {"name": "TextureType_Invalid","value": "-1"}
+ ,{"name": "TextureType_DirectX","value": "0"}
,{"name": "TextureType_OpenGL","value": "1"}
,{"name": "TextureType_Vulkan","value": "2"}
,{"name": "TextureType_IOSurface","value": "3"}
,{"name": "TextureType_DirectX12","value": "4"}
+ ,{"name": "TextureType_DXGISharedHandle","value": "5"}
+ ,{"name": "TextureType_Metal","value": "6"}
]}
, {"enumname": "vr::EColorSpace","values": [
{"name": "ColorSpace_Auto","value": "0"}
@@ -62,11 +72,14 @@
,{"name": "TrackedDeviceClass_GenericTracker","value": "3"}
,{"name": "TrackedDeviceClass_TrackingReference","value": "4"}
,{"name": "TrackedDeviceClass_DisplayRedirect","value": "5"}
+ ,{"name": "TrackedDeviceClass_Max","value": "6"}
]}
, {"enumname": "vr::ETrackedControllerRole","values": [
{"name": "TrackedControllerRole_Invalid","value": "0"}
,{"name": "TrackedControllerRole_LeftHand","value": "1"}
,{"name": "TrackedControllerRole_RightHand","value": "2"}
+ ,{"name": "TrackedControllerRole_OptOut","value": "3"}
+ ,{"name": "TrackedControllerRole_Max","value": "4"}
]}
, {"enumname": "vr::ETrackingUniverseOrigin","values": [
{"name": "TrackingUniverseSeated","value": "0"}
@@ -111,6 +124,11 @@
,{"name": "Prop_ViveSystemButtonFixRequired_Bool","value": "1033"}
,{"name": "Prop_ParentDriver_Uint64","value": "1034"}
,{"name": "Prop_ResourceRoot_String","value": "1035"}
+ ,{"name": "Prop_RegisteredDeviceType_String","value": "1036"}
+ ,{"name": "Prop_InputProfilePath_String","value": "1037"}
+ ,{"name": "Prop_NeverTracked_Bool","value": "1038"}
+ ,{"name": "Prop_NumCameras_Int32","value": "1039"}
+ ,{"name": "Prop_CameraFrameLayout_Int32","value": "1040"}
,{"name": "Prop_ReportsTimeSinceVSync_Bool","value": "2000"}
,{"name": "Prop_SecondsFromVsyncToPhotons_Float","value": "2001"}
,{"name": "Prop_DisplayFrequency_Float","value": "2002"}
@@ -158,6 +176,35 @@
,{"name": "Prop_DisplayDebugMode_Bool","value": "2044"}
,{"name": "Prop_GraphicsAdapterLuid_Uint64","value": "2045"}
,{"name": "Prop_DriverProvidedChaperonePath_String","value": "2048"}
+ ,{"name": "Prop_ExpectedTrackingReferenceCount_Int32","value": "2049"}
+ ,{"name": "Prop_ExpectedControllerCount_Int32","value": "2050"}
+ ,{"name": "Prop_NamedIconPathControllerLeftDeviceOff_String","value": "2051"}
+ ,{"name": "Prop_NamedIconPathControllerRightDeviceOff_String","value": "2052"}
+ ,{"name": "Prop_NamedIconPathTrackingReferenceDeviceOff_String","value": "2053"}
+ ,{"name": "Prop_DoNotApplyPrediction_Bool","value": "2054"}
+ ,{"name": "Prop_CameraToHeadTransforms_Matrix34_Array","value": "2055"}
+ ,{"name": "Prop_DistortionMeshResolution_Int32","value": "2056"}
+ ,{"name": "Prop_DriverIsDrawingControllers_Bool","value": "2057"}
+ ,{"name": "Prop_DriverRequestsApplicationPause_Bool","value": "2058"}
+ ,{"name": "Prop_DriverRequestsReducedRendering_Bool","value": "2059"}
+ ,{"name": "Prop_MinimumIpdStepMeters_Float","value": "2060"}
+ ,{"name": "Prop_AudioBridgeFirmwareVersion_Uint64","value": "2061"}
+ ,{"name": "Prop_ImageBridgeFirmwareVersion_Uint64","value": "2062"}
+ ,{"name": "Prop_ImuToHeadTransform_Matrix34","value": "2063"}
+ ,{"name": "Prop_ImuFactoryGyroBias_Vector3","value": "2064"}
+ ,{"name": "Prop_ImuFactoryGyroScale_Vector3","value": "2065"}
+ ,{"name": "Prop_ImuFactoryAccelerometerBias_Vector3","value": "2066"}
+ ,{"name": "Prop_ImuFactoryAccelerometerScale_Vector3","value": "2067"}
+ ,{"name": "Prop_ConfigurationIncludesLighthouse20Features_Bool","value": "2069"}
+ ,{"name": "Prop_DriverRequestedMuraCorrectionMode_Int32","value": "2200"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_InnerLeft_Int32","value": "2201"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_InnerRight_Int32","value": "2202"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_InnerTop_Int32","value": "2203"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_InnerBottom_Int32","value": "2204"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_OuterLeft_Int32","value": "2205"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_OuterRight_Int32","value": "2206"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_OuterTop_Int32","value": "2207"}
+ ,{"name": "Prop_DriverRequestedMuraFeather_OuterBottom_Int32","value": "2208"}
,{"name": "Prop_AttachedDeviceId_String","value": "3000"}
,{"name": "Prop_SupportedButtons_Uint64","value": "3001"}
,{"name": "Prop_Axis0Type_Int32","value": "3002"}
@@ -184,6 +231,7 @@
,{"name": "Prop_NamedIconPathDeviceAlertLow_String","value": "5008"}
,{"name": "Prop_DisplayHiddenArea_Binary_Start","value": "5100"}
,{"name": "Prop_DisplayHiddenArea_Binary_End","value": "5150"}
+ ,{"name": "Prop_ParentContainer","value": "5151"}
,{"name": "Prop_UserConfigPath_String","value": "6000"}
,{"name": "Prop_InstallPath_String","value": "6001"}
,{"name": "Prop_HasDisplayComponent_Bool","value": "6002"}
@@ -191,8 +239,12 @@
,{"name": "Prop_HasCameraComponent_Bool","value": "6004"}
,{"name": "Prop_HasDriverDirectModeComponent_Bool","value": "6005"}
,{"name": "Prop_HasVirtualDisplayComponent_Bool","value": "6006"}
+ ,{"name": "Prop_HasSpatialAnchorsSupport_Bool","value": "6007"}
+ ,{"name": "Prop_ControllerType_String","value": "7000"}
+ ,{"name": "Prop_LegacyInputProfile_String","value": "7001"}
,{"name": "Prop_VendorSpecific_Reserved_Start","value": "10000"}
,{"name": "Prop_VendorSpecific_Reserved_End","value": "10999"}
+ ,{"name": "Prop_TrackedDeviceProperty_Max","value": "1000000"}
]}
, {"enumname": "vr::ETrackedPropertyError","values": [
{"name": "TrackedProp_Success","value": "0"}
@@ -207,6 +259,7 @@
,{"name": "TrackedProp_NotYetAvailable","value": "9"}
,{"name": "TrackedProp_PermissionDenied","value": "10"}
,{"name": "TrackedProp_InvalidOperation","value": "11"}
+ ,{"name": "TrackedProp_CannotWriteToWildcards","value": "12"}
]}
, {"enumname": "vr::EVRSubmitFlags","values": [
{"name": "Submit_Default","value": "0"}
@@ -214,6 +267,7 @@
,{"name": "Submit_GlRenderBuffer","value": "2"}
,{"name": "Submit_Reserved","value": "4"}
,{"name": "Submit_TextureWithPose","value": "8"}
+ ,{"name": "Submit_TextureWithDepth","value": "16"}
]}
, {"enumname": "vr::EVRState","values": [
{"name": "VRState_Undefined","value": "-1"}
@@ -246,6 +300,14 @@
,{"name": "VREvent_ButtonUnpress","value": "201"}
,{"name": "VREvent_ButtonTouch","value": "202"}
,{"name": "VREvent_ButtonUntouch","value": "203"}
+ ,{"name": "VREvent_DualAnalog_Press","value": "250"}
+ ,{"name": "VREvent_DualAnalog_Unpress","value": "251"}
+ ,{"name": "VREvent_DualAnalog_Touch","value": "252"}
+ ,{"name": "VREvent_DualAnalog_Untouch","value": "253"}
+ ,{"name": "VREvent_DualAnalog_Move","value": "254"}
+ ,{"name": "VREvent_DualAnalog_ModeSwitch1","value": "255"}
+ ,{"name": "VREvent_DualAnalog_ModeSwitch2","value": "256"}
+ ,{"name": "VREvent_DualAnalog_Cancel","value": "257"}
,{"name": "VREvent_MouseMove","value": "300"}
,{"name": "VREvent_MouseButtonDown","value": "301"}
,{"name": "VREvent_MouseButtonUp","value": "302"}
@@ -262,8 +324,12 @@
,{"name": "VREvent_SceneFocusChanged","value": "405"}
,{"name": "VREvent_InputFocusChanged","value": "406"}
,{"name": "VREvent_SceneApplicationSecondaryRenderingStarted","value": "407"}
+ ,{"name": "VREvent_SceneApplicationUsingWrongGraphicsAdapter","value": "408"}
+ ,{"name": "VREvent_ActionBindingReloaded","value": "409"}
,{"name": "VREvent_HideRenderModels","value": "410"}
,{"name": "VREvent_ShowRenderModels","value": "411"}
+ ,{"name": "VREvent_ConsoleOpened","value": "420"}
+ ,{"name": "VREvent_ConsoleClosed","value": "421"}
,{"name": "VREvent_OverlayShown","value": "500"}
,{"name": "VREvent_OverlayHidden","value": "501"}
,{"name": "VREvent_DashboardActivated","value": "502"}
@@ -278,17 +344,18 @@
,{"name": "VREvent_OverlayGamepadFocusGained","value": "511"}
,{"name": "VREvent_OverlayGamepadFocusLost","value": "512"}
,{"name": "VREvent_OverlaySharedTextureChanged","value": "513"}
- ,{"name": "VREvent_DashboardGuideButtonDown","value": "514"}
- ,{"name": "VREvent_DashboardGuideButtonUp","value": "515"}
,{"name": "VREvent_ScreenshotTriggered","value": "516"}
,{"name": "VREvent_ImageFailed","value": "517"}
,{"name": "VREvent_DashboardOverlayCreated","value": "518"}
+ ,{"name": "VREvent_SwitchGamepadFocus","value": "519"}
,{"name": "VREvent_RequestScreenshot","value": "520"}
,{"name": "VREvent_ScreenshotTaken","value": "521"}
,{"name": "VREvent_ScreenshotFailed","value": "522"}
,{"name": "VREvent_SubmitScreenshotToDashboard","value": "523"}
,{"name": "VREvent_ScreenshotProgressToDashboard","value": "524"}
,{"name": "VREvent_PrimaryDashboardDeviceChanged","value": "525"}
+ ,{"name": "VREvent_RoomViewShown","value": "526"}
+ ,{"name": "VREvent_RoomViewHidden","value": "527"}
,{"name": "VREvent_Notification_Shown","value": "600"}
,{"name": "VREvent_Notification_Hidden","value": "601"}
,{"name": "VREvent_Notification_BeginInteraction","value": "602"}
@@ -311,7 +378,18 @@
,{"name": "VREvent_EnvironmentSettingsHaveChanged","value": "854"}
,{"name": "VREvent_PowerSettingsHaveChanged","value": "855"}
,{"name": "VREvent_EnableHomeAppSettingsHaveChanged","value": "856"}
+ ,{"name": "VREvent_SteamVRSectionSettingChanged","value": "857"}
+ ,{"name": "VREvent_LighthouseSectionSettingChanged","value": "858"}
+ ,{"name": "VREvent_NullSectionSettingChanged","value": "859"}
+ ,{"name": "VREvent_UserInterfaceSectionSettingChanged","value": "860"}
+ ,{"name": "VREvent_NotificationsSectionSettingChanged","value": "861"}
+ ,{"name": "VREvent_KeyboardSectionSettingChanged","value": "862"}
+ ,{"name": "VREvent_PerfSectionSettingChanged","value": "863"}
+ ,{"name": "VREvent_DashboardSectionSettingChanged","value": "864"}
+ ,{"name": "VREvent_WebInterfaceSectionSettingChanged","value": "865"}
+ ,{"name": "VREvent_TrackersSectionSettingChanged","value": "866"}
,{"name": "VREvent_StatusUpdate","value": "900"}
+ ,{"name": "VREvent_WebInterface_InstallDriverCompleted","value": "950"}
,{"name": "VREvent_MCImageUpdated","value": "1000"}
,{"name": "VREvent_FirmwareUpdateStarted","value": "1100"}
,{"name": "VREvent_FirmwareUpdateFinished","value": "1101"}
@@ -340,6 +418,15 @@
,{"name": "VREvent_PerformanceTest_FidelityLevel","value": "1602"}
,{"name": "VREvent_MessageOverlay_Closed","value": "1650"}
,{"name": "VREvent_MessageOverlayCloseRequested","value": "1651"}
+ ,{"name": "VREvent_Input_HapticVibration","value": "1700"}
+ ,{"name": "VREvent_Input_BindingLoadFailed","value": "1701"}
+ ,{"name": "VREvent_Input_BindingLoadSuccessful","value": "1702"}
+ ,{"name": "VREvent_Input_ActionManifestReloaded","value": "1703"}
+ ,{"name": "VREvent_Input_ActionManifestLoadFailed","value": "1704"}
+ ,{"name": "VREvent_SpatialAnchors_PoseUpdated","value": "1800"}
+ ,{"name": "VREvent_SpatialAnchors_DescriptorUpdated","value": "1801"}
+ ,{"name": "VREvent_SpatialAnchors_RequestPoseUpdate","value": "1802"}
+ ,{"name": "VREvent_SpatialAnchors_RequestDescriptorUpdate","value": "1803"}
,{"name": "VREvent_VendorSpecific_Reserved_Start","value": "10000"}
,{"name": "VREvent_VendorSpecific_Reserved_End","value": "19999"}
]}
@@ -368,6 +455,9 @@
,{"name": "k_EButton_SteamVR_Touchpad","value": "32"}
,{"name": "k_EButton_SteamVR_Trigger","value": "33"}
,{"name": "k_EButton_Dashboard_Back","value": "2"}
+ ,{"name": "k_EButton_Knuckles_A","value": "2"}
+ ,{"name": "k_EButton_Knuckles_B","value": "1"}
+ ,{"name": "k_EButton_Knuckles_JoyStick","value": "35"}
,{"name": "k_EButton_Max","value": "64"}
]}
, {"enumname": "vr::EVRMouseButton","values": [
@@ -375,6 +465,45 @@
,{"name": "VRMouseButton_Right","value": "2"}
,{"name": "VRMouseButton_Middle","value": "4"}
]}
+, {"enumname": "vr::EDualAnalogWhich","values": [
+ {"name": "k_EDualAnalog_Left","value": "0"}
+ ,{"name": "k_EDualAnalog_Right","value": "1"}
+]}
+, {"enumname": "vr::EVRInputError","values": [
+ {"name": "VRInputError_None","value": "0"}
+ ,{"name": "VRInputError_NameNotFound","value": "1"}
+ ,{"name": "VRInputError_WrongType","value": "2"}
+ ,{"name": "VRInputError_InvalidHandle","value": "3"}
+ ,{"name": "VRInputError_InvalidParam","value": "4"}
+ ,{"name": "VRInputError_NoSteam","value": "5"}
+ ,{"name": "VRInputError_MaxCapacityReached","value": "6"}
+ ,{"name": "VRInputError_IPCError","value": "7"}
+ ,{"name": "VRInputError_NoActiveActionSet","value": "8"}
+ ,{"name": "VRInputError_InvalidDevice","value": "9"}
+ ,{"name": "VRInputError_InvalidSkeleton","value": "10"}
+ ,{"name": "VRInputError_InvalidBoneCount","value": "11"}
+ ,{"name": "VRInputError_InvalidCompressedData","value": "12"}
+ ,{"name": "VRInputError_NoData","value": "13"}
+ ,{"name": "VRInputError_BufferTooSmall","value": "14"}
+ ,{"name": "VRInputError_MismatchedActionManifest","value": "15"}
+ ,{"name": "VRInputError_MissingSkeletonData","value": "16"}
+]}
+, {"enumname": "vr::EVRSpatialAnchorError","values": [
+ {"name": "VRSpatialAnchorError_Success","value": "0"}
+ ,{"name": "VRSpatialAnchorError_Internal","value": "1"}
+ ,{"name": "VRSpatialAnchorError_UnknownHandle","value": "2"}
+ ,{"name": "VRSpatialAnchorError_ArrayTooSmall","value": "3"}
+ ,{"name": "VRSpatialAnchorError_InvalidDescriptorChar","value": "4"}
+ ,{"name": "VRSpatialAnchorError_NotYetAvailable","value": "5"}
+ ,{"name": "VRSpatialAnchorError_NotAvailableInThisUniverse","value": "6"}
+ ,{"name": "VRSpatialAnchorError_PermanentlyUnavailable","value": "7"}
+ ,{"name": "VRSpatialAnchorError_WrongDriver","value": "8"}
+ ,{"name": "VRSpatialAnchorError_DescriptorTooLong","value": "9"}
+ ,{"name": "VRSpatialAnchorError_Unknown","value": "10"}
+ ,{"name": "VRSpatialAnchorError_NoRoomCalibration","value": "11"}
+ ,{"name": "VRSpatialAnchorError_InvalidArgument","value": "12"}
+ ,{"name": "VRSpatialAnchorError_UnknownDriver","value": "13"}
+]}
, {"enumname": "vr::EHiddenAreaMeshType","values": [
{"name": "k_eHiddenAreaMesh_Standard","value": "0"}
,{"name": "k_eHiddenAreaMesh_Inverse","value": "1"}
@@ -421,6 +550,9 @@
,{"name": "VROverlayError_NoNeighbor","value": "27"}
,{"name": "VROverlayError_TooManyMaskPrimitives","value": "29"}
,{"name": "VROverlayError_BadMaskPrimitive","value": "30"}
+ ,{"name": "VROverlayError_TextureAlreadyLocked","value": "31"}
+ ,{"name": "VROverlayError_TextureLockCapacityReached","value": "32"}
+ ,{"name": "VROverlayError_TextureNotLocked","value": "33"}
]}
, {"enumname": "vr::EVRApplicationType","values": [
{"name": "VRApplication_Other","value": "0"}
@@ -445,6 +577,10 @@
,{"name": "VRNotificationError_InvalidOverlayHandle","value": "102"}
,{"name": "VRNotificationError_SystemWithUserValueAlreadyExists","value": "103"}
]}
+, {"enumname": "vr::EVRSkeletalMotionRange","values": [
+ {"name": "VRSkeletalMotionRange_WithController","value": "0"}
+ ,{"name": "VRSkeletalMotionRange_WithoutController","value": "1"}
+]}
, {"enumname": "vr::EVRInitError","values": [
{"name": "VRInitError_None","value": "0"}
,{"name": "VRInitError_Unknown","value": "1"}
@@ -488,6 +624,9 @@
,{"name": "VRInitError_Init_RebootingBusy","value": "137"}
,{"name": "VRInitError_Init_FirmwareUpdateBusy","value": "138"}
,{"name": "VRInitError_Init_FirmwareRecoveryBusy","value": "139"}
+ ,{"name": "VRInitError_Init_USBServiceBusy","value": "140"}
+ ,{"name": "VRInitError_Init_VRWebHelperStartupFailed","value": "141"}
+ ,{"name": "VRInitError_Init_TrackerManagerInitFailed","value": "142"}
,{"name": "VRInitError_Driver_Failed","value": "200"}
,{"name": "VRInitError_Driver_Unknown","value": "201"}
,{"name": "VRInitError_Driver_HmdUnknown","value": "202"}
@@ -516,6 +655,7 @@
,{"name": "VRInitError_Compositor_ScreenshotsInitFailed","value": "404"}
,{"name": "VRInitError_Compositor_UnableToCreateDevice","value": "405"}
,{"name": "VRInitError_VendorSpecific_UnableToConnectToOculusRuntime","value": "1000"}
+ ,{"name": "VRInitError_VendorSpecific_WindowsNotInDevMode","value": "1001"}
,{"name": "VRInitError_VendorSpecific_HmdFound_CantOpenDevice","value": "1101"}
,{"name": "VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart","value": "1102"}
,{"name": "VRInitError_VendorSpecific_HmdFound_NoStoredConfig","value": "1103"}
@@ -562,12 +702,35 @@
,{"name": "VRTrackedCameraError_InvalidArgument","value": "114"}
,{"name": "VRTrackedCameraError_InvalidFrameBufferSize","value": "115"}
]}
+, {"enumname": "vr::EVRTrackedCameraFrameLayout","values": [
+ {"name": "EVRTrackedCameraFrameLayout_Mono","value": "1"}
+ ,{"name": "EVRTrackedCameraFrameLayout_Stereo","value": "2"}
+ ,{"name": "EVRTrackedCameraFrameLayout_VerticalLayout","value": "16"}
+ ,{"name": "EVRTrackedCameraFrameLayout_HorizontalLayout","value": "32"}
+]}
, {"enumname": "vr::EVRTrackedCameraFrameType","values": [
{"name": "VRTrackedCameraFrameType_Distorted","value": "0"}
,{"name": "VRTrackedCameraFrameType_Undistorted","value": "1"}
,{"name": "VRTrackedCameraFrameType_MaximumUndistorted","value": "2"}
,{"name": "MAX_CAMERA_FRAME_TYPES","value": "3"}
]}
+, {"enumname": "vr::EVSync","values": [
+ {"name": "VSync_None","value": "0"}
+ ,{"name": "VSync_WaitRender","value": "1"}
+ ,{"name": "VSync_NoWaitRender","value": "2"}
+]}
+, {"enumname": "vr::EVRMuraCorrectionMode","values": [
+ {"name": "EVRMuraCorrectionMode_Default","value": "0"}
+ ,{"name": "EVRMuraCorrectionMode_NoCorrection","value": "1"}
+]}
+, {"enumname": "vr::Imu_OffScaleFlags","values": [
+ {"name": "OffScale_AccelX","value": "1"}
+ ,{"name": "OffScale_AccelY","value": "2"}
+ ,{"name": "OffScale_AccelZ","value": "4"}
+ ,{"name": "OffScale_GyroX","value": "8"}
+ ,{"name": "OffScale_GyroY","value": "16"}
+ ,{"name": "OffScale_GyroZ","value": "32"}
+]}
, {"enumname": "vr::EVRApplicationError","values": [
{"name": "VRApplicationError_None","value": "0"}
,{"name": "VRApplicationError_AppKeyAlreadyExists","value": "100"}
@@ -602,6 +765,7 @@
,{"name": "VRApplicationProperty_NewsURL_String","value": "51"}
,{"name": "VRApplicationProperty_ImagePath_String","value": "52"}
,{"name": "VRApplicationProperty_Source_String","value": "53"}
+ ,{"name": "VRApplicationProperty_ActionManifestURL_String","value": "54"}
,{"name": "VRApplicationProperty_IsDashboardOverlay_Bool","value": "60"}
,{"name": "VRApplicationProperty_IsTemplate_Bool","value": "61"}
,{"name": "VRApplicationProperty_IsInstanced_Bool","value": "62"}
@@ -648,9 +812,15 @@
,{"name": "VRCompositorError_AlreadySubmitted","value": "108"}
,{"name": "VRCompositorError_InvalidBounds","value": "109"}
]}
+, {"enumname": "vr::EVRCompositorTimingMode","values": [
+ {"name": "VRCompositorTimingMode_Implicit","value": "0"}
+ ,{"name": "VRCompositorTimingMode_Explicit_RuntimePerformsPostPresentHandoff","value": "1"}
+ ,{"name": "VRCompositorTimingMode_Explicit_ApplicationPerformsPostPresentHandoff","value": "2"}
+]}
, {"enumname": "vr::VROverlayInputMethod","values": [
{"name": "VROverlayInputMethod_None","value": "0"}
,{"name": "VROverlayInputMethod_Mouse","value": "1"}
+ ,{"name": "VROverlayInputMethod_DualAnalog","value": "2"}
]}
, {"enumname": "vr::VROverlayTransformType","values": [
{"name": "VROverlayTransform_Absolute","value": "0"}
@@ -755,6 +925,29 @@
,{"name": "VRScreenshotError_BufferTooSmall","value": "102"}
,{"name": "VRScreenshotError_ScreenshotAlreadyInProgress","value": "108"}
]}
+, {"enumname": "vr::EVRSkeletalTransformSpace","values": [
+ {"name": "VRSkeletalTransformSpace_Model","value": "0"}
+ ,{"name": "VRSkeletalTransformSpace_Parent","value": "1"}
+ ,{"name": "VRSkeletalTransformSpace_Additive","value": "2"}
+]}
+, {"enumname": "vr::EVRInputFilterCancelType","values": [
+ {"name": "VRInputFilterCancel_Timers","value": "0"}
+ ,{"name": "VRInputFilterCancel_Momentum","value": "1"}
+]}
+, {"enumname": "vr::EIOBufferError","values": [
+ {"name": "IOBuffer_Success","value": "0"}
+ ,{"name": "IOBuffer_OperationFailed","value": "100"}
+ ,{"name": "IOBuffer_InvalidHandle","value": "101"}
+ ,{"name": "IOBuffer_InvalidArgument","value": "102"}
+ ,{"name": "IOBuffer_PathExists","value": "103"}
+ ,{"name": "IOBuffer_PathDoesNotExist","value": "104"}
+ ,{"name": "IOBuffer_Permission","value": "105"}
+]}
+, {"enumname": "vr::EIOBufferMode","values": [
+ {"name": "IOBufferMode_Read","value": "1"}
+ ,{"name": "IOBufferMode_Write","value": "2"}
+ ,{"name": "IOBufferMode_Create","value": "512"}
+]}
],
"consts":[{
"constname": "k_nDriverNone","consttype": "const uint32_t", "constval": "4294967295"}
@@ -763,7 +956,7 @@
,{
"constname": "k_unTrackedDeviceIndex_Hmd","consttype": "const uint32_t", "constval": "0"}
,{
- "constname": "k_unMaxTrackedDeviceCount","consttype": "const uint32_t", "constval": "16"}
+ "constname": "k_unMaxTrackedDeviceCount","consttype": "const uint32_t", "constval": "64"}
,{
"constname": "k_unTrackedDeviceIndexOther","consttype": "const uint32_t", "constval": "4294967294"}
,{
@@ -772,6 +965,8 @@
"constname": "k_ulInvalidPropertyContainer","consttype": "const PropertyContainerHandle_t", "constval": "0"}
,{
"constname": "k_unInvalidPropertyTag","consttype": "const PropertyTypeTag_t", "constval": "0"}
+,{
+ "constname": "k_ulInvalidDriverHandle","consttype": "const PropertyContainerHandle_t", "constval": "0"}
,{
"constname": "k_unFloatPropertyTag","consttype": "const PropertyTypeTag_t", "constval": "1"}
,{
@@ -792,12 +987,32 @@
"constname": "k_unHmdVector4PropertyTag","consttype": "const PropertyTypeTag_t", "constval": "23"}
,{
"constname": "k_unHiddenAreaPropertyTag","consttype": "const PropertyTypeTag_t", "constval": "30"}
+,{
+ "constname": "k_unPathHandleInfoTag","consttype": "const PropertyTypeTag_t", "constval": "31"}
+,{
+ "constname": "k_unActionPropertyTag","consttype": "const PropertyTypeTag_t", "constval": "32"}
+,{
+ "constname": "k_unInputValuePropertyTag","consttype": "const PropertyTypeTag_t", "constval": "33"}
+,{
+ "constname": "k_unWildcardPropertyTag","consttype": "const PropertyTypeTag_t", "constval": "34"}
+,{
+ "constname": "k_unHapticVibrationPropertyTag","consttype": "const PropertyTypeTag_t", "constval": "35"}
+,{
+ "constname": "k_unSkeletonPropertyTag","consttype": "const PropertyTypeTag_t", "constval": "36"}
+,{
+ "constname": "k_unSpatialAnchorPosePropertyTag","consttype": "const PropertyTypeTag_t", "constval": "40"}
,{
"constname": "k_unOpenVRInternalReserved_Start","consttype": "const PropertyTypeTag_t", "constval": "1000"}
,{
"constname": "k_unOpenVRInternalReserved_End","consttype": "const PropertyTypeTag_t", "constval": "10000"}
,{
"constname": "k_unMaxPropertyStringSize","consttype": "const uint32_t", "constval": "32768"}
+,{
+ "constname": "k_ulInvalidActionHandle","consttype": "const VRActionHandle_t", "constval": "0"}
+,{
+ "constname": "k_ulInvalidActionSetHandle","consttype": "const VRActionSetHandle_t", "constval": "0"}
+,{
+ "constname": "k_ulInvalidInputValueHandle","consttype": "const VRInputValueHandle_t", "constval": "0"}
,{
"constname": "k_unControllerStateAxisCount","consttype": "const uint32_t", "constval": "5"}
,{
@@ -805,7 +1020,7 @@
,{
"constname": "k_unScreenshotHandleInvalid","consttype": "const uint32_t", "constval": "0"}
,{
- "constname": "IVRSystem_Version","consttype": "const char *const", "constval": "IVRSystem_017"}
+ "constname": "IVRSystem_Version","consttype": "const char *const", "constval": "IVRSystem_019"}
,{
"constname": "IVRExtendedDisplay_Version","consttype": "const char *const", "constval": "IVRExtendedDisplay_001"}
,{
@@ -823,7 +1038,7 @@
,{
"constname": "IVRChaperoneSetup_Version","consttype": "const char *const", "constval": "IVRChaperoneSetup_005"}
,{
- "constname": "IVRCompositor_Version","consttype": "const char *const", "constval": "IVRCompositor_021"}
+ "constname": "IVRCompositor_Version","consttype": "const char *const", "constval": "IVRCompositor_022"}
,{
"constname": "k_unVROverlayMaxKeyLength","consttype": "const uint32_t", "constval": "128"}
,{
@@ -833,7 +1048,7 @@
,{
"constname": "k_unMaxOverlayIntersectionMaskPrimitivesCount","consttype": "const uint32_t", "constval": "32"}
,{
- "constname": "IVROverlay_Version","consttype": "const char *const", "constval": "IVROverlay_016"}
+ "constname": "IVROverlay_Version","consttype": "const char *const", "constval": "IVROverlay_018"}
,{
"constname": "k_pch_Controller_Component_GDC2015","consttype": "const char *const", "constval": "gdc2015"}
,{
@@ -845,7 +1060,7 @@
,{
"constname": "k_pch_Controller_Component_Status","consttype": "const char *const", "constval": "status"}
,{
- "constname": "IVRRenderModels_Version","consttype": "const char *const", "constval": "IVRRenderModels_005"}
+ "constname": "IVRRenderModels_Version","consttype": "const char *const", "constval": "IVRRenderModels_006"}
,{
"constname": "k_unNotificationTextMaxSize","consttype": "const uint32_t", "constval": "256"}
,{
@@ -940,12 +1155,32 @@
"constname": "k_pch_SteamVR_IpdOffset_Float","consttype": "const char *const", "constval": "ipdOffset"}
,{
"constname": "k_pch_SteamVR_AllowSupersampleFiltering_Bool","consttype": "const char *const", "constval": "allowSupersampleFiltering"}
+,{
+ "constname": "k_pch_SteamVR_SupersampleManualOverride_Bool","consttype": "const char *const", "constval": "supersampleManualOverride"}
,{
"constname": "k_pch_SteamVR_EnableLinuxVulkanAsync_Bool","consttype": "const char *const", "constval": "enableLinuxVulkanAsync"}
+,{
+ "constname": "k_pch_SteamVR_AllowDisplayLockedMode_Bool","consttype": "const char *const", "constval": "allowDisplayLockedMode"}
+,{
+ "constname": "k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool","consttype": "const char *const", "constval": "haveStartedTutorialForNativeChaperoneDriver"}
+,{
+ "constname": "k_pch_SteamVR_ForceWindows32bitVRMonitor","consttype": "const char *const", "constval": "forceWindows32BitVRMonitor"}
+,{
+ "constname": "k_pch_SteamVR_DebugInput","consttype": "const char *const", "constval": "debugInput"}
+,{
+ "constname": "k_pch_SteamVR_LegacyInputRebinding","consttype": "const char *const", "constval": "legacyInputRebinding"}
+,{
+ "constname": "k_pch_SteamVR_DebugInputBinding","consttype": "const char *const", "constval": "debugInputBinding"}
+,{
+ "constname": "k_pch_SteamVR_InputBindingUIBlock","consttype": "const char *const", "constval": "inputBindingUI"}
+,{
+ "constname": "k_pch_SteamVR_RenderCameraMode","consttype": "const char *const", "constval": "renderCameraMode"}
,{
"constname": "k_pch_Lighthouse_Section","consttype": "const char *const", "constval": "driver_lighthouse"}
,{
"constname": "k_pch_Lighthouse_DisableIMU_Bool","consttype": "const char *const", "constval": "disableimu"}
+,{
+ "constname": "k_pch_Lighthouse_DisableIMUExceptHMD_Bool","consttype": "const char *const", "constval": "disableimuexcepthmd"}
,{
"constname": "k_pch_Lighthouse_UseDisambiguation_String","consttype": "const char *const", "constval": "usedisambiguation"}
,{
@@ -954,6 +1189,10 @@
"constname": "k_pch_Lighthouse_PrimaryBasestation_Int32","consttype": "const char *const", "constval": "primarybasestation"}
,{
"constname": "k_pch_Lighthouse_DBHistory_Bool","consttype": "const char *const", "constval": "dbhistory"}
+,{
+ "constname": "k_pch_Lighthouse_EnableBluetooth_Bool","consttype": "const char *const", "constval": "enableBluetooth"}
+,{
+ "constname": "k_pch_Lighthouse_PowerManagedBaseStations_String","consttype": "const char *const", "constval": "PowerManagedBaseStations"}
,{
"constname": "k_pch_Null_Section","consttype": "const char *const", "constval": "driver_null"}
,{
@@ -1062,6 +1301,8 @@
"constname": "k_pch_Camera_BoundsColorGammaA_Int32","consttype": "const char *const", "constval": "cameraBoundsColorGammaA"}
,{
"constname": "k_pch_Camera_BoundsStrength_Int32","consttype": "const char *const", "constval": "cameraBoundsStrength"}
+,{
+ "constname": "k_pch_Camera_RoomViewMode_Int32","consttype": "const char *const", "constval": "cameraRoomViewMode"}
,{
"constname": "k_pch_audio_Section","consttype": "const char *const", "constval": "audio"}
,{
@@ -1096,19 +1337,61 @@
"constname": "k_pch_Dashboard_EnableDashboard_Bool","consttype": "const char *const", "constval": "enableDashboard"}
,{
"constname": "k_pch_Dashboard_ArcadeMode_Bool","consttype": "const char *const", "constval": "arcadeMode"}
+,{
+ "constname": "k_pch_Dashboard_EnableWebUI","consttype": "const char *const", "constval": "webUI"}
+,{
+ "constname": "k_pch_Dashboard_EnableWebUIDevTools","consttype": "const char *const", "constval": "webUIDevTools"}
+,{
+ "constname": "k_pch_Dashboard_EnableWebUIDashboardReplacement","consttype": "const char *const", "constval": "webUIDashboard"}
,{
"constname": "k_pch_modelskin_Section","consttype": "const char *const", "constval": "modelskins"}
,{
"constname": "k_pch_Driver_Enable_Bool","consttype": "const char *const", "constval": "enable"}
+,{
+ "constname": "k_pch_WebInterface_Section","consttype": "const char *const", "constval": "WebInterface"}
+,{
+ "constname": "k_pch_WebInterface_WebEnable_Bool","consttype": "const char *const", "constval": "WebEnable"}
+,{
+ "constname": "k_pch_WebInterface_WebPort_String","consttype": "const char *const", "constval": "WebPort"}
+,{
+ "constname": "k_pch_TrackingOverride_Section","consttype": "const char *const", "constval": "TrackingOverrides"}
+,{
+ "constname": "k_pch_App_BindingAutosaveURLSuffix_String","consttype": "const char *const", "constval": "AutosaveURL"}
+,{
+ "constname": "k_pch_App_BindingCurrentURLSuffix_String","consttype": "const char *const", "constval": "CurrentURL"}
+,{
+ "constname": "k_pch_App_NeedToUpdateAutosaveSuffix_Bool","consttype": "const char *const", "constval": "NeedToUpdateAutosave"}
+,{
+ "constname": "k_pch_App_ActionManifestURL_String","consttype": "const char *const", "constval": "ActionManifestURL"}
+,{
+ "constname": "k_pch_Trackers_Section","consttype": "const char *const", "constval": "trackers"}
,{
"constname": "IVRScreenshots_Version","consttype": "const char *const", "constval": "IVRScreenshots_001"}
,{
"constname": "IVRResources_Version","consttype": "const char *const", "constval": "IVRResources_001"}
,{
"constname": "IVRDriverManager_Version","consttype": "const char *const", "constval": "IVRDriverManager_001"}
+,{
+ "constname": "k_unMaxActionNameLength","consttype": "const uint32_t", "constval": "64"}
+,{
+ "constname": "k_unMaxActionSetNameLength","consttype": "const uint32_t", "constval": "64"}
+,{
+ "constname": "k_unMaxActionOriginCount","consttype": "const uint32_t", "constval": "16"}
+,{
+ "constname": "IVRInput_Version","consttype": "const char *const", "constval": "IVRInput_004"}
+,{
+ "constname": "k_ulInvalidIOBufferHandle","consttype": "const uint64_t", "constval": "0"}
+,{
+ "constname": "IVRIOBuffer_Version","consttype": "const char *", "constval": "IVRIOBuffer_001"}
+,{
+ "constname": "k_ulInvalidSpatialAnchorHandle","consttype": "const SpatialAnchorHandle_t", "constval": "0"}
+,{
+ "constname": "IVRSpatialAnchors_Version","consttype": "const char *const", "constval": "IVRSpatialAnchors_001"}
],
"structs":[{"struct": "vr::HmdMatrix34_t","fields": [
{ "fieldname": "m", "fieldtype": "float [3][4]"}]}
+,{"struct": "vr::HmdMatrix33_t","fields": [
+{ "fieldname": "m", "fieldtype": "float [3][3]"}]}
,{"struct": "vr::HmdMatrix44_t","fields": [
{ "fieldname": "m", "fieldtype": "float [4][4]"}]}
,{"struct": "vr::HmdVector3_t","fields": [
@@ -1124,6 +1407,11 @@
{ "fieldname": "x", "fieldtype": "double"},
{ "fieldname": "y", "fieldtype": "double"},
{ "fieldname": "z", "fieldtype": "double"}]}
+,{"struct": "vr::HmdQuaternionf_t","fields": [
+{ "fieldname": "w", "fieldtype": "float"},
+{ "fieldname": "x", "fieldtype": "float"},
+{ "fieldname": "y", "fieldtype": "float"},
+{ "fieldname": "z", "fieldtype": "float"}]}
,{"struct": "vr::HmdColor_t","fields": [
{ "fieldname": "r", "fieldtype": "float"},
{ "fieldname": "g", "fieldtype": "float"},
@@ -1156,6 +1444,14 @@
{ "fieldname": "vMax", "fieldtype": "float"}]}
,{"struct": "vr::VRTextureWithPose_t","fields": [
{ "fieldname": "mDeviceToAbsoluteTracking", "fieldtype": "struct vr::HmdMatrix34_t"}]}
+,{"struct": "vr::VRTextureDepthInfo_t","fields": [
+{ "fieldname": "handle", "fieldtype": "void *"},
+{ "fieldname": "mProjection", "fieldtype": "struct vr::HmdMatrix44_t"},
+{ "fieldname": "vRange", "fieldtype": "struct vr::HmdVector2_t"}]}
+,{"struct": "vr::VRTextureWithDepth_t","fields": [
+{ "fieldname": "depth", "fieldtype": "struct vr::VRTextureDepthInfo_t"}]}
+,{"struct": "vr::VRTextureWithPoseAndDepth_t","fields": [
+{ "fieldname": "depth", "fieldtype": "struct vr::VRTextureDepthInfo_t"}]}
,{"struct": "vr::VRVulkanTextureData_t","fields": [
{ "fieldname": "m_nImage", "fieldtype": "uint64_t"},
{ "fieldname": "m_pDevice", "fieldtype": "struct VkDevice_T *"},
@@ -1196,7 +1492,8 @@
{ "fieldname": "oldPid", "fieldtype": "uint32_t"},
{ "fieldname": "bForced", "fieldtype": "_Bool"}]}
,{"struct": "vr::VREvent_Overlay_t","fields": [
-{ "fieldname": "overlayHandle", "fieldtype": "uint64_t"}]}
+{ "fieldname": "overlayHandle", "fieldtype": "uint64_t"},
+{ "fieldname": "devicePath", "fieldtype": "uint64_t"}]}
,{"struct": "vr::VREvent_Status_t","fields": [
{ "fieldname": "statusState", "fieldtype": "uint32_t"}]}
,{"struct": "vr::VREvent_Keyboard_t","fields": [
@@ -1209,7 +1506,9 @@
{ "fieldname": "m_nCurrentUniverse", "fieldtype": "uint64_t"}]}
,{"struct": "vr::VREvent_Reserved_t","fields": [
{ "fieldname": "reserved0", "fieldtype": "uint64_t"},
-{ "fieldname": "reserved1", "fieldtype": "uint64_t"}]}
+{ "fieldname": "reserved1", "fieldtype": "uint64_t"},
+{ "fieldname": "reserved2", "fieldtype": "uint64_t"},
+{ "fieldname": "reserved3", "fieldtype": "uint64_t"}]}
,{"struct": "vr::VREvent_PerformanceTest_t","fields": [
{ "fieldname": "m_nFidelityLevel", "fieldtype": "uint32_t"}]}
,{"struct": "vr::VREvent_SeatedZeroPoseReset_t","fields": [
@@ -1230,6 +1529,32 @@
,{"struct": "vr::VREvent_Property_t","fields": [
{ "fieldname": "container", "fieldtype": "PropertyContainerHandle_t"},
{ "fieldname": "prop", "fieldtype": "enum vr::ETrackedDeviceProperty"}]}
+,{"struct": "vr::VREvent_DualAnalog_t","fields": [
+{ "fieldname": "x", "fieldtype": "float"},
+{ "fieldname": "y", "fieldtype": "float"},
+{ "fieldname": "transformedX", "fieldtype": "float"},
+{ "fieldname": "transformedY", "fieldtype": "float"},
+{ "fieldname": "which", "fieldtype": "enum vr::EDualAnalogWhich"}]}
+,{"struct": "vr::VREvent_HapticVibration_t","fields": [
+{ "fieldname": "containerHandle", "fieldtype": "uint64_t"},
+{ "fieldname": "componentHandle", "fieldtype": "uint64_t"},
+{ "fieldname": "fDurationSeconds", "fieldtype": "float"},
+{ "fieldname": "fFrequency", "fieldtype": "float"},
+{ "fieldname": "fAmplitude", "fieldtype": "float"}]}
+,{"struct": "vr::VREvent_WebConsole_t","fields": [
+{ "fieldname": "webConsoleHandle", "fieldtype": "WebConsoleHandle_t"}]}
+,{"struct": "vr::VREvent_InputBindingLoad_t","fields": [
+{ "fieldname": "ulAppContainer", "fieldtype": "vr::PropertyContainerHandle_t"},
+{ "fieldname": "pathMessage", "fieldtype": "uint64_t"},
+{ "fieldname": "pathUrl", "fieldtype": "uint64_t"},
+{ "fieldname": "pathControllerType", "fieldtype": "uint64_t"}]}
+,{"struct": "vr::VREvent_InputActionManifestLoad_t","fields": [
+{ "fieldname": "pathAppKey", "fieldtype": "uint64_t"},
+{ "fieldname": "pathMessage", "fieldtype": "uint64_t"},
+{ "fieldname": "pathMessageParam", "fieldtype": "uint64_t"},
+{ "fieldname": "pathManifestPath", "fieldtype": "uint64_t"}]}
+,{"struct": "vr::VREvent_SpatialAnchor_t","fields": [
+{ "fieldname": "unHandle", "fieldtype": "SpatialAnchorHandle_t"}]}
,{"struct": "vr::(anonymous)","fields": [
{ "fieldname": "reserved", "fieldtype": "struct vr::VREvent_Reserved_t"},
{ "fieldname": "controller", "fieldtype": "struct vr::VREvent_Controller_t"},
@@ -1250,7 +1575,13 @@
{ "fieldname": "applicationLaunch", "fieldtype": "struct vr::VREvent_ApplicationLaunch_t"},
{ "fieldname": "cameraSurface", "fieldtype": "struct vr::VREvent_EditingCameraSurface_t"},
{ "fieldname": "messageOverlay", "fieldtype": "struct vr::VREvent_MessageOverlay_t"},
-{ "fieldname": "property", "fieldtype": "struct vr::VREvent_Property_t"}]}
+{ "fieldname": "property", "fieldtype": "struct vr::VREvent_Property_t"},
+{ "fieldname": "dualAnalog", "fieldtype": "struct vr::VREvent_DualAnalog_t"},
+{ "fieldname": "hapticVibration", "fieldtype": "struct vr::VREvent_HapticVibration_t"},
+{ "fieldname": "webConsole", "fieldtype": "struct vr::VREvent_WebConsole_t"},
+{ "fieldname": "inputBinding", "fieldtype": "struct vr::VREvent_InputBindingLoad_t"},
+{ "fieldname": "actionManifest", "fieldtype": "struct vr::VREvent_InputActionManifestLoad_t"},
+{ "fieldname": "spatialAnchor", "fieldtype": "struct vr::VREvent_SpatialAnchor_t"}]}
,{"struct": "vr::VREvent_t","fields": [
{ "fieldname": "eventType", "fieldtype": "uint32_t"},
{ "fieldname": "trackedDeviceIndex", "fieldtype": "TrackedDeviceIndex_t"},
@@ -1282,6 +1613,9 @@
{ "fieldname": "gridWidth", "fieldtype": "float"},
{ "fieldname": "gridScale", "fieldtype": "float"},
{ "fieldname": "transform", "fieldtype": "struct vr::HmdMatrix44_t"}]}
+,{"struct": "vr::VRBoneTransform_t","fields": [
+{ "fieldname": "position", "fieldtype": "struct vr::HmdVector4_t"},
+{ "fieldname": "orientation", "fieldtype": "struct vr::HmdQuaternionf_t"}]}
,{"struct": "vr::CameraVideoStreamFrameHeader_t","fields": [
{ "fieldname": "eFrameType", "fieldtype": "enum vr::EVRTrackedCameraFrameType"},
{ "fieldname": "nWidth", "fieldtype": "uint32_t"},
@@ -1289,6 +1623,17 @@
{ "fieldname": "nBytesPerPixel", "fieldtype": "uint32_t"},
{ "fieldname": "nFrameSequence", "fieldtype": "uint32_t"},
{ "fieldname": "standingTrackedDevicePose", "fieldtype": "struct vr::TrackedDevicePose_t"}]}
+,{"struct": "vr::DriverDirectMode_FrameTiming","fields": [
+{ "fieldname": "m_nSize", "fieldtype": "uint32_t"},
+{ "fieldname": "m_nNumFramePresents", "fieldtype": "uint32_t"},
+{ "fieldname": "m_nNumMisPresented", "fieldtype": "uint32_t"},
+{ "fieldname": "m_nNumDroppedFrames", "fieldtype": "uint32_t"},
+{ "fieldname": "m_nReprojectionFlags", "fieldtype": "uint32_t"}]}
+,{"struct": "vr::ImuSample_t","fields": [
+{ "fieldname": "fSampleTime", "fieldtype": "double"},
+{ "fieldname": "vAccel", "fieldtype": "struct vr::HmdVector3d_t"},
+{ "fieldname": "vGyro", "fieldtype": "struct vr::HmdVector3d_t"},
+{ "fieldname": "unOffScaleFlags", "fieldtype": "uint32_t"}]}
,{"struct": "vr::AppOverrideKeys_t","fields": [
{ "fieldname": "pchKey", "fieldtype": "const char *"},
{ "fieldname": "pchValue", "fieldtype": "const char *"}]}
@@ -1382,6 +1727,44 @@
{ "fieldname": "m_nWidth", "fieldtype": "int32_t"},
{ "fieldname": "m_nHeight", "fieldtype": "int32_t"},
{ "fieldname": "m_nBytesPerPixel", "fieldtype": "int32_t"}]}
+,{"struct": "vr::CVRSettingHelper","fields": [
+{ "fieldname": "m_pSettings", "fieldtype": "class vr::IVRSettings *"}]}
+,{"struct": "vr::InputAnalogActionData_t","fields": [
+{ "fieldname": "bActive", "fieldtype": "_Bool"},
+{ "fieldname": "activeOrigin", "fieldtype": "VRInputValueHandle_t"},
+{ "fieldname": "x", "fieldtype": "float"},
+{ "fieldname": "y", "fieldtype": "float"},
+{ "fieldname": "z", "fieldtype": "float"},
+{ "fieldname": "deltaX", "fieldtype": "float"},
+{ "fieldname": "deltaY", "fieldtype": "float"},
+{ "fieldname": "deltaZ", "fieldtype": "float"},
+{ "fieldname": "fUpdateTime", "fieldtype": "float"}]}
+,{"struct": "vr::InputDigitalActionData_t","fields": [
+{ "fieldname": "bActive", "fieldtype": "_Bool"},
+{ "fieldname": "activeOrigin", "fieldtype": "VRInputValueHandle_t"},
+{ "fieldname": "bState", "fieldtype": "_Bool"},
+{ "fieldname": "bChanged", "fieldtype": "_Bool"},
+{ "fieldname": "fUpdateTime", "fieldtype": "float"}]}
+,{"struct": "vr::InputPoseActionData_t","fields": [
+{ "fieldname": "bActive", "fieldtype": "_Bool"},
+{ "fieldname": "activeOrigin", "fieldtype": "VRInputValueHandle_t"},
+{ "fieldname": "pose", "fieldtype": "struct vr::TrackedDevicePose_t"}]}
+,{"struct": "vr::InputSkeletalActionData_t","fields": [
+{ "fieldname": "bActive", "fieldtype": "_Bool"},
+{ "fieldname": "activeOrigin", "fieldtype": "VRInputValueHandle_t"},
+{ "fieldname": "boneCount", "fieldtype": "uint32_t"}]}
+,{"struct": "vr::InputOriginInfo_t","fields": [
+{ "fieldname": "devicePath", "fieldtype": "VRInputValueHandle_t"},
+{ "fieldname": "trackedDeviceIndex", "fieldtype": "TrackedDeviceIndex_t"},
+{ "fieldname": "rchRenderModelComponentName", "fieldtype": "char [128]"}]}
+,{"struct": "vr::VRActiveActionSet_t","fields": [
+{ "fieldname": "ulActionSet", "fieldtype": "VRActionSetHandle_t"},
+{ "fieldname": "ulRestrictedToDevice", "fieldtype": "VRInputValueHandle_t"},
+{ "fieldname": "ulSecondaryActionSet", "fieldtype": "VRActionSetHandle_t"},
+{ "fieldname": "unPadding", "fieldtype": "uint32_t"},
+{ "fieldname": "nPriority", "fieldtype": "int32_t"}]}
+,{"struct": "vr::SpatialAnchorPose_t","fields": [
+{ "fieldname": "mAnchorToAbsoluteTracking", "fieldtype": "struct vr::HmdMatrix34_t"}]}
,{"struct": "vr::COpenVRContext","fields": [
{ "fieldname": "m_pVRSystem", "fieldtype": "class vr::IVRSystem *"},
{ "fieldname": "m_pVRChaperone", "fieldtype": "class vr::IVRChaperone *"},
@@ -1395,7 +1778,10 @@
{ "fieldname": "m_pVRApplications", "fieldtype": "class vr::IVRApplications *"},
{ "fieldname": "m_pVRTrackedCamera", "fieldtype": "class vr::IVRTrackedCamera *"},
{ "fieldname": "m_pVRScreenshots", "fieldtype": "class vr::IVRScreenshots *"},
-{ "fieldname": "m_pVRDriverManager", "fieldtype": "class vr::IVRDriverManager *"}]}
+{ "fieldname": "m_pVRDriverManager", "fieldtype": "class vr::IVRDriverManager *"},
+{ "fieldname": "m_pVRInput", "fieldtype": "class vr::IVRInput *"},
+{ "fieldname": "m_pVRIOBuffer", "fieldtype": "class vr::IVRIOBuffer *"},
+{ "fieldname": "m_pVRSpatialAnchors", "fieldtype": "class vr::IVRSpatialAnchors *"}]}
],
"methods":[{
"classname": "vr::IVRSystem",
@@ -1629,6 +2015,19 @@
{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"}
]
}
+,{
+ "classname": "vr::IVRSystem",
+ "methodname": "GetArrayTrackedDeviceProperty",
+ "returntype": "uint32_t",
+ "params": [
+{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"},
+{ "paramname": "prop" ,"paramtype": "vr::ETrackedDeviceProperty"},
+{ "paramname": "propType" ,"paramtype": "vr::PropertyTypeTag_t"},
+{ "paramname": "pBuffer" ,"paramtype": "void *"},
+{ "paramname": "unBufferSize" ,"paramtype": "uint32_t"},
+{ "paramname": "pError" ,"paramtype": "vr::ETrackedPropertyError *"}
+ ]
+}
,{
"classname": "vr::IVRSystem",
"methodname": "GetStringTrackedDeviceProperty",
@@ -1736,17 +2135,22 @@
}
,{
"classname": "vr::IVRSystem",
- "methodname": "CaptureInputFocus",
+ "methodname": "IsInputAvailable",
"returntype": "bool"
}
,{
"classname": "vr::IVRSystem",
- "methodname": "ReleaseInputFocus",
- "returntype": "void"
+ "methodname": "IsSteamVRDrawingControllers",
+ "returntype": "bool"
}
,{
"classname": "vr::IVRSystem",
- "methodname": "IsInputFocusCapturedByAnotherProcess",
+ "methodname": "ShouldApplicationPause",
+ "returntype": "bool"
+}
+,{
+ "classname": "vr::IVRSystem",
+ "methodname": "ShouldApplicationReduceRenderingWork",
"returntype": "bool"
}
,{
@@ -1756,7 +2160,7 @@
"params": [
{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"},
{ "paramname": "pchRequest" ,"paramtype": "const char *"},
-{ "paramname": "pchResponseBuffer" ,"paramtype": "char *"},
+{ "paramname": "pchResponseBuffer" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unResponseBufferSize" ,"paramtype": "uint32_t"}
]
}
@@ -1984,7 +2388,7 @@
"returntype": "vr::EVRApplicationError",
"params": [
{ "paramname": "unProcessId" ,"paramtype": "uint32_t"},
-{ "paramname": "pchAppKeyBuffer" ,"paramtype": "char *"},
+{ "paramname": "pchAppKeyBuffer" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unAppKeyBufferLen" ,"paramtype": "uint32_t"}
]
}
@@ -2121,7 +2525,7 @@
"returntype": "bool",
"params": [
{ "paramname": "pchMimeType" ,"paramtype": "const char *"},
-{ "paramname": "pchAppKeyBuffer" ,"paramtype": "char *"},
+{ "paramname": "pchAppKeyBuffer" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unAppKeyBufferLen" ,"paramtype": "uint32_t"}
]
}
@@ -2131,7 +2535,7 @@
"returntype": "bool",
"params": [
{ "paramname": "pchAppKey" ,"paramtype": "const char *"},
-{ "paramname": "pchMimeTypesBuffer" ,"paramtype": "char *"},
+{ "paramname": "pchMimeTypesBuffer" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unMimeTypesBuffer" ,"paramtype": "uint32_t"}
]
}
@@ -2141,7 +2545,7 @@
"returntype": "uint32_t",
"params": [
{ "paramname": "pchMimeType" ,"paramtype": "const char *"},
-{ "paramname": "pchAppKeysThatSupportBuffer" ,"paramtype": "char *"},
+{ "paramname": "pchAppKeysThatSupportBuffer" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unAppKeysThatSupportBuffer" ,"paramtype": "uint32_t"}
]
}
@@ -2151,7 +2555,7 @@
"returntype": "uint32_t",
"params": [
{ "paramname": "unHandle" ,"paramtype": "uint32_t"},
-{ "paramname": "pchArgs" ,"paramtype": "char *"},
+{ "paramname": "pchArgs" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unArgs" ,"paramtype": "uint32_t"}
]
}
@@ -2160,7 +2564,7 @@
"methodname": "GetStartingApplication",
"returntype": "vr::EVRApplicationError",
"params": [
-{ "paramname": "pchAppKeyBuffer" ,"paramtype": "char *"},
+{ "paramname": "pchAppKeyBuffer" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unAppKeyBufferLen" ,"paramtype": "uint32_t"}
]
}
@@ -2737,7 +3141,7 @@
"methodname": "SetExplicitTimingMode",
"returntype": "void",
"params": [
-{ "paramname": "bExplicitTimingMode" ,"paramtype": "bool"}
+{ "paramname": "eTimingMode" ,"paramtype": "vr::EVRCompositorTimingMode"}
]
}
,{
@@ -3029,7 +3433,7 @@
"returntype": "uint32_t",
"params": [
{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"},
-{ "paramname": "pchValue" ,"paramtype": "char *"},
+{ "paramname": "pchValue" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unBufferSize" ,"paramtype": "uint32_t"},
{ "paramname": "pColor" ,"paramtype": "struct vr::HmdColor_t *"},
{ "paramname": "pError" ,"paramtype": "vr::EVROverlayError *"}
@@ -3111,7 +3515,7 @@
"params": [
{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"},
{ "paramname": "punDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t *"},
-{ "paramname": "pchComponentName" ,"paramtype": "char *"},
+{ "paramname": "pchComponentName" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unComponentNameSize" ,"paramtype": "uint32_t"}
]
}
@@ -3226,15 +3630,6 @@
{ "paramname": "pResults" ,"paramtype": "struct vr::VROverlayIntersectionResults_t *"}
]
}
-,{
- "classname": "vr::IVROverlay",
- "methodname": "HandleControllerOverlayInteractionAsMouse",
- "returntype": "bool",
- "params": [
-{ "paramname": "ulOverlayHandle" ,"paramtype": "vr::VROverlayHandle_t"},
-{ "paramname": "unControllerDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"}
- ]
-}
,{
"classname": "vr::IVROverlay",
"methodname": "IsHoverTargetOverlay",
@@ -3275,6 +3670,28 @@
{ "paramname": "ulFrom" ,"paramtype": "vr::VROverlayHandle_t"}
]
}
+,{
+ "classname": "vr::IVROverlay",
+ "methodname": "SetOverlayDualAnalogTransform",
+ "returntype": "vr::EVROverlayError",
+ "params": [
+{ "paramname": "ulOverlay" ,"paramtype": "vr::VROverlayHandle_t"},
+{ "paramname": "eWhich" ,"paramtype": "vr::EDualAnalogWhich"},
+{ "paramname": "vCenter" ,"paramtype": "const struct vr::HmdVector2_t &"},
+{ "paramname": "fRadius" ,"paramtype": "float"}
+ ]
+}
+,{
+ "classname": "vr::IVROverlay",
+ "methodname": "GetOverlayDualAnalogTransform",
+ "returntype": "vr::EVROverlayError",
+ "params": [
+{ "paramname": "ulOverlay" ,"paramtype": "vr::VROverlayHandle_t"},
+{ "paramname": "eWhich" ,"paramtype": "vr::EDualAnalogWhich"},
+{ "paramname": "pvCenter" ,"paramtype": "struct vr::HmdVector2_t *"},
+{ "paramname": "pfRadius" ,"paramtype": "float *"}
+ ]
+}
,{
"classname": "vr::IVROverlay",
"methodname": "SetOverlayTexture",
@@ -3617,6 +4034,18 @@
{ "paramname": "unComponentRenderModelNameLen" ,"paramtype": "uint32_t"}
]
}
+,{
+ "classname": "vr::IVRRenderModels",
+ "methodname": "GetComponentStateForDevicePath",
+ "returntype": "bool",
+ "params": [
+{ "paramname": "pchRenderModelName" ,"paramtype": "const char *"},
+{ "paramname": "pchComponentName" ,"paramtype": "const char *"},
+{ "paramname": "devicePath" ,"paramtype": "vr::VRInputValueHandle_t"},
+{ "paramname": "pState" ,"paramtype": "const vr::RenderModel_ControllerMode_State_t *"},
+{ "paramname": "pComponentState" ,"paramtype": "vr::RenderModel_ComponentState_t *"}
+ ]
+}
,{
"classname": "vr::IVRRenderModels",
"methodname": "GetComponentState",
@@ -3900,7 +4329,7 @@
"params": [
{ "paramname": "pchResourceName" ,"paramtype": "const char *"},
{ "paramname": "pchResourceTypeDirectory" ,"paramtype": "const char *"},
-{ "paramname": "pchPathBuffer" ,"paramtype": "char *"},
+{ "paramname": "pchPathBuffer" ,"out_string": " " ,"paramtype": "char *"},
{ "paramname": "unBufferLen" ,"paramtype": "uint32_t"}
]
}
@@ -3919,5 +4348,296 @@
{ "paramname": "unBufferSize" ,"paramtype": "uint32_t"}
]
}
+,{
+ "classname": "vr::IVRDriverManager",
+ "methodname": "GetDriverHandle",
+ "returntype": "DriverHandle_t",
+ "params": [
+{ "paramname": "pchDriverName" ,"paramtype": "const char *"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "SetActionManifestPath",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "pchActionManifestPath" ,"paramtype": "const char *"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetActionSetHandle",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "pchActionSetName" ,"paramtype": "const char *"},
+{ "paramname": "pHandle" ,"paramtype": "vr::VRActionSetHandle_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetActionHandle",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "pchActionName" ,"paramtype": "const char *"},
+{ "paramname": "pHandle" ,"paramtype": "vr::VRActionHandle_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetInputSourceHandle",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "pchInputSourcePath" ,"paramtype": "const char *"},
+{ "paramname": "pHandle" ,"paramtype": "vr::VRInputValueHandle_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "UpdateActionState",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "pSets" ,"array_count": "unSetCount" ,"paramtype": "struct vr::VRActiveActionSet_t *"},
+{ "paramname": "unSizeOfVRSelectedActionSet_t" ,"paramtype": "uint32_t"},
+{ "paramname": "unSetCount" ,"paramtype": "uint32_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetDigitalActionData",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "pActionData" ,"paramtype": "struct vr::InputDigitalActionData_t *"},
+{ "paramname": "unActionDataSize" ,"paramtype": "uint32_t"},
+{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetAnalogActionData",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "pActionData" ,"paramtype": "struct vr::InputAnalogActionData_t *"},
+{ "paramname": "unActionDataSize" ,"paramtype": "uint32_t"},
+{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetPoseActionData",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"},
+{ "paramname": "fPredictedSecondsFromNow" ,"paramtype": "float"},
+{ "paramname": "pActionData" ,"paramtype": "struct vr::InputPoseActionData_t *"},
+{ "paramname": "unActionDataSize" ,"paramtype": "uint32_t"},
+{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetSkeletalActionData",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "pActionData" ,"paramtype": "struct vr::InputSkeletalActionData_t *"},
+{ "paramname": "unActionDataSize" ,"paramtype": "uint32_t"},
+{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetSkeletalBoneData",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "eTransformSpace" ,"paramtype": "vr::EVRSkeletalTransformSpace"},
+{ "paramname": "eMotionRange" ,"paramtype": "vr::EVRSkeletalMotionRange"},
+{ "paramname": "pTransformArray" ,"array_count": "unTransformArrayCount" ,"paramtype": "struct vr::VRBoneTransform_t *"},
+{ "paramname": "unTransformArrayCount" ,"paramtype": "uint32_t"},
+{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetSkeletalBoneDataCompressed",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "eTransformSpace" ,"paramtype": "vr::EVRSkeletalTransformSpace"},
+{ "paramname": "eMotionRange" ,"paramtype": "vr::EVRSkeletalMotionRange"},
+{ "paramname": "pvCompressedData" ,"out_buffer_count": "unCompressedSize" ,"paramtype": "void *"},
+{ "paramname": "unCompressedSize" ,"paramtype": "uint32_t"},
+{ "paramname": "punRequiredCompressedSize" ,"paramtype": "uint32_t *"},
+{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "DecompressSkeletalBoneData",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "pvCompressedBuffer" ,"paramtype": "void *"},
+{ "paramname": "unCompressedBufferSize" ,"paramtype": "uint32_t"},
+{ "paramname": "peTransformSpace" ,"paramtype": "vr::EVRSkeletalTransformSpace *"},
+{ "paramname": "pTransformArray" ,"array_count": "unTransformArrayCount" ,"paramtype": "struct vr::VRBoneTransform_t *"},
+{ "paramname": "unTransformArrayCount" ,"paramtype": "uint32_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "TriggerHapticVibrationAction",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "fStartSecondsFromNow" ,"paramtype": "float"},
+{ "paramname": "fDurationSeconds" ,"paramtype": "float"},
+{ "paramname": "fFrequency" ,"paramtype": "float"},
+{ "paramname": "fAmplitude" ,"paramtype": "float"},
+{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetActionOrigins",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "actionSetHandle" ,"paramtype": "vr::VRActionSetHandle_t"},
+{ "paramname": "digitalActionHandle" ,"paramtype": "vr::VRActionHandle_t"},
+{ "paramname": "originsOut" ,"array_count": "originOutCount" ,"paramtype": "vr::VRInputValueHandle_t *"},
+{ "paramname": "originOutCount" ,"paramtype": "uint32_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetOriginLocalizedName",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "origin" ,"paramtype": "vr::VRInputValueHandle_t"},
+{ "paramname": "pchNameArray" ,"out_string": " " ,"paramtype": "char *"},
+{ "paramname": "unNameArraySize" ,"paramtype": "uint32_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "GetOriginTrackedDeviceInfo",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "origin" ,"paramtype": "vr::VRInputValueHandle_t"},
+{ "paramname": "pOriginInfo" ,"paramtype": "struct vr::InputOriginInfo_t *"},
+{ "paramname": "unOriginInfoSize" ,"paramtype": "uint32_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "ShowActionOrigins",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "actionSetHandle" ,"paramtype": "vr::VRActionSetHandle_t"},
+{ "paramname": "ulActionHandle" ,"paramtype": "vr::VRActionHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRInput",
+ "methodname": "ShowBindingsForActionSet",
+ "returntype": "vr::EVRInputError",
+ "params": [
+{ "paramname": "pSets" ,"array_count": "unSetCount" ,"paramtype": "struct vr::VRActiveActionSet_t *"},
+{ "paramname": "unSizeOfVRSelectedActionSet_t" ,"paramtype": "uint32_t"},
+{ "paramname": "unSetCount" ,"paramtype": "uint32_t"},
+{ "paramname": "originToHighlight" ,"paramtype": "vr::VRInputValueHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRIOBuffer",
+ "methodname": "Open",
+ "returntype": "vr::EIOBufferError",
+ "params": [
+{ "paramname": "pchPath" ,"paramtype": "const char *"},
+{ "paramname": "mode" ,"paramtype": "vr::EIOBufferMode"},
+{ "paramname": "unElementSize" ,"paramtype": "uint32_t"},
+{ "paramname": "unElements" ,"paramtype": "uint32_t"},
+{ "paramname": "pulBuffer" ,"paramtype": "vr::IOBufferHandle_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRIOBuffer",
+ "methodname": "Close",
+ "returntype": "vr::EIOBufferError",
+ "params": [
+{ "paramname": "ulBuffer" ,"paramtype": "vr::IOBufferHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRIOBuffer",
+ "methodname": "Read",
+ "returntype": "vr::EIOBufferError",
+ "params": [
+{ "paramname": "ulBuffer" ,"paramtype": "vr::IOBufferHandle_t"},
+{ "paramname": "pDst" ,"paramtype": "void *"},
+{ "paramname": "unBytes" ,"paramtype": "uint32_t"},
+{ "paramname": "punRead" ,"paramtype": "uint32_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRIOBuffer",
+ "methodname": "Write",
+ "returntype": "vr::EIOBufferError",
+ "params": [
+{ "paramname": "ulBuffer" ,"paramtype": "vr::IOBufferHandle_t"},
+{ "paramname": "pSrc" ,"paramtype": "void *"},
+{ "paramname": "unBytes" ,"paramtype": "uint32_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRIOBuffer",
+ "methodname": "PropertyContainer",
+ "returntype": "vr::PropertyContainerHandle_t",
+ "params": [
+{ "paramname": "ulBuffer" ,"paramtype": "vr::IOBufferHandle_t"}
+ ]
+}
+,{
+ "classname": "vr::IVRSpatialAnchors",
+ "methodname": "CreateSpatialAnchorFromDescriptor",
+ "returntype": "vr::EVRSpatialAnchorError",
+ "params": [
+{ "paramname": "pchDescriptor" ,"paramtype": "const char *"},
+{ "paramname": "pHandleOut" ,"paramtype": "vr::SpatialAnchorHandle_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRSpatialAnchors",
+ "methodname": "CreateSpatialAnchorFromPose",
+ "returntype": "vr::EVRSpatialAnchorError",
+ "params": [
+{ "paramname": "unDeviceIndex" ,"paramtype": "vr::TrackedDeviceIndex_t"},
+{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"},
+{ "paramname": "pPose" ,"paramtype": "struct vr::SpatialAnchorPose_t *"},
+{ "paramname": "pHandleOut" ,"paramtype": "vr::SpatialAnchorHandle_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRSpatialAnchors",
+ "methodname": "GetSpatialAnchorPose",
+ "returntype": "vr::EVRSpatialAnchorError",
+ "params": [
+{ "paramname": "unHandle" ,"paramtype": "vr::SpatialAnchorHandle_t"},
+{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"},
+{ "paramname": "pPoseOut" ,"paramtype": "struct vr::SpatialAnchorPose_t *"}
+ ]
+}
+,{
+ "classname": "vr::IVRSpatialAnchors",
+ "methodname": "GetSpatialAnchorDescriptor",
+ "returntype": "vr::EVRSpatialAnchorError",
+ "params": [
+{ "paramname": "unHandle" ,"paramtype": "vr::SpatialAnchorHandle_t"},
+{ "paramname": "pchDescriptorOut" ,"out_string": " " ,"paramtype": "char *"},
+{ "paramname": "punDescriptorBufferLenInOut" ,"paramtype": "uint32_t *"}
+ ]
+}
]
}
\ No newline at end of file
diff --git a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_capi.h b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_capi.h
index 50f89586..1ee5a367 100644
--- a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_capi.h
+++ b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_capi.h
@@ -58,7 +58,7 @@ typedef uint64_t PropertyContainerHandle_t;
typedef uint32_t PropertyTypeTag_t;
typedef uint64_t VRActionHandle_t;
typedef uint64_t VRActionSetHandle_t;
-typedef uint64_t VRInputOriginHandle_t;
+typedef uint64_t VRInputValueHandle_t;
// OpenVR Constants
@@ -66,11 +66,12 @@ typedef uint64_t VRInputOriginHandle_t;
static const unsigned int k_nDriverNone = 4294967295;
static const unsigned int k_unMaxDriverDebugResponseSize = 32768;
static const unsigned int k_unTrackedDeviceIndex_Hmd = 0;
-static const unsigned int k_unMaxTrackedDeviceCount = 16;
+static const unsigned int k_unMaxTrackedDeviceCount = 64;
static const unsigned int k_unTrackedDeviceIndexOther = 4294967294;
static const unsigned int k_unTrackedDeviceIndexInvalid = 4294967295;
static const unsigned long k_ulInvalidPropertyContainer = 0;
static const unsigned int k_unInvalidPropertyTag = 0;
+static const unsigned long k_ulInvalidDriverHandle = 0;
static const unsigned int k_unFloatPropertyTag = 1;
static const unsigned int k_unInt32PropertyTag = 2;
static const unsigned int k_unUint64PropertyTag = 3;
@@ -81,13 +82,23 @@ static const unsigned int k_unHmdMatrix44PropertyTag = 21;
static const unsigned int k_unHmdVector3PropertyTag = 22;
static const unsigned int k_unHmdVector4PropertyTag = 23;
static const unsigned int k_unHiddenAreaPropertyTag = 30;
+static const unsigned int k_unPathHandleInfoTag = 31;
+static const unsigned int k_unActionPropertyTag = 32;
+static const unsigned int k_unInputValuePropertyTag = 33;
+static const unsigned int k_unWildcardPropertyTag = 34;
+static const unsigned int k_unHapticVibrationPropertyTag = 35;
+static const unsigned int k_unSkeletonPropertyTag = 36;
+static const unsigned int k_unSpatialAnchorPosePropertyTag = 40;
static const unsigned int k_unOpenVRInternalReserved_Start = 1000;
static const unsigned int k_unOpenVRInternalReserved_End = 10000;
static const unsigned int k_unMaxPropertyStringSize = 32768;
+static const unsigned long k_ulInvalidActionHandle = 0;
+static const unsigned long k_ulInvalidActionSetHandle = 0;
+static const unsigned long k_ulInvalidInputValueHandle = 0;
static const unsigned int k_unControllerStateAxisCount = 5;
static const unsigned long k_ulOverlayHandleInvalid = 0;
static const unsigned int k_unScreenshotHandleInvalid = 0;
-static const char * IVRSystem_Version = "IVRSystem_017";
+static const char * IVRSystem_Version = "IVRSystem_019";
static const char * IVRExtendedDisplay_Version = "IVRExtendedDisplay_001";
static const char * IVRTrackedCamera_Version = "IVRTrackedCamera_003";
static const unsigned int k_unMaxApplicationKeyLength = 128;
@@ -96,18 +107,18 @@ static const char * k_pch_MimeType_GameTheater = "vr/game_theater";
static const char * IVRApplications_Version = "IVRApplications_006";
static const char * IVRChaperone_Version = "IVRChaperone_003";
static const char * IVRChaperoneSetup_Version = "IVRChaperoneSetup_005";
-static const char * IVRCompositor_Version = "IVRCompositor_021";
+static const char * IVRCompositor_Version = "IVRCompositor_022";
static const unsigned int k_unVROverlayMaxKeyLength = 128;
static const unsigned int k_unVROverlayMaxNameLength = 128;
static const unsigned int k_unMaxOverlayCount = 64;
static const unsigned int k_unMaxOverlayIntersectionMaskPrimitivesCount = 32;
-static const char * IVROverlay_Version = "IVROverlay_016";
+static const char * IVROverlay_Version = "IVROverlay_018";
static const char * k_pch_Controller_Component_GDC2015 = "gdc2015";
static const char * k_pch_Controller_Component_Base = "base";
static const char * k_pch_Controller_Component_Tip = "tip";
static const char * k_pch_Controller_Component_HandGrip = "handgrip";
static const char * k_pch_Controller_Component_Status = "status";
-static const char * IVRRenderModels_Version = "IVRRenderModels_005";
+static const char * IVRRenderModels_Version = "IVRRenderModels_006";
static const unsigned int k_unNotificationTextMaxSize = 256;
static const char * IVRNotifications_Version = "IVRNotifications_002";
static const unsigned int k_unMaxSettingsKeyLength = 128;
@@ -155,13 +166,25 @@ static const char * k_pch_SteamVR_CycleBackgroundImageTimeSec_Int32 = "CycleBack
static const char * k_pch_SteamVR_RetailDemo_Bool = "retailDemo";
static const char * k_pch_SteamVR_IpdOffset_Float = "ipdOffset";
static const char * k_pch_SteamVR_AllowSupersampleFiltering_Bool = "allowSupersampleFiltering";
+static const char * k_pch_SteamVR_SupersampleManualOverride_Bool = "supersampleManualOverride";
static const char * k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = "enableLinuxVulkanAsync";
+static const char * k_pch_SteamVR_AllowDisplayLockedMode_Bool = "allowDisplayLockedMode";
+static const char * k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool = "haveStartedTutorialForNativeChaperoneDriver";
+static const char * k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor";
+static const char * k_pch_SteamVR_DebugInput = "debugInput";
+static const char * k_pch_SteamVR_LegacyInputRebinding = "legacyInputRebinding";
+static const char * k_pch_SteamVR_DebugInputBinding = "debugInputBinding";
+static const char * k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI";
+static const char * k_pch_SteamVR_RenderCameraMode = "renderCameraMode";
static const char * k_pch_Lighthouse_Section = "driver_lighthouse";
static const char * k_pch_Lighthouse_DisableIMU_Bool = "disableimu";
+static const char * k_pch_Lighthouse_DisableIMUExceptHMD_Bool = "disableimuexcepthmd";
static const char * k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation";
static const char * k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug";
static const char * k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation";
static const char * k_pch_Lighthouse_DBHistory_Bool = "dbhistory";
+static const char * k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth";
+static const char * k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations";
static const char * k_pch_Null_Section = "driver_null";
static const char * k_pch_Null_SerialNumber_String = "serialNumber";
static const char * k_pch_Null_ModelNumber_String = "modelNumber";
@@ -216,6 +239,7 @@ static const char * k_pch_Camera_BoundsColorGammaG_Int32 = "cameraBoundsColorGam
static const char * k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB";
static const char * k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA";
static const char * k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength";
+static const char * k_pch_Camera_RoomViewMode_Int32 = "cameraRoomViewMode";
static const char * k_pch_audio_Section = "audio";
static const char * k_pch_audio_OnPlaybackDevice_String = "onPlaybackDevice";
static const char * k_pch_audio_OnRecordDevice_String = "onRecordDevice";
@@ -233,11 +257,31 @@ static const char * k_pch_Power_PauseCompositorOnStandby_Bool = "pauseCompositor
static const char * k_pch_Dashboard_Section = "dashboard";
static const char * k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard";
static const char * k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode";
+static const char * k_pch_Dashboard_EnableWebUI = "webUI";
+static const char * k_pch_Dashboard_EnableWebUIDevTools = "webUIDevTools";
+static const char * k_pch_Dashboard_EnableWebUIDashboardReplacement = "webUIDashboard";
static const char * k_pch_modelskin_Section = "modelskins";
static const char * k_pch_Driver_Enable_Bool = "enable";
+static const char * k_pch_WebInterface_Section = "WebInterface";
+static const char * k_pch_WebInterface_WebEnable_Bool = "WebEnable";
+static const char * k_pch_WebInterface_WebPort_String = "WebPort";
+static const char * k_pch_TrackingOverride_Section = "TrackingOverrides";
+static const char * k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL";
+static const char * k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL";
+static const char * k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave";
+static const char * k_pch_App_ActionManifestURL_String = "ActionManifestURL";
+static const char * k_pch_Trackers_Section = "trackers";
static const char * IVRScreenshots_Version = "IVRScreenshots_001";
static const char * IVRResources_Version = "IVRResources_001";
static const char * IVRDriverManager_Version = "IVRDriverManager_001";
+static const unsigned int k_unMaxActionNameLength = 64;
+static const unsigned int k_unMaxActionSetNameLength = 64;
+static const unsigned int k_unMaxActionOriginCount = 16;
+static const char * IVRInput_Version = "IVRInput_004";
+static const unsigned long k_ulInvalidIOBufferHandle = 0;
+static const char * IVRIOBuffer_Version = "IVRIOBuffer_001";
+static const unsigned int k_ulInvalidSpatialAnchorHandle = 0;
+static const char * IVRSpatialAnchors_Version = "IVRSpatialAnchors_001";
// OpenVR Enums
@@ -249,11 +293,14 @@ typedef enum EVREye
typedef enum ETextureType
{
+ ETextureType_TextureType_Invalid = -1,
ETextureType_TextureType_DirectX = 0,
ETextureType_TextureType_OpenGL = 1,
ETextureType_TextureType_Vulkan = 2,
ETextureType_TextureType_IOSurface = 3,
ETextureType_TextureType_DirectX12 = 4,
+ ETextureType_TextureType_DXGISharedHandle = 5,
+ ETextureType_TextureType_Metal = 6,
} ETextureType;
typedef enum EColorSpace
@@ -280,6 +327,7 @@ typedef enum ETrackedDeviceClass
ETrackedDeviceClass_TrackedDeviceClass_GenericTracker = 3,
ETrackedDeviceClass_TrackedDeviceClass_TrackingReference = 4,
ETrackedDeviceClass_TrackedDeviceClass_DisplayRedirect = 5,
+ ETrackedDeviceClass_TrackedDeviceClass_Max = 6,
} ETrackedDeviceClass;
typedef enum ETrackedControllerRole
@@ -287,6 +335,8 @@ typedef enum ETrackedControllerRole
ETrackedControllerRole_TrackedControllerRole_Invalid = 0,
ETrackedControllerRole_TrackedControllerRole_LeftHand = 1,
ETrackedControllerRole_TrackedControllerRole_RightHand = 2,
+ ETrackedControllerRole_TrackedControllerRole_OptOut = 3,
+ ETrackedControllerRole_TrackedControllerRole_Max = 4,
} ETrackedControllerRole;
typedef enum ETrackingUniverseOrigin
@@ -335,6 +385,11 @@ typedef enum ETrackedDeviceProperty
ETrackedDeviceProperty_Prop_ViveSystemButtonFixRequired_Bool = 1033,
ETrackedDeviceProperty_Prop_ParentDriver_Uint64 = 1034,
ETrackedDeviceProperty_Prop_ResourceRoot_String = 1035,
+ ETrackedDeviceProperty_Prop_RegisteredDeviceType_String = 1036,
+ ETrackedDeviceProperty_Prop_InputProfilePath_String = 1037,
+ ETrackedDeviceProperty_Prop_NeverTracked_Bool = 1038,
+ ETrackedDeviceProperty_Prop_NumCameras_Int32 = 1039,
+ ETrackedDeviceProperty_Prop_CameraFrameLayout_Int32 = 1040,
ETrackedDeviceProperty_Prop_ReportsTimeSinceVSync_Bool = 2000,
ETrackedDeviceProperty_Prop_SecondsFromVsyncToPhotons_Float = 2001,
ETrackedDeviceProperty_Prop_DisplayFrequency_Float = 2002,
@@ -382,6 +437,35 @@ typedef enum ETrackedDeviceProperty
ETrackedDeviceProperty_Prop_DisplayDebugMode_Bool = 2044,
ETrackedDeviceProperty_Prop_GraphicsAdapterLuid_Uint64 = 2045,
ETrackedDeviceProperty_Prop_DriverProvidedChaperonePath_String = 2048,
+ ETrackedDeviceProperty_Prop_ExpectedTrackingReferenceCount_Int32 = 2049,
+ ETrackedDeviceProperty_Prop_ExpectedControllerCount_Int32 = 2050,
+ ETrackedDeviceProperty_Prop_NamedIconPathControllerLeftDeviceOff_String = 2051,
+ ETrackedDeviceProperty_Prop_NamedIconPathControllerRightDeviceOff_String = 2052,
+ ETrackedDeviceProperty_Prop_NamedIconPathTrackingReferenceDeviceOff_String = 2053,
+ ETrackedDeviceProperty_Prop_DoNotApplyPrediction_Bool = 2054,
+ ETrackedDeviceProperty_Prop_CameraToHeadTransforms_Matrix34_Array = 2055,
+ ETrackedDeviceProperty_Prop_DistortionMeshResolution_Int32 = 2056,
+ ETrackedDeviceProperty_Prop_DriverIsDrawingControllers_Bool = 2057,
+ ETrackedDeviceProperty_Prop_DriverRequestsApplicationPause_Bool = 2058,
+ ETrackedDeviceProperty_Prop_DriverRequestsReducedRendering_Bool = 2059,
+ ETrackedDeviceProperty_Prop_MinimumIpdStepMeters_Float = 2060,
+ ETrackedDeviceProperty_Prop_AudioBridgeFirmwareVersion_Uint64 = 2061,
+ ETrackedDeviceProperty_Prop_ImageBridgeFirmwareVersion_Uint64 = 2062,
+ ETrackedDeviceProperty_Prop_ImuToHeadTransform_Matrix34 = 2063,
+ ETrackedDeviceProperty_Prop_ImuFactoryGyroBias_Vector3 = 2064,
+ ETrackedDeviceProperty_Prop_ImuFactoryGyroScale_Vector3 = 2065,
+ ETrackedDeviceProperty_Prop_ImuFactoryAccelerometerBias_Vector3 = 2066,
+ ETrackedDeviceProperty_Prop_ImuFactoryAccelerometerScale_Vector3 = 2067,
+ ETrackedDeviceProperty_Prop_ConfigurationIncludesLighthouse20Features_Bool = 2069,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerTop_Int32 = 2203,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerBottom_Int32 = 2204,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterLeft_Int32 = 2205,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterRight_Int32 = 2206,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterTop_Int32 = 2207,
+ ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_OuterBottom_Int32 = 2208,
ETrackedDeviceProperty_Prop_AttachedDeviceId_String = 3000,
ETrackedDeviceProperty_Prop_SupportedButtons_Uint64 = 3001,
ETrackedDeviceProperty_Prop_Axis0Type_Int32 = 3002,
@@ -408,6 +492,7 @@ typedef enum ETrackedDeviceProperty
ETrackedDeviceProperty_Prop_NamedIconPathDeviceAlertLow_String = 5008,
ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_Start = 5100,
ETrackedDeviceProperty_Prop_DisplayHiddenArea_Binary_End = 5150,
+ ETrackedDeviceProperty_Prop_ParentContainer = 5151,
ETrackedDeviceProperty_Prop_UserConfigPath_String = 6000,
ETrackedDeviceProperty_Prop_InstallPath_String = 6001,
ETrackedDeviceProperty_Prop_HasDisplayComponent_Bool = 6002,
@@ -415,8 +500,12 @@ typedef enum ETrackedDeviceProperty
ETrackedDeviceProperty_Prop_HasCameraComponent_Bool = 6004,
ETrackedDeviceProperty_Prop_HasDriverDirectModeComponent_Bool = 6005,
ETrackedDeviceProperty_Prop_HasVirtualDisplayComponent_Bool = 6006,
+ ETrackedDeviceProperty_Prop_HasSpatialAnchorsSupport_Bool = 6007,
+ ETrackedDeviceProperty_Prop_ControllerType_String = 7000,
+ ETrackedDeviceProperty_Prop_LegacyInputProfile_String = 7001,
ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_Start = 10000,
ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_End = 10999,
+ ETrackedDeviceProperty_Prop_TrackedDeviceProperty_Max = 1000000,
} ETrackedDeviceProperty;
typedef enum ETrackedPropertyError
@@ -433,6 +522,7 @@ typedef enum ETrackedPropertyError
ETrackedPropertyError_TrackedProp_NotYetAvailable = 9,
ETrackedPropertyError_TrackedProp_PermissionDenied = 10,
ETrackedPropertyError_TrackedProp_InvalidOperation = 11,
+ ETrackedPropertyError_TrackedProp_CannotWriteToWildcards = 12,
} ETrackedPropertyError;
typedef enum EVRSubmitFlags
@@ -442,6 +532,7 @@ typedef enum EVRSubmitFlags
EVRSubmitFlags_Submit_GlRenderBuffer = 2,
EVRSubmitFlags_Submit_Reserved = 4,
EVRSubmitFlags_Submit_TextureWithPose = 8,
+ EVRSubmitFlags_Submit_TextureWithDepth = 16,
} EVRSubmitFlags;
typedef enum EVRState
@@ -478,6 +569,14 @@ typedef enum EVREventType
EVREventType_VREvent_ButtonUnpress = 201,
EVREventType_VREvent_ButtonTouch = 202,
EVREventType_VREvent_ButtonUntouch = 203,
+ EVREventType_VREvent_DualAnalog_Press = 250,
+ EVREventType_VREvent_DualAnalog_Unpress = 251,
+ EVREventType_VREvent_DualAnalog_Touch = 252,
+ EVREventType_VREvent_DualAnalog_Untouch = 253,
+ EVREventType_VREvent_DualAnalog_Move = 254,
+ EVREventType_VREvent_DualAnalog_ModeSwitch1 = 255,
+ EVREventType_VREvent_DualAnalog_ModeSwitch2 = 256,
+ EVREventType_VREvent_DualAnalog_Cancel = 257,
EVREventType_VREvent_MouseMove = 300,
EVREventType_VREvent_MouseButtonDown = 301,
EVREventType_VREvent_MouseButtonUp = 302,
@@ -494,8 +593,12 @@ typedef enum EVREventType
EVREventType_VREvent_SceneFocusChanged = 405,
EVREventType_VREvent_InputFocusChanged = 406,
EVREventType_VREvent_SceneApplicationSecondaryRenderingStarted = 407,
+ EVREventType_VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408,
+ EVREventType_VREvent_ActionBindingReloaded = 409,
EVREventType_VREvent_HideRenderModels = 410,
EVREventType_VREvent_ShowRenderModels = 411,
+ EVREventType_VREvent_ConsoleOpened = 420,
+ EVREventType_VREvent_ConsoleClosed = 421,
EVREventType_VREvent_OverlayShown = 500,
EVREventType_VREvent_OverlayHidden = 501,
EVREventType_VREvent_DashboardActivated = 502,
@@ -510,17 +613,18 @@ typedef enum EVREventType
EVREventType_VREvent_OverlayGamepadFocusGained = 511,
EVREventType_VREvent_OverlayGamepadFocusLost = 512,
EVREventType_VREvent_OverlaySharedTextureChanged = 513,
- EVREventType_VREvent_DashboardGuideButtonDown = 514,
- EVREventType_VREvent_DashboardGuideButtonUp = 515,
EVREventType_VREvent_ScreenshotTriggered = 516,
EVREventType_VREvent_ImageFailed = 517,
EVREventType_VREvent_DashboardOverlayCreated = 518,
+ EVREventType_VREvent_SwitchGamepadFocus = 519,
EVREventType_VREvent_RequestScreenshot = 520,
EVREventType_VREvent_ScreenshotTaken = 521,
EVREventType_VREvent_ScreenshotFailed = 522,
EVREventType_VREvent_SubmitScreenshotToDashboard = 523,
EVREventType_VREvent_ScreenshotProgressToDashboard = 524,
EVREventType_VREvent_PrimaryDashboardDeviceChanged = 525,
+ EVREventType_VREvent_RoomViewShown = 526,
+ EVREventType_VREvent_RoomViewHidden = 527,
EVREventType_VREvent_Notification_Shown = 600,
EVREventType_VREvent_Notification_Hidden = 601,
EVREventType_VREvent_Notification_BeginInteraction = 602,
@@ -543,7 +647,18 @@ typedef enum EVREventType
EVREventType_VREvent_EnvironmentSettingsHaveChanged = 854,
EVREventType_VREvent_PowerSettingsHaveChanged = 855,
EVREventType_VREvent_EnableHomeAppSettingsHaveChanged = 856,
+ EVREventType_VREvent_SteamVRSectionSettingChanged = 857,
+ EVREventType_VREvent_LighthouseSectionSettingChanged = 858,
+ EVREventType_VREvent_NullSectionSettingChanged = 859,
+ EVREventType_VREvent_UserInterfaceSectionSettingChanged = 860,
+ EVREventType_VREvent_NotificationsSectionSettingChanged = 861,
+ EVREventType_VREvent_KeyboardSectionSettingChanged = 862,
+ EVREventType_VREvent_PerfSectionSettingChanged = 863,
+ EVREventType_VREvent_DashboardSectionSettingChanged = 864,
+ EVREventType_VREvent_WebInterfaceSectionSettingChanged = 865,
+ EVREventType_VREvent_TrackersSectionSettingChanged = 866,
EVREventType_VREvent_StatusUpdate = 900,
+ EVREventType_VREvent_WebInterface_InstallDriverCompleted = 950,
EVREventType_VREvent_MCImageUpdated = 1000,
EVREventType_VREvent_FirmwareUpdateStarted = 1100,
EVREventType_VREvent_FirmwareUpdateFinished = 1101,
@@ -572,6 +687,15 @@ typedef enum EVREventType
EVREventType_VREvent_PerformanceTest_FidelityLevel = 1602,
EVREventType_VREvent_MessageOverlay_Closed = 1650,
EVREventType_VREvent_MessageOverlayCloseRequested = 1651,
+ EVREventType_VREvent_Input_HapticVibration = 1700,
+ EVREventType_VREvent_Input_BindingLoadFailed = 1701,
+ EVREventType_VREvent_Input_BindingLoadSuccessful = 1702,
+ EVREventType_VREvent_Input_ActionManifestReloaded = 1703,
+ EVREventType_VREvent_Input_ActionManifestLoadFailed = 1704,
+ EVREventType_VREvent_SpatialAnchors_PoseUpdated = 1800,
+ EVREventType_VREvent_SpatialAnchors_DescriptorUpdated = 1801,
+ EVREventType_VREvent_SpatialAnchors_RequestPoseUpdate = 1802,
+ EVREventType_VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803,
EVREventType_VREvent_VendorSpecific_Reserved_Start = 10000,
EVREventType_VREvent_VendorSpecific_Reserved_End = 19999,
} EVREventType;
@@ -604,6 +728,9 @@ typedef enum EVRButtonId
EVRButtonId_k_EButton_SteamVR_Touchpad = 32,
EVRButtonId_k_EButton_SteamVR_Trigger = 33,
EVRButtonId_k_EButton_Dashboard_Back = 2,
+ EVRButtonId_k_EButton_Knuckles_A = 2,
+ EVRButtonId_k_EButton_Knuckles_B = 1,
+ EVRButtonId_k_EButton_Knuckles_JoyStick = 35,
EVRButtonId_k_EButton_Max = 64,
} EVRButtonId;
@@ -614,6 +741,51 @@ typedef enum EVRMouseButton
EVRMouseButton_VRMouseButton_Middle = 4,
} EVRMouseButton;
+typedef enum EDualAnalogWhich
+{
+ EDualAnalogWhich_k_EDualAnalog_Left = 0,
+ EDualAnalogWhich_k_EDualAnalog_Right = 1,
+} EDualAnalogWhich;
+
+typedef enum EVRInputError
+{
+ EVRInputError_VRInputError_None = 0,
+ EVRInputError_VRInputError_NameNotFound = 1,
+ EVRInputError_VRInputError_WrongType = 2,
+ EVRInputError_VRInputError_InvalidHandle = 3,
+ EVRInputError_VRInputError_InvalidParam = 4,
+ EVRInputError_VRInputError_NoSteam = 5,
+ EVRInputError_VRInputError_MaxCapacityReached = 6,
+ EVRInputError_VRInputError_IPCError = 7,
+ EVRInputError_VRInputError_NoActiveActionSet = 8,
+ EVRInputError_VRInputError_InvalidDevice = 9,
+ EVRInputError_VRInputError_InvalidSkeleton = 10,
+ EVRInputError_VRInputError_InvalidBoneCount = 11,
+ EVRInputError_VRInputError_InvalidCompressedData = 12,
+ EVRInputError_VRInputError_NoData = 13,
+ EVRInputError_VRInputError_BufferTooSmall = 14,
+ EVRInputError_VRInputError_MismatchedActionManifest = 15,
+ EVRInputError_VRInputError_MissingSkeletonData = 16,
+} EVRInputError;
+
+typedef enum EVRSpatialAnchorError
+{
+ EVRSpatialAnchorError_VRSpatialAnchorError_Success = 0,
+ EVRSpatialAnchorError_VRSpatialAnchorError_Internal = 1,
+ EVRSpatialAnchorError_VRSpatialAnchorError_UnknownHandle = 2,
+ EVRSpatialAnchorError_VRSpatialAnchorError_ArrayTooSmall = 3,
+ EVRSpatialAnchorError_VRSpatialAnchorError_InvalidDescriptorChar = 4,
+ EVRSpatialAnchorError_VRSpatialAnchorError_NotYetAvailable = 5,
+ EVRSpatialAnchorError_VRSpatialAnchorError_NotAvailableInThisUniverse = 6,
+ EVRSpatialAnchorError_VRSpatialAnchorError_PermanentlyUnavailable = 7,
+ EVRSpatialAnchorError_VRSpatialAnchorError_WrongDriver = 8,
+ EVRSpatialAnchorError_VRSpatialAnchorError_DescriptorTooLong = 9,
+ EVRSpatialAnchorError_VRSpatialAnchorError_Unknown = 10,
+ EVRSpatialAnchorError_VRSpatialAnchorError_NoRoomCalibration = 11,
+ EVRSpatialAnchorError_VRSpatialAnchorError_InvalidArgument = 12,
+ EVRSpatialAnchorError_VRSpatialAnchorError_UnknownDriver = 13,
+} EVRSpatialAnchorError;
+
typedef enum EHiddenAreaMeshType
{
EHiddenAreaMeshType_k_eHiddenAreaMesh_Standard = 0,
@@ -669,6 +841,9 @@ typedef enum EVROverlayError
EVROverlayError_VROverlayError_NoNeighbor = 27,
EVROverlayError_VROverlayError_TooManyMaskPrimitives = 29,
EVROverlayError_VROverlayError_BadMaskPrimitive = 30,
+ EVROverlayError_VROverlayError_TextureAlreadyLocked = 31,
+ EVROverlayError_VROverlayError_TextureLockCapacityReached = 32,
+ EVROverlayError_VROverlayError_TextureNotLocked = 33,
} EVROverlayError;
typedef enum EVRApplicationType
@@ -700,6 +875,12 @@ typedef enum EVRNotificationError
EVRNotificationError_VRNotificationError_SystemWithUserValueAlreadyExists = 103,
} EVRNotificationError;
+typedef enum EVRSkeletalMotionRange
+{
+ EVRSkeletalMotionRange_VRSkeletalMotionRange_WithController = 0,
+ EVRSkeletalMotionRange_VRSkeletalMotionRange_WithoutController = 1,
+} EVRSkeletalMotionRange;
+
typedef enum EVRInitError
{
EVRInitError_VRInitError_None = 0,
@@ -744,6 +925,9 @@ typedef enum EVRInitError
EVRInitError_VRInitError_Init_RebootingBusy = 137,
EVRInitError_VRInitError_Init_FirmwareUpdateBusy = 138,
EVRInitError_VRInitError_Init_FirmwareRecoveryBusy = 139,
+ EVRInitError_VRInitError_Init_USBServiceBusy = 140,
+ EVRInitError_VRInitError_Init_VRWebHelperStartupFailed = 141,
+ EVRInitError_VRInitError_Init_TrackerManagerInitFailed = 142,
EVRInitError_VRInitError_Driver_Failed = 200,
EVRInitError_VRInitError_Driver_Unknown = 201,
EVRInitError_VRInitError_Driver_HmdUnknown = 202,
@@ -772,6 +956,7 @@ typedef enum EVRInitError
EVRInitError_VRInitError_Compositor_ScreenshotsInitFailed = 404,
EVRInitError_VRInitError_Compositor_UnableToCreateDevice = 405,
EVRInitError_VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000,
+ EVRInitError_VRInitError_VendorSpecific_WindowsNotInDevMode = 1001,
EVRInitError_VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101,
EVRInitError_VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102,
EVRInitError_VRInitError_VendorSpecific_HmdFound_NoStoredConfig = 1103,
@@ -825,6 +1010,14 @@ typedef enum EVRTrackedCameraError
EVRTrackedCameraError_VRTrackedCameraError_InvalidFrameBufferSize = 115,
} EVRTrackedCameraError;
+typedef enum EVRTrackedCameraFrameLayout
+{
+ EVRTrackedCameraFrameLayout_Mono = 1,
+ EVRTrackedCameraFrameLayout_Stereo = 2,
+ EVRTrackedCameraFrameLayout_VerticalLayout = 16,
+ EVRTrackedCameraFrameLayout_HorizontalLayout = 32,
+} EVRTrackedCameraFrameLayout;
+
typedef enum EVRTrackedCameraFrameType
{
EVRTrackedCameraFrameType_VRTrackedCameraFrameType_Distorted = 0,
@@ -833,6 +1026,29 @@ typedef enum EVRTrackedCameraFrameType
EVRTrackedCameraFrameType_MAX_CAMERA_FRAME_TYPES = 3,
} EVRTrackedCameraFrameType;
+typedef enum EVSync
+{
+ EVSync_VSync_None = 0,
+ EVSync_VSync_WaitRender = 1,
+ EVSync_VSync_NoWaitRender = 2,
+} EVSync;
+
+typedef enum EVRMuraCorrectionMode
+{
+ EVRMuraCorrectionMode_Default = 0,
+ EVRMuraCorrectionMode_NoCorrection = 1,
+} EVRMuraCorrectionMode;
+
+typedef enum Imu_OffScaleFlags
+{
+ Imu_OffScaleFlags_OffScale_AccelX = 1,
+ Imu_OffScaleFlags_OffScale_AccelY = 2,
+ Imu_OffScaleFlags_OffScale_AccelZ = 4,
+ Imu_OffScaleFlags_OffScale_GyroX = 8,
+ Imu_OffScaleFlags_OffScale_GyroY = 16,
+ Imu_OffScaleFlags_OffScale_GyroZ = 32,
+} Imu_OffScaleFlags;
+
typedef enum EVRApplicationError
{
EVRApplicationError_VRApplicationError_None = 0,
@@ -870,6 +1086,7 @@ typedef enum EVRApplicationProperty
EVRApplicationProperty_VRApplicationProperty_NewsURL_String = 51,
EVRApplicationProperty_VRApplicationProperty_ImagePath_String = 52,
EVRApplicationProperty_VRApplicationProperty_Source_String = 53,
+ EVRApplicationProperty_VRApplicationProperty_ActionManifestURL_String = 54,
EVRApplicationProperty_VRApplicationProperty_IsDashboardOverlay_Bool = 60,
EVRApplicationProperty_VRApplicationProperty_IsTemplate_Bool = 61,
EVRApplicationProperty_VRApplicationProperty_IsInstanced_Bool = 62,
@@ -927,10 +1144,18 @@ typedef enum EVRCompositorError
EVRCompositorError_VRCompositorError_InvalidBounds = 109,
} EVRCompositorError;
+typedef enum EVRCompositorTimingMode
+{
+ EVRCompositorTimingMode_VRCompositorTimingMode_Implicit = 0,
+ EVRCompositorTimingMode_VRCompositorTimingMode_Explicit_RuntimePerformsPostPresentHandoff = 1,
+ EVRCompositorTimingMode_VRCompositorTimingMode_Explicit_ApplicationPerformsPostPresentHandoff = 2,
+} EVRCompositorTimingMode;
+
typedef enum VROverlayInputMethod
{
VROverlayInputMethod_None = 0,
VROverlayInputMethod_Mouse = 1,
+ VROverlayInputMethod_DualAnalog = 2,
} VROverlayInputMethod;
typedef enum VROverlayTransformType
@@ -1062,6 +1287,37 @@ typedef enum EVRScreenshotError
EVRScreenshotError_VRScreenshotError_ScreenshotAlreadyInProgress = 108,
} EVRScreenshotError;
+typedef enum EVRSkeletalTransformSpace
+{
+ EVRSkeletalTransformSpace_VRSkeletalTransformSpace_Model = 0,
+ EVRSkeletalTransformSpace_VRSkeletalTransformSpace_Parent = 1,
+ EVRSkeletalTransformSpace_VRSkeletalTransformSpace_Additive = 2,
+} EVRSkeletalTransformSpace;
+
+typedef enum EVRInputFilterCancelType
+{
+ EVRInputFilterCancelType_VRInputFilterCancel_Timers = 0,
+ EVRInputFilterCancelType_VRInputFilterCancel_Momentum = 1,
+} EVRInputFilterCancelType;
+
+typedef enum EIOBufferError
+{
+ EIOBufferError_IOBuffer_Success = 0,
+ EIOBufferError_IOBuffer_OperationFailed = 100,
+ EIOBufferError_IOBuffer_InvalidHandle = 101,
+ EIOBufferError_IOBuffer_InvalidArgument = 102,
+ EIOBufferError_IOBuffer_PathExists = 103,
+ EIOBufferError_IOBuffer_PathDoesNotExist = 104,
+ EIOBufferError_IOBuffer_Permission = 105,
+} EIOBufferError;
+
+typedef enum EIOBufferMode
+{
+ EIOBufferMode_IOBufferMode_Read = 1,
+ EIOBufferMode_IOBufferMode_Write = 2,
+ EIOBufferMode_IOBufferMode_Create = 512,
+} EIOBufferMode;
+
// OpenVR typedefs
@@ -1069,20 +1325,27 @@ typedef uint32_t TrackedDeviceIndex_t;
typedef uint32_t VRNotificationId;
typedef uint64_t VROverlayHandle_t;
+typedef uint32_t SpatialAnchorHandle_t;
typedef void * glSharedTextureHandle_t;
typedef int32_t glInt_t;
typedef uint32_t glUInt_t;
typedef uint64_t SharedTextureHandle_t;
typedef uint32_t DriverId_t;
typedef uint32_t TrackedDeviceIndex_t;
+typedef uint64_t WebConsoleHandle_t;
typedef uint64_t PropertyContainerHandle_t;
typedef uint32_t PropertyTypeTag_t;
+typedef PropertyContainerHandle_t DriverHandle_t;
+typedef uint64_t VRActionHandle_t;
+typedef uint64_t VRActionSetHandle_t;
+typedef uint64_t VRInputValueHandle_t;
typedef uint64_t VROverlayHandle_t;
typedef uint64_t TrackedCameraHandle_t;
typedef uint32_t ScreenshotHandle_t;
typedef uint32_t VRComponentProperties;
typedef int32_t TextureID_t;
typedef uint32_t VRNotificationId;
+typedef uint64_t IOBufferHandle_t;
typedef EVRInitError HmdError;
typedef EVREye Hmd_Eye;
typedef EColorSpace ColorSpace;
@@ -1106,6 +1369,11 @@ typedef struct HmdMatrix34_t
float m[3][4]; //float[3][4]
} HmdMatrix34_t;
+typedef struct HmdMatrix33_t
+{
+ float m[3][3]; //float[3][3]
+} HmdMatrix33_t;
+
typedef struct HmdMatrix44_t
{
float m[4][4]; //float[4][4]
@@ -1139,6 +1407,14 @@ typedef struct HmdQuaternion_t
double z;
} HmdQuaternion_t;
+typedef struct HmdQuaternionf_t
+{
+ float w;
+ float x;
+ float y;
+ float z;
+} HmdQuaternionf_t;
+
typedef struct HmdColor_t
{
float r;
@@ -1195,6 +1471,23 @@ typedef struct VRTextureWithPose_t
struct HmdMatrix34_t mDeviceToAbsoluteTracking;
} VRTextureWithPose_t;
+typedef struct VRTextureDepthInfo_t
+{
+ void * handle; // void *
+ struct HmdMatrix44_t mProjection;
+ struct HmdVector2_t vRange;
+} VRTextureDepthInfo_t;
+
+typedef struct VRTextureWithDepth_t
+{
+ struct VRTextureDepthInfo_t depth;
+} VRTextureWithDepth_t;
+
+typedef struct VRTextureWithPoseAndDepth_t
+{
+ struct VRTextureDepthInfo_t depth;
+} VRTextureWithPoseAndDepth_t;
+
typedef struct VRVulkanTextureData_t
{
uint64_t m_nImage;
@@ -1261,6 +1554,7 @@ typedef struct VREvent_Process_t
typedef struct VREvent_Overlay_t
{
uint64_t overlayHandle;
+ uint64_t devicePath;
} VREvent_Overlay_t;
typedef struct VREvent_Status_t
@@ -1289,6 +1583,8 @@ typedef struct VREvent_Reserved_t
{
uint64_t reserved0;
uint64_t reserved1;
+ uint64_t reserved2;
+ uint64_t reserved3;
} VREvent_Reserved_t;
typedef struct VREvent_PerformanceTest_t
@@ -1335,6 +1631,50 @@ typedef struct VREvent_Property_t
enum ETrackedDeviceProperty prop;
} VREvent_Property_t;
+typedef struct VREvent_DualAnalog_t
+{
+ float x;
+ float y;
+ float transformedX;
+ float transformedY;
+ enum EDualAnalogWhich which;
+} VREvent_DualAnalog_t;
+
+typedef struct VREvent_HapticVibration_t
+{
+ uint64_t containerHandle;
+ uint64_t componentHandle;
+ float fDurationSeconds;
+ float fFrequency;
+ float fAmplitude;
+} VREvent_HapticVibration_t;
+
+typedef struct VREvent_WebConsole_t
+{
+ WebConsoleHandle_t webConsoleHandle;
+} VREvent_WebConsole_t;
+
+typedef struct VREvent_InputBindingLoad_t
+{
+ PropertyContainerHandle_t ulAppContainer;
+ uint64_t pathMessage;
+ uint64_t pathUrl;
+ uint64_t pathControllerType;
+} VREvent_InputBindingLoad_t;
+
+typedef struct VREvent_InputActionManifestLoad_t
+{
+ uint64_t pathAppKey;
+ uint64_t pathMessage;
+ uint64_t pathMessageParam;
+ uint64_t pathManifestPath;
+} VREvent_InputActionManifestLoad_t;
+
+typedef struct VREvent_SpatialAnchor_t
+{
+ SpatialAnchorHandle_t unHandle;
+} VREvent_SpatialAnchor_t;
+
typedef struct HiddenAreaMesh_t
{
struct HmdVector2_t * pVertexData; // const struct vr::HmdVector2_t *
@@ -1373,6 +1713,12 @@ typedef struct Compositor_OverlaySettings
struct HmdMatrix44_t transform;
} Compositor_OverlaySettings;
+typedef struct VRBoneTransform_t
+{
+ struct HmdVector4_t position;
+ struct HmdQuaternionf_t orientation;
+} VRBoneTransform_t;
+
typedef struct CameraVideoStreamFrameHeader_t
{
enum EVRTrackedCameraFrameType eFrameType;
@@ -1383,6 +1729,23 @@ typedef struct CameraVideoStreamFrameHeader_t
struct TrackedDevicePose_t standingTrackedDevicePose;
} CameraVideoStreamFrameHeader_t;
+typedef struct DriverDirectMode_FrameTiming
+{
+ uint32_t m_nSize;
+ uint32_t m_nNumFramePresents;
+ uint32_t m_nNumMisPresented;
+ uint32_t m_nNumDroppedFrames;
+ uint32_t m_nReprojectionFlags;
+} DriverDirectMode_FrameTiming;
+
+typedef struct ImuSample_t
+{
+ double fSampleTime;
+ struct HmdVector3d_t vAccel;
+ struct HmdVector3d_t vGyro;
+ uint32_t unOffScaleFlags;
+} ImuSample_t;
+
typedef struct AppOverrideKeys_t
{
char * pchKey; // const char *
@@ -1521,6 +1884,68 @@ typedef struct NotificationBitmap_t
int32_t m_nBytesPerPixel;
} NotificationBitmap_t;
+typedef struct CVRSettingHelper
+{
+ intptr_t m_pSettings; // class vr::IVRSettings *
+} CVRSettingHelper;
+
+typedef struct InputAnalogActionData_t
+{
+ bool bActive;
+ VRInputValueHandle_t activeOrigin;
+ float x;
+ float y;
+ float z;
+ float deltaX;
+ float deltaY;
+ float deltaZ;
+ float fUpdateTime;
+} InputAnalogActionData_t;
+
+typedef struct InputDigitalActionData_t
+{
+ bool bActive;
+ VRInputValueHandle_t activeOrigin;
+ bool bState;
+ bool bChanged;
+ float fUpdateTime;
+} InputDigitalActionData_t;
+
+typedef struct InputPoseActionData_t
+{
+ bool bActive;
+ VRInputValueHandle_t activeOrigin;
+ struct TrackedDevicePose_t pose;
+} InputPoseActionData_t;
+
+typedef struct InputSkeletalActionData_t
+{
+ bool bActive;
+ VRInputValueHandle_t activeOrigin;
+ uint32_t boneCount;
+} InputSkeletalActionData_t;
+
+typedef struct InputOriginInfo_t
+{
+ VRInputValueHandle_t devicePath;
+ TrackedDeviceIndex_t trackedDeviceIndex;
+ char * rchRenderModelComponentName[128]; //char[128]
+} InputOriginInfo_t;
+
+typedef struct VRActiveActionSet_t
+{
+ VRActionSetHandle_t ulActionSet;
+ VRInputValueHandle_t ulRestrictedToDevice;
+ VRActionSetHandle_t ulSecondaryActionSet;
+ uint32_t unPadding;
+ int32_t nPriority;
+} VRActiveActionSet_t;
+
+typedef struct SpatialAnchorPose_t
+{
+ struct HmdMatrix34_t mAnchorToAbsoluteTracking;
+} SpatialAnchorPose_t;
+
typedef struct COpenVRContext
{
intptr_t m_pVRSystem; // class vr::IVRSystem *
@@ -1536,6 +1961,9 @@ typedef struct COpenVRContext
intptr_t m_pVRTrackedCamera; // class vr::IVRTrackedCamera *
intptr_t m_pVRScreenshots; // class vr::IVRScreenshots *
intptr_t m_pVRDriverManager; // class vr::IVRDriverManager *
+ intptr_t m_pVRInput; // class vr::IVRInput *
+ intptr_t m_pVRIOBuffer; // class vr::IVRIOBuffer *
+ intptr_t m_pVRSpatialAnchors; // class vr::IVRSpatialAnchors *
} COpenVRContext;
@@ -1612,6 +2040,7 @@ struct VR_IVRSystem_FnTable
int32_t (OPENVR_FNTABLE_CALLTYPE *GetInt32TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError);
uint64_t (OPENVR_FNTABLE_CALLTYPE *GetUint64TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError);
struct HmdMatrix34_t (OPENVR_FNTABLE_CALLTYPE *GetMatrix34TrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, ETrackedPropertyError * pError);
+ uint32_t (OPENVR_FNTABLE_CALLTYPE *GetArrayTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, PropertyTypeTag_t propType, void * pBuffer, uint32_t unBufferSize, ETrackedPropertyError * pError);
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetStringTrackedDeviceProperty)(TrackedDeviceIndex_t unDeviceIndex, ETrackedDeviceProperty prop, char * pchValue, uint32_t unBufferSize, ETrackedPropertyError * pError);
char * (OPENVR_FNTABLE_CALLTYPE *GetPropErrorNameFromEnum)(ETrackedPropertyError error);
bool (OPENVR_FNTABLE_CALLTYPE *PollNextEvent)(struct VREvent_t * pEvent, uint32_t uncbVREvent);
@@ -1623,9 +2052,10 @@ struct VR_IVRSystem_FnTable
void (OPENVR_FNTABLE_CALLTYPE *TriggerHapticPulse)(TrackedDeviceIndex_t unControllerDeviceIndex, uint32_t unAxisId, unsigned short usDurationMicroSec);
char * (OPENVR_FNTABLE_CALLTYPE *GetButtonIdNameFromEnum)(EVRButtonId eButtonId);
char * (OPENVR_FNTABLE_CALLTYPE *GetControllerAxisTypeNameFromEnum)(EVRControllerAxisType eAxisType);
- bool (OPENVR_FNTABLE_CALLTYPE *CaptureInputFocus)();
- void (OPENVR_FNTABLE_CALLTYPE *ReleaseInputFocus)();
- bool (OPENVR_FNTABLE_CALLTYPE *IsInputFocusCapturedByAnotherProcess)();
+ bool (OPENVR_FNTABLE_CALLTYPE *IsInputAvailable)();
+ bool (OPENVR_FNTABLE_CALLTYPE *IsSteamVRDrawingControllers)();
+ bool (OPENVR_FNTABLE_CALLTYPE *ShouldApplicationPause)();
+ bool (OPENVR_FNTABLE_CALLTYPE *ShouldApplicationReduceRenderingWork)();
uint32_t (OPENVR_FNTABLE_CALLTYPE *DriverDebugRequest)(TrackedDeviceIndex_t unDeviceIndex, char * pchRequest, char * pchResponseBuffer, uint32_t unResponseBufferSize);
EVRFirmwareError (OPENVR_FNTABLE_CALLTYPE *PerformFirmwareUpdate)(TrackedDeviceIndex_t unDeviceIndex);
void (OPENVR_FNTABLE_CALLTYPE *AcknowledgeQuit_Exiting)();
@@ -1769,7 +2199,7 @@ struct VR_IVRCompositor_FnTable
void (OPENVR_FNTABLE_CALLTYPE *UnlockGLSharedTextureForAccess)(glSharedTextureHandle_t glSharedTextureHandle);
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetVulkanInstanceExtensionsRequired)(char * pchValue, uint32_t unBufferSize);
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetVulkanDeviceExtensionsRequired)(struct VkPhysicalDevice_T * pPhysicalDevice, char * pchValue, uint32_t unBufferSize);
- void (OPENVR_FNTABLE_CALLTYPE *SetExplicitTimingMode)(bool bExplicitTimingMode);
+ void (OPENVR_FNTABLE_CALLTYPE *SetExplicitTimingMode)(EVRCompositorTimingMode eTimingMode);
EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SubmitExplicitTimingData)();
};
@@ -1826,12 +2256,13 @@ struct VR_IVROverlay_FnTable
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvecMouseScale);
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayMouseScale)(VROverlayHandle_t ulOverlayHandle, struct HmdVector2_t * pvecMouseScale);
bool (OPENVR_FNTABLE_CALLTYPE *ComputeOverlayIntersection)(VROverlayHandle_t ulOverlayHandle, struct VROverlayIntersectionParams_t * pParams, struct VROverlayIntersectionResults_t * pResults);
- bool (OPENVR_FNTABLE_CALLTYPE *HandleControllerOverlayInteractionAsMouse)(VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unControllerDeviceIndex);
bool (OPENVR_FNTABLE_CALLTYPE *IsHoverTargetOverlay)(VROverlayHandle_t ulOverlayHandle);
VROverlayHandle_t (OPENVR_FNTABLE_CALLTYPE *GetGamepadFocusOverlay)();
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetGamepadFocusOverlay)(VROverlayHandle_t ulNewFocusOverlay);
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayNeighbor)(EOverlayDirection eDirection, VROverlayHandle_t ulFrom, VROverlayHandle_t ulTo);
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *MoveGamepadFocusToNeighbor)(EOverlayDirection eDirection, VROverlayHandle_t ulFrom);
+ EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayDualAnalogTransform)(VROverlayHandle_t ulOverlay, EDualAnalogWhich eWhich, struct HmdVector2_t & vCenter, float fRadius);
+ EVROverlayError (OPENVR_FNTABLE_CALLTYPE *GetOverlayDualAnalogTransform)(VROverlayHandle_t ulOverlay, EDualAnalogWhich eWhich, struct HmdVector2_t * pvCenter, float * pfRadius);
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayTexture)(VROverlayHandle_t ulOverlayHandle, struct Texture_t * pTexture);
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *ClearOverlayTexture)(VROverlayHandle_t ulOverlayHandle);
EVROverlayError (OPENVR_FNTABLE_CALLTYPE *SetOverlayRaw)(VROverlayHandle_t ulOverlayHandle, void * pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth);
@@ -1873,6 +2304,7 @@ struct VR_IVRRenderModels_FnTable
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentName)(char * pchRenderModelName, uint32_t unComponentIndex, char * pchComponentName, uint32_t unComponentNameLen);
uint64_t (OPENVR_FNTABLE_CALLTYPE *GetComponentButtonMask)(char * pchRenderModelName, char * pchComponentName);
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetComponentRenderModelName)(char * pchRenderModelName, char * pchComponentName, char * pchComponentRenderModelName, uint32_t unComponentRenderModelNameLen);
+ bool (OPENVR_FNTABLE_CALLTYPE *GetComponentStateForDevicePath)(char * pchRenderModelName, char * pchComponentName, VRInputValueHandle_t devicePath, RenderModel_ControllerMode_State_t * pState, RenderModel_ComponentState_t * pComponentState);
bool (OPENVR_FNTABLE_CALLTYPE *GetComponentState)(char * pchRenderModelName, char * pchComponentName, VRControllerState_t * pControllerState, struct RenderModel_ControllerMode_State_t * pState, struct RenderModel_ComponentState_t * pComponentState);
bool (OPENVR_FNTABLE_CALLTYPE *RenderModelHasComponent)(char * pchRenderModelName, char * pchComponentName);
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetRenderModelThumbnailURL)(char * pchRenderModelName, char * pchThumbnailURL, uint32_t unThumbnailURLLen, EVRRenderModelError * peError);
@@ -1923,6 +2355,46 @@ struct VR_IVRDriverManager_FnTable
{
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetDriverCount)();
uint32_t (OPENVR_FNTABLE_CALLTYPE *GetDriverName)(DriverId_t nDriver, char * pchValue, uint32_t unBufferSize);
+ DriverHandle_t (OPENVR_FNTABLE_CALLTYPE *GetDriverHandle)(char * pchDriverName);
+};
+
+struct VR_IVRInput_FnTable
+{
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *SetActionManifestPath)(char * pchActionManifestPath);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetActionSetHandle)(char * pchActionSetName, VRActionSetHandle_t * pHandle);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetActionHandle)(char * pchActionName, VRActionHandle_t * pHandle);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetInputSourceHandle)(char * pchInputSourcePath, VRInputValueHandle_t * pHandle);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *UpdateActionState)(struct VRActiveActionSet_t * pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetDigitalActionData)(VRActionHandle_t action, struct InputDigitalActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetAnalogActionData)(VRActionHandle_t action, struct InputAnalogActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetPoseActionData)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, struct InputPoseActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalActionData)(VRActionHandle_t action, struct InputSkeletalActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneData)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount, VRInputValueHandle_t ulRestrictToDevice);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneDataCompressed)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, void * pvCompressedData, uint32_t unCompressedSize, uint32_t * punRequiredCompressedSize, VRInputValueHandle_t ulRestrictToDevice);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *DecompressSkeletalBoneData)(void * pvCompressedBuffer, uint32_t unCompressedBufferSize, EVRSkeletalTransformSpace * peTransformSpace, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *TriggerHapticVibrationAction)(VRActionHandle_t action, float fStartSecondsFromNow, float fDurationSeconds, float fFrequency, float fAmplitude, VRInputValueHandle_t ulRestrictToDevice);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetActionOrigins)(VRActionSetHandle_t actionSetHandle, VRActionHandle_t digitalActionHandle, VRInputValueHandle_t * originsOut, uint32_t originOutCount);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetOriginLocalizedName)(VRInputValueHandle_t origin, char * pchNameArray, uint32_t unNameArraySize);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetOriginTrackedDeviceInfo)(VRInputValueHandle_t origin, struct InputOriginInfo_t * pOriginInfo, uint32_t unOriginInfoSize);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *ShowActionOrigins)(VRActionSetHandle_t actionSetHandle, VRActionHandle_t ulActionHandle);
+ EVRInputError (OPENVR_FNTABLE_CALLTYPE *ShowBindingsForActionSet)(struct VRActiveActionSet_t * pSets, uint32_t unSizeOfVRSelectedActionSet_t, uint32_t unSetCount, VRInputValueHandle_t originToHighlight);
+};
+
+struct VR_IVRIOBuffer_FnTable
+{
+ EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Open)(char * pchPath, EIOBufferMode mode, uint32_t unElementSize, uint32_t unElements, IOBufferHandle_t * pulBuffer);
+ EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Close)(IOBufferHandle_t ulBuffer);
+ EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Read)(IOBufferHandle_t ulBuffer, void * pDst, uint32_t unBytes, uint32_t * punRead);
+ EIOBufferError (OPENVR_FNTABLE_CALLTYPE *Write)(IOBufferHandle_t ulBuffer, void * pSrc, uint32_t unBytes);
+ PropertyContainerHandle_t (OPENVR_FNTABLE_CALLTYPE *PropertyContainer)(IOBufferHandle_t ulBuffer);
+};
+
+struct VR_IVRSpatialAnchors_FnTable
+{
+ EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *CreateSpatialAnchorFromDescriptor)(char * pchDescriptor, SpatialAnchorHandle_t * pHandleOut);
+ EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *CreateSpatialAnchorFromPose)(TrackedDeviceIndex_t unDeviceIndex, ETrackingUniverseOrigin eOrigin, struct SpatialAnchorPose_t * pPose, SpatialAnchorHandle_t * pHandleOut);
+ EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *GetSpatialAnchorPose)(SpatialAnchorHandle_t unHandle, ETrackingUniverseOrigin eOrigin, struct SpatialAnchorPose_t * pPoseOut);
+ EVRSpatialAnchorError (OPENVR_FNTABLE_CALLTYPE *GetSpatialAnchorDescriptor)(SpatialAnchorHandle_t unHandle, char * pchDescriptorOut, uint32_t * punDescriptorBufferLenInOut);
};
diff --git a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_driver.h b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_driver.h
index 7ab997e2..97a5d953 100644
--- a/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_driver.h
+++ b/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_driver.h
@@ -29,6 +29,10 @@ namespace vr
{
#pragma pack( push, 8 )
+/** A handle for a spatial anchor. This handle is only valid during the session it was created in.
+* Anchors that live beyond one session should be saved by their string descriptors. */
+typedef uint32_t SpatialAnchorHandle_t;
+
typedef void* glSharedTextureHandle_t;
typedef int32_t glInt_t;
typedef uint32_t glUInt_t;
@@ -36,13 +40,18 @@ typedef uint32_t glUInt_t;
// right-handed system
// +y is up
// +x is to the right
-// -z is going away from you
+// -z is forward
// Distance unit is meters
struct HmdMatrix34_t
{
float m[3][4];
};
+struct HmdMatrix33_t
+{
+ float m[3][3];
+};
+
struct HmdMatrix44_t
{
float m[4][4];
@@ -73,6 +82,11 @@ struct HmdQuaternion_t
double w, x, y, z;
};
+struct HmdQuaternionf_t
+{
+ float w, x, y, z;
+};
+
struct HmdColor_t
{
float r, g, b, a;
@@ -107,11 +121,17 @@ enum EVREye
enum ETextureType
{
+ TextureType_Invalid = -1, // Handle has been invalidated
TextureType_DirectX = 0, // Handle is an ID3D11Texture
TextureType_OpenGL = 1, // Handle is an OpenGL texture name or an OpenGL render buffer name, depending on submit flags
TextureType_Vulkan = 2, // Handle is a pointer to a VRVulkanTextureData_t structure
- TextureType_IOSurface = 3, // Handle is a macOS cross-process-sharable IOSurfaceRef
+ TextureType_IOSurface = 3, // Handle is a macOS cross-process-sharable IOSurfaceRef, deprecated in favor of TextureType_Metal on supported platforms
TextureType_DirectX12 = 4, // Handle is a pointer to a D3D12TextureData_t structure
+ TextureType_DXGISharedHandle = 5, // Handle is a HANDLE DXGI share handle, only supported for Overlay render targets.
+ // this texture is used directly by our renderer, so only perform atomic (copyresource or resolve) on it
+ TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which
+ // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right
+ // eye texture (vr::EVREye::Eye_Right)
};
enum EColorSpace
@@ -151,7 +171,7 @@ static const uint32_t k_unMaxDriverDebugResponseSize = 32768;
/** Used to pass device IDs to API calls */
typedef uint32_t TrackedDeviceIndex_t;
static const uint32_t k_unTrackedDeviceIndex_Hmd = 0;
-static const uint32_t k_unMaxTrackedDeviceCount = 16;
+static const uint32_t k_unMaxTrackedDeviceCount = 64;
static const uint32_t k_unTrackedDeviceIndexOther = 0xFFFFFFFE;
static const uint32_t k_unTrackedDeviceIndexInvalid = 0xFFFFFFFF;
@@ -164,6 +184,8 @@ enum ETrackedDeviceClass
TrackedDeviceClass_GenericTracker = 3, // Generic trackers, similar to controllers
TrackedDeviceClass_TrackingReference = 4, // Camera and base stations that serve as tracking reference points
TrackedDeviceClass_DisplayRedirect = 5, // Accessories that aren't necessarily tracked themselves, but may redirect video output from other tracked devices
+
+ TrackedDeviceClass_Max
};
@@ -173,6 +195,8 @@ enum ETrackedControllerRole
TrackedControllerRole_Invalid = 0, // Invalid value for controller type
TrackedControllerRole_LeftHand = 1, // Tracked device associated with the left hand
TrackedControllerRole_RightHand = 2, // Tracked device associated with the right hand
+ TrackedControllerRole_OptOut = 3, // Tracked device is opting out of left/right hand selection
+ TrackedControllerRole_Max = 4
};
@@ -199,6 +223,9 @@ enum ETrackingUniverseOrigin
TrackingUniverseRawAndUncalibrated = 2, // Poses are provided in the coordinate system defined by the driver. It has Y up and is unified for devices of the same driver. You usually don't want this one.
};
+typedef uint64_t WebConsoleHandle_t;
+#define INVALID_WEB_CONSOLE_HANDLE ((vr::WebConsoleHandle_t)0)
+
// Refers to a single container of properties
typedef uint64_t PropertyContainerHandle_t;
typedef uint32_t PropertyTypeTag_t;
@@ -206,6 +233,9 @@ typedef uint32_t PropertyTypeTag_t;
static const PropertyContainerHandle_t k_ulInvalidPropertyContainer = 0;
static const PropertyTypeTag_t k_unInvalidPropertyTag = 0;
+typedef PropertyContainerHandle_t DriverHandle_t;
+static const PropertyContainerHandle_t k_ulInvalidDriverHandle = 0;
+
// Use these tags to set/get common types as struct properties
static const PropertyTypeTag_t k_unFloatPropertyTag = 1;
static const PropertyTypeTag_t k_unInt32PropertyTag = 2;
@@ -219,6 +249,14 @@ static const PropertyTypeTag_t k_unHmdVector3PropertyTag = 22;
static const PropertyTypeTag_t k_unHmdVector4PropertyTag = 23;
static const PropertyTypeTag_t k_unHiddenAreaPropertyTag = 30;
+static const PropertyTypeTag_t k_unPathHandleInfoTag = 31;
+static const PropertyTypeTag_t k_unActionPropertyTag = 32;
+static const PropertyTypeTag_t k_unInputValuePropertyTag = 33;
+static const PropertyTypeTag_t k_unWildcardPropertyTag = 34;
+static const PropertyTypeTag_t k_unHapticVibrationPropertyTag = 35;
+static const PropertyTypeTag_t k_unSkeletonPropertyTag = 36;
+
+static const PropertyTypeTag_t k_unSpatialAnchorPosePropertyTag = 40;
static const PropertyTypeTag_t k_unOpenVRInternalReserved_Start = 1000;
static const PropertyTypeTag_t k_unOpenVRInternalReserved_End = 10000;
@@ -267,6 +305,11 @@ enum ETrackedDeviceProperty
Prop_ViveSystemButtonFixRequired_Bool = 1033,
Prop_ParentDriver_Uint64 = 1034,
Prop_ResourceRoot_String = 1035,
+ Prop_RegisteredDeviceType_String = 1036,
+ Prop_InputProfilePath_String = 1037, // input profile to use for this device in the input system. Will default to tracking system name if this isn't provided
+ Prop_NeverTracked_Bool = 1038, // Used for devices that will never have a valid pose by design
+ Prop_NumCameras_Int32 = 1039,
+ Prop_CameraFrameLayout_Int32 = 1040, // EVRTrackedCameraFrameLayout value
// Properties that are unique to TrackedDeviceClass_HMD
Prop_ReportsTimeSinceVSync_Bool = 2000,
@@ -316,6 +359,38 @@ enum ETrackedDeviceProperty
Prop_DisplayDebugMode_Bool = 2044,
Prop_GraphicsAdapterLuid_Uint64 = 2045,
Prop_DriverProvidedChaperonePath_String = 2048,
+ Prop_ExpectedTrackingReferenceCount_Int32 = 2049, // expected number of sensors or basestations to reserve UI space for
+ Prop_ExpectedControllerCount_Int32 = 2050, // expected number of tracked controllers to reserve UI space for
+ Prop_NamedIconPathControllerLeftDeviceOff_String = 2051, // placeholder icon for "left" controller if not yet detected/loaded
+ Prop_NamedIconPathControllerRightDeviceOff_String = 2052, // placeholder icon for "right" controller if not yet detected/loaded
+ Prop_NamedIconPathTrackingReferenceDeviceOff_String = 2053, // placeholder icon for sensor/base if not yet detected/loaded
+ Prop_DoNotApplyPrediction_Bool = 2054,
+ Prop_CameraToHeadTransforms_Matrix34_Array = 2055,
+ Prop_DistortionMeshResolution_Int32 = 2056, // custom resolution of compositor calls to IVRSystem::ComputeDistortion
+ 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,
+ // reserved 2068
+ Prop_ConfigurationIncludesLighthouse20Features_Bool = 2069,
+
+ // Driver requested mura correction properties
+ 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,
// Properties that are unique to TrackedDeviceClass_Controller
Prop_AttachedDeviceId_String = 3000,
@@ -350,6 +425,7 @@ enum ETrackedDeviceProperty
// Properties that are used by helpers, but are opaque to applications
Prop_DisplayHiddenArea_Binary_Start = 5100,
Prop_DisplayHiddenArea_Binary_End = 5150,
+ Prop_ParentContainer = 5151,
// Properties that are unique to drivers
Prop_UserConfigPath_String = 6000,
@@ -359,10 +435,17 @@ enum ETrackedDeviceProperty
Prop_HasCameraComponent_Bool = 6004,
Prop_HasDriverDirectModeComponent_Bool = 6005,
Prop_HasVirtualDisplayComponent_Bool = 6006,
+ Prop_HasSpatialAnchorsSupport_Bool = 6007,
+
+ // Properties that are set internally based on other information provided by drivers
+ Prop_ControllerType_String = 7000,
+ Prop_LegacyInputProfile_String = 7001,
// Vendors are free to expose private debug data in this reserved region
Prop_VendorSpecific_Reserved_Start = 10000,
Prop_VendorSpecific_Reserved_End = 10999,
+
+ Prop_TrackedDeviceProperty_Max = 1000000,
};
/** No string property will ever be longer than this length */
@@ -383,8 +466,19 @@ enum ETrackedPropertyError
TrackedProp_NotYetAvailable = 9, // The property value isn't known yet, but is expected soon. Call again later.
TrackedProp_PermissionDenied = 10,
TrackedProp_InvalidOperation = 11,
+ TrackedProp_CannotWriteToWildcards = 12,
};
+
+typedef uint64_t VRActionHandle_t;
+typedef uint64_t VRActionSetHandle_t;
+typedef uint64_t VRInputValueHandle_t;
+
+static const VRActionHandle_t k_ulInvalidActionHandle = 0;
+static const VRActionSetHandle_t k_ulInvalidActionSetHandle = 0;
+static const VRInputValueHandle_t k_ulInvalidInputValueHandle = 0;
+
+
/** Allows the application to control what part of the provided texture will be used in the
* frame buffer. */
struct VRTextureBounds_t
@@ -399,6 +493,23 @@ struct VRTextureWithPose_t : public Texture_t
HmdMatrix34_t mDeviceToAbsoluteTracking; // Actual pose used to render scene textures.
};
+struct VRTextureDepthInfo_t
+{
+ void* handle; // See ETextureType definition above
+ HmdMatrix44_t mProjection;
+ HmdVector2_t vRange; // 0..1
+};
+
+struct VRTextureWithDepth_t : public Texture_t
+{
+ VRTextureDepthInfo_t depth;
+};
+
+struct VRTextureWithPoseAndDepth_t : public VRTextureWithPose_t
+{
+ VRTextureDepthInfo_t depth;
+};
+
/** Allows the application to control how scene textures are used by the compositor when calling Submit. */
enum EVRSubmitFlags
{
@@ -417,11 +528,17 @@ enum EVRSubmitFlags
Submit_Reserved = 0x04,
// Set to indicate that pTexture is a pointer to a VRTextureWithPose_t.
+ // This flag can be combined with Submit_TextureWithDepth to pass a VRTextureWithPoseAndDepth_t.
Submit_TextureWithPose = 0x08,
+
+ // Set to indicate that pTexture is a pointer to a VRTextureWithDepth_t.
+ // This flag can be combined with Submit_TextureWithPose to pass a VRTextureWithPoseAndDepth_t.
+ Submit_TextureWithDepth = 0x10,
};
/** Data required for passing Vulkan textures to IVRCompositor::Submit.
-* Be sure to call OpenVR_Shutdown before destroying these resources. */
+* Be sure to call OpenVR_Shutdown before destroying these resources.
+* Please see https://github.com/ValveSoftware/openvr/wiki/Vulkan for Vulkan-specific documentation */
struct VRVulkanTextureData_t
{
uint64_t m_nImage; // VkImage
@@ -481,6 +598,15 @@ enum EVREventType
VREvent_ButtonTouch = 202, // data is controller
VREvent_ButtonUntouch = 203, // data is controller
+ VREvent_DualAnalog_Press = 250, // data is dualAnalog
+ VREvent_DualAnalog_Unpress = 251, // data is dualAnalog
+ VREvent_DualAnalog_Touch = 252, // data is dualAnalog
+ VREvent_DualAnalog_Untouch = 253, // data is dualAnalog
+ VREvent_DualAnalog_Move = 254, // data is dualAnalog
+ VREvent_DualAnalog_ModeSwitch1 = 255, // data is dualAnalog
+ VREvent_DualAnalog_ModeSwitch2 = 256, // data is dualAnalog
+ VREvent_DualAnalog_Cancel = 257, // data is dualAnalog
+
VREvent_MouseMove = 300, // data is mouse
VREvent_MouseButtonDown = 301, // data is mouse
VREvent_MouseButtonUp = 302, // data is mouse
@@ -498,10 +624,15 @@ enum EVREventType
VREvent_SceneFocusChanged = 405, // data is process - New app got access to draw the scene
VREvent_InputFocusChanged = 406, // data is process
VREvent_SceneApplicationSecondaryRenderingStarted = 407, // data is process
+ VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, // data is process
+ VREvent_ActionBindingReloaded = 409, // data is process - The App that action binds reloaded for
VREvent_HideRenderModels = 410, // Sent to the scene application to request hiding render models temporarily
VREvent_ShowRenderModels = 411, // Sent to the scene application to request restoring render model visibility
+ VREvent_ConsoleOpened = 420,
+ VREvent_ConsoleClosed = 421,
+
VREvent_OverlayShown = 500,
VREvent_OverlayHidden = 501,
VREvent_DashboardActivated = 502,
@@ -516,11 +647,12 @@ enum EVREventType
VREvent_OverlayGamepadFocusGained = 511, // Sent to an overlay when IVROverlay::SetFocusOverlay is called on it
VREvent_OverlayGamepadFocusLost = 512, // Send to an overlay when it previously had focus and IVROverlay::SetFocusOverlay is called on something else
VREvent_OverlaySharedTextureChanged = 513,
- VREvent_DashboardGuideButtonDown = 514,
- VREvent_DashboardGuideButtonUp = 515,
+ //VREvent_DashboardGuideButtonDown = 514, // These are no longer sent
+ //VREvent_DashboardGuideButtonUp = 515,
VREvent_ScreenshotTriggered = 516, // Screenshot button combo was pressed, Dashboard should request a screenshot
VREvent_ImageFailed = 517, // Sent to overlays when a SetOverlayRaw or SetOverlayfromFail fails to load
VREvent_DashboardOverlayCreated = 518,
+ VREvent_SwitchGamepadFocus = 519,
// Screenshot API
VREvent_RequestScreenshot = 520, // Sent by vrclient application to compositor to take a screenshot
@@ -530,6 +662,8 @@ enum EVREventType
VREvent_ScreenshotProgressToDashboard = 524, // Sent by compositor to the dashboard that a completed screenshot was submitted
VREvent_PrimaryDashboardDeviceChanged = 525,
+ VREvent_RoomViewShown = 526, // Sent by compositor whenever room-view is enabled
+ VREvent_RoomViewHidden = 527, // Sent by compositor whenever room-view is disabled
VREvent_Notification_Shown = 600,
VREvent_Notification_Hidden = 601,
@@ -550,16 +684,28 @@ enum EVREventType
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_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_StatusUpdate = 900,
+ VREvent_WebInterface_InstallDriverCompleted = 950,
+
VREvent_MCImageUpdated = 1000,
VREvent_FirmwareUpdateStarted = 1100,
@@ -596,6 +742,17 @@ enum EVREventType
VREvent_MessageOverlay_Closed = 1650,
VREvent_MessageOverlayCloseRequested = 1651,
+ VREvent_Input_HapticVibration = 1700, // data is hapticVibration
+ VREvent_Input_BindingLoadFailed = 1701, // data is inputBinding
+ VREvent_Input_BindingLoadSuccessful = 1702, // data is inputBinding
+ VREvent_Input_ActionManifestReloaded = 1703, // no data
+ VREvent_Input_ActionManifestLoadFailed = 1704, // data is actionManifest
+
+ VREvent_SpatialAnchors_PoseUpdated = 1800, // data is spatialAnchor. broadcast
+ VREvent_SpatialAnchors_DescriptorUpdated = 1801, // data is spatialAnchor. broadcast
+ VREvent_SpatialAnchors_RequestPoseUpdate = 1802, // data is spatialAnchor. sent to specific driver
+ VREvent_SpatialAnchors_RequestDescriptorUpdate = 1803, // data is spatialAnchor. sent to specific driver
+
// Vendors are free to expose private events in this reserved region
VREvent_VendorSpecific_Reserved_Start = 10000,
VREvent_VendorSpecific_Reserved_End = 19999,
@@ -643,6 +800,10 @@ enum EVRButtonId
k_EButton_Dashboard_Back = k_EButton_Grip,
+ k_EButton_Knuckles_A = k_EButton_Grip,
+ k_EButton_Knuckles_B = k_EButton_ApplicationMenu,
+ k_EButton_Knuckles_JoyStick = k_EButton_Axis3,
+
k_EButton_Max = 64
};
@@ -679,7 +840,8 @@ struct VREvent_Scroll_t
};
/** when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger
- is on the touchpad (or just released from it)
+ is on the touchpad (or just released from it). These events are sent to overlays with the VROverlayFlags_SendVRTouchpadEvents
+ flag set.
**/
struct VREvent_TouchPadMove_t
{
@@ -718,6 +880,7 @@ struct VREvent_Process_t
struct VREvent_Overlay_t
{
uint64_t overlayHandle;
+ uint64_t devicePath;
};
@@ -750,6 +913,8 @@ struct VREvent_Reserved_t
{
uint64_t reserved0;
uint64_t reserved1;
+ uint64_t reserved2;
+ uint64_t reserved3;
};
struct VREvent_PerformanceTest_t
@@ -796,7 +961,54 @@ struct VREvent_Property_t
ETrackedDeviceProperty prop;
};
-/** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py */
+enum EDualAnalogWhich
+{
+ k_EDualAnalog_Left = 0,
+ k_EDualAnalog_Right = 1,
+};
+
+struct VREvent_DualAnalog_t
+{
+ float x, y; // coordinates are -1..1 analog values
+ float transformedX, transformedY; // transformed by the center and radius numbers provided by the overlay
+ EDualAnalogWhich which;
+};
+
+struct VREvent_HapticVibration_t
+{
+ uint64_t containerHandle; // property container handle of the device with the haptic component
+ uint64_t componentHandle; // Which haptic component needs to vibrate
+ float fDurationSeconds;
+ float fFrequency;
+ float fAmplitude;
+};
+
+struct VREvent_WebConsole_t
+{
+ WebConsoleHandle_t webConsoleHandle;
+};
+
+struct VREvent_InputBindingLoad_t
+{
+ vr::PropertyContainerHandle_t ulAppContainer;
+ uint64_t pathMessage;
+ uint64_t pathUrl;
+ uint64_t pathControllerType;
+};
+
+struct VREvent_InputActionManifestLoad_t
+{
+ uint64_t pathAppKey;
+ uint64_t pathMessage;
+ uint64_t pathMessageParam;
+ uint64_t pathManifestPath;
+};
+
+struct VREvent_SpatialAnchor_t
+{
+ SpatialAnchorHandle_t unHandle;
+};
+
typedef union
{
VREvent_Reserved_t reserved;
@@ -819,6 +1031,13 @@ typedef union
VREvent_EditingCameraSurface_t cameraSurface;
VREvent_MessageOverlay_t messageOverlay;
VREvent_Property_t property;
+ VREvent_DualAnalog_t dualAnalog;
+ VREvent_HapticVibration_t hapticVibration;
+ VREvent_WebConsole_t webConsole;
+ VREvent_InputBindingLoad_t inputBinding;
+ VREvent_InputActionManifestLoad_t actionManifest;
+ VREvent_SpatialAnchor_t spatialAnchor;
+ /** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py */
} VREvent_Data_t;
@@ -842,6 +1061,45 @@ struct VREvent_t
#pragma pack( pop )
#endif
+enum EVRInputError
+{
+ VRInputError_None = 0,
+ VRInputError_NameNotFound = 1,
+ VRInputError_WrongType = 2,
+ VRInputError_InvalidHandle = 3,
+ VRInputError_InvalidParam = 4,
+ VRInputError_NoSteam = 5,
+ VRInputError_MaxCapacityReached = 6,
+ VRInputError_IPCError = 7,
+ VRInputError_NoActiveActionSet = 8,
+ VRInputError_InvalidDevice = 9,
+ VRInputError_InvalidSkeleton = 10,
+ VRInputError_InvalidBoneCount = 11,
+ VRInputError_InvalidCompressedData = 12,
+ VRInputError_NoData = 13,
+ VRInputError_BufferTooSmall = 14,
+ VRInputError_MismatchedActionManifest = 15,
+ VRInputError_MissingSkeletonData = 16,
+};
+
+enum EVRSpatialAnchorError
+{
+ VRSpatialAnchorError_Success = 0,
+ VRSpatialAnchorError_Internal = 1,
+ VRSpatialAnchorError_UnknownHandle = 2,
+ VRSpatialAnchorError_ArrayTooSmall = 3,
+ VRSpatialAnchorError_InvalidDescriptorChar = 4,
+ VRSpatialAnchorError_NotYetAvailable = 5,
+ VRSpatialAnchorError_NotAvailableInThisUniverse = 6,
+ VRSpatialAnchorError_PermanentlyUnavailable = 7,
+ VRSpatialAnchorError_WrongDriver = 8,
+ VRSpatialAnchorError_DescriptorTooLong = 9,
+ VRSpatialAnchorError_Unknown = 10,
+ VRSpatialAnchorError_NoRoomCalibration = 11,
+ VRSpatialAnchorError_InvalidArgument = 12,
+ VRSpatialAnchorError_UnknownDriver = 13,
+};
+
/** The mesh to draw into the stencil (or depth) buffer to perform
* early stencil (or depth) kills of pixels that will never appear on the HMD.
* This mesh draws on all the pixels that will be hidden after distortion.
@@ -979,6 +1237,9 @@ enum EVROverlayError
VROverlayError_NoNeighbor = 27,
VROverlayError_TooManyMaskPrimitives = 29,
VROverlayError_BadMaskPrimitive = 30,
+ VROverlayError_TextureAlreadyLocked = 31,
+ VROverlayError_TextureLockCapacityReached = 32,
+ VROverlayError_TextureNotLocked = 33,
};
/** enum values to pass in to VR_Init to identify whether the application will
@@ -1020,6 +1281,27 @@ enum EVRNotificationError
};
+enum EVRSkeletalMotionRange
+{
+ // The range of motion of the skeleton takes into account any physical limits imposed by
+ // the controller itself. This will tend to be the most accurate pose compared to the user's
+ // actual hand pose, but might not allow a closed fist for example
+ VRSkeletalMotionRange_WithController = 0,
+
+ // Retarget the range of motion provided by the input device to make the hand appear to move
+ // as if it was not holding a controller. eg: map "hand grasping controller" to "closed fist"
+ VRSkeletalMotionRange_WithoutController = 1,
+};
+
+
+/** Holds the transform for a single bone */
+struct VRBoneTransform_t
+{
+ HmdVector4_t position;
+ HmdQuaternionf_t orientation;
+};
+
+
/** error codes returned by Vr_Init */
// Please add adequate error description to https://developer.valvesoftware.com/w/index.php?title=Category:SteamVRHelp
@@ -1068,7 +1350,9 @@ enum EVRInitError
VRInitError_Init_RebootingBusy = 137,
VRInitError_Init_FirmwareUpdateBusy = 138,
VRInitError_Init_FirmwareRecoveryBusy = 139,
-
+ VRInitError_Init_USBServiceBusy = 140,
+ VRInitError_Init_VRWebHelperStartupFailed = 141,
+ VRInitError_Init_TrackerManagerInitFailed = 142,
VRInitError_Driver_Failed = 200,
VRInitError_Driver_Unknown = 201,
@@ -1102,6 +1386,7 @@ enum EVRInitError
VRInitError_Compositor_UnableToCreateDevice = 405,
VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000,
+ VRInitError_VendorSpecific_WindowsNotInDevMode = 1001,
VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101,
VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102,
@@ -1157,6 +1442,14 @@ enum EVRTrackedCameraError
VRTrackedCameraError_InvalidFrameBufferSize = 115,
};
+enum EVRTrackedCameraFrameLayout
+{
+ EVRTrackedCameraFrameLayout_Mono = 0x0001,
+ EVRTrackedCameraFrameLayout_Stereo = 0x0002,
+ EVRTrackedCameraFrameLayout_VerticalLayout = 0x0010, // Stereo frames are Top/Bottom (left/right)
+ EVRTrackedCameraFrameLayout_HorizontalLayout = 0x0020, // Stereo frames are Left/Right
+};
+
enum EVRTrackedCameraFrameType
{
VRTrackedCameraFrameType_Distorted = 0, // This is the camera video frame size in pixels, still distorted.
@@ -1186,6 +1479,48 @@ typedef uint32_t ScreenshotHandle_t;
static const uint32_t k_unScreenshotHandleInvalid = 0;
+/** Frame timing data provided by direct mode drivers. */
+struct DriverDirectMode_FrameTiming
+{
+ uint32_t m_nSize; // Set to sizeof( DriverDirectMode_FrameTiming )
+ uint32_t m_nNumFramePresents; // number of times frame was presented
+ uint32_t m_nNumMisPresented; // number of times frame was presented on a vsync other than it was originally predicted to
+ uint32_t m_nNumDroppedFrames; // number of additional times previous frame was scanned out (i.e. compositor missed vsync)
+ uint32_t m_nReprojectionFlags;
+};
+
+enum EVSync
+{
+ VSync_None,
+ VSync_WaitRender, // block following render work until vsync
+ VSync_NoWaitRender, // do not block following render work (allow to get started early)
+};
+
+enum EVRMuraCorrectionMode
+{
+ EVRMuraCorrectionMode_Default = 0,
+ EVRMuraCorrectionMode_NoCorrection
+};
+
+/** raw IMU data provided by IVRIOBuffer from paths to tracked devices with IMUs */
+enum Imu_OffScaleFlags
+{
+ OffScale_AccelX = 0x01,
+ OffScale_AccelY = 0x02,
+ OffScale_AccelZ = 0x04,
+ OffScale_GyroX = 0x08,
+ OffScale_GyroY = 0x10,
+ OffScale_GyroZ = 0x20,
+};
+
+struct ImuSample_t
+{
+ double fSampleTime;
+ HmdVector3d_t vAccel;
+ HmdVector3d_t vGyro;
+ uint32_t unOffScaleFlags;
+};
+
#pragma pack( pop )
// figure out how to import from the VR API dll
@@ -1255,6 +1590,7 @@ enum ECameraVideoStreamFormat
CVS_FORMAT_RAW10 = 1, // 10 bits per pixel
CVS_FORMAT_NV12 = 2, // 12 bits per pixel
CVS_FORMAT_RGB24 = 3, // 24 bits per pixel
+ CVS_FORMAT_NV12_2 = 4, // 12 bits per pixel, 2x height
CVS_MAX_FORMATS
};
@@ -1276,6 +1612,16 @@ enum ECameraCompatibilityMode
MAX_CAMERA_COMPAT_MODES
};
+enum ETrackedCameraRoomViewMode
+{
+ TRACKED_CAMERA_ROOMVIEW_MODE_DEFAULT = 0,
+ TRACKED_CAMERA_ROOMVIEW_MODE_EDGE_A,
+ TRACKED_CAMERA_ROOMVIEW_MODE_EDGE_B,
+ TRACKED_CAMERA_ROOMVIEW_MODE_VIDEO_TRANSLUSCENT,
+ TRACKED_CAMERA_ROOMVIEW_MODE_VIDEO_OPAQUE,
+ TRACKED_CAMERA_ROOMVIEW_MODE_COUNT,
+};
+
#ifdef _MSC_VER
#define VR_CAMERA_DECL_ALIGN( x ) __declspec( align( x ) )
#else
@@ -1330,6 +1676,8 @@ VR_CAMERA_DECL_ALIGN( 8 ) struct CameraVideoStreamFrame_t
#endif // _VRTRACKEDCAMERATYPES_H
// ivrsettings.h
+#include
+
namespace vr
{
enum EVRSettingsError
@@ -1372,6 +1720,88 @@ namespace vr
//-----------------------------------------------------------------------------
static const char * const IVRSettings_Version = "IVRSettings_002";
+ class CVRSettingHelper
+ {
+ IVRSettings *m_pSettings = nullptr;
+ public:
+ CVRSettingHelper( IVRSettings *pSettings )
+ {
+ m_pSettings = pSettings;
+ }
+
+ const char *GetSettingsErrorNameFromEnum( EVRSettingsError eError )
+ {
+ return m_pSettings->GetSettingsErrorNameFromEnum( eError );
+ }
+
+ // Returns true if file sync occurred (force or settings dirty)
+ bool Sync( bool bForce = false, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->Sync( bForce, peError );
+ }
+
+ void SetBool( const char *pchSection, const char *pchSettingsKey, bool bValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetBool( pchSection, pchSettingsKey, bValue, peError );
+ }
+
+ void SetInt32( const char *pchSection, const char *pchSettingsKey, int32_t nValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetInt32( pchSection, pchSettingsKey, nValue, peError );
+ }
+ void SetFloat( const char *pchSection, const char *pchSettingsKey, float flValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetFloat( pchSection, pchSettingsKey, flValue, peError );
+ }
+ void SetString( const char *pchSection, const char *pchSettingsKey, const char *pchValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetString( pchSection, pchSettingsKey, pchValue, peError );
+ }
+ void SetString( const std::string & sSection, const std::string & sSettingsKey, const std::string & sValue, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->SetString( sSection.c_str(), sSettingsKey.c_str(), sValue.c_str(), peError );
+ }
+
+ bool GetBool( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->GetBool( pchSection, pchSettingsKey, peError );
+ }
+ int32_t GetInt32( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->GetInt32( pchSection, pchSettingsKey, peError );
+ }
+ float GetFloat( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ return m_pSettings->GetFloat( pchSection, pchSettingsKey, peError );
+ }
+ void GetString( const char *pchSection, const char *pchSettingsKey, VR_OUT_STRING() char *pchValue, uint32_t unValueLen, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->GetString( pchSection, pchSettingsKey, pchValue, unValueLen, peError );
+ }
+ std::string GetString( const std::string & sSection, const std::string & sSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ char buf[4096];
+ vr::EVRSettingsError eError;
+ m_pSettings->GetString( sSection.c_str(), sSettingsKey.c_str(), buf, sizeof( buf ), &eError );
+ if ( peError )
+ *peError = eError;
+ if ( eError == vr::VRSettingsError_None )
+ return buf;
+ else
+ return "";
+ }
+
+ void RemoveSection( const char *pchSection, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->RemoveSection( pchSection, peError );
+ }
+ void RemoveKeyInSection( const char *pchSection, const char *pchSettingsKey, EVRSettingsError *peError = nullptr )
+ {
+ m_pSettings->RemoveKeyInSection( pchSection, pchSettingsKey, peError );
+ }
+ };
+
+
//-----------------------------------------------------------------------------
// steamvr keys
static const char * const k_pch_SteamVR_Section = "steamvr";
@@ -1417,16 +1847,28 @@ namespace vr
static const char * const k_pch_SteamVR_RetailDemo_Bool = "retailDemo";
static const char * const k_pch_SteamVR_IpdOffset_Float = "ipdOffset";
static const char * const k_pch_SteamVR_AllowSupersampleFiltering_Bool = "allowSupersampleFiltering";
+ static const char * const k_pch_SteamVR_SupersampleManualOverride_Bool = "supersampleManualOverride";
static const char * const k_pch_SteamVR_EnableLinuxVulkanAsync_Bool = "enableLinuxVulkanAsync";
+ static const char * const k_pch_SteamVR_AllowDisplayLockedMode_Bool = "allowDisplayLockedMode";
+ static const char * const k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bool = "haveStartedTutorialForNativeChaperoneDriver";
+ static const char * const k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor";
+ static const char * const k_pch_SteamVR_DebugInput = "debugInput";
+ static const char * const k_pch_SteamVR_LegacyInputRebinding = "legacyInputRebinding";
+ static const char * const k_pch_SteamVR_DebugInputBinding = "debugInputBinding";
+ static const char * const k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI";
+ static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode";
//-----------------------------------------------------------------------------
// lighthouse keys
static const char * const k_pch_Lighthouse_Section = "driver_lighthouse";
static const char * const k_pch_Lighthouse_DisableIMU_Bool = "disableimu";
+ static const char * const k_pch_Lighthouse_DisableIMUExceptHMD_Bool = "disableimuexcepthmd";
static const char * const k_pch_Lighthouse_UseDisambiguation_String = "usedisambiguation";
static const char * const k_pch_Lighthouse_DisambiguationDebug_Int32 = "disambiguationdebug";
static const char * const k_pch_Lighthouse_PrimaryBasestation_Int32 = "primarybasestation";
static const char * const k_pch_Lighthouse_DBHistory_Bool = "dbhistory";
+ static const char * const k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth";
+ static const char * const k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations";
//-----------------------------------------------------------------------------
// null keys
@@ -1502,6 +1944,7 @@ namespace vr
static const char * const k_pch_Camera_BoundsColorGammaB_Int32 = "cameraBoundsColorGammaB";
static const char * const k_pch_Camera_BoundsColorGammaA_Int32 = "cameraBoundsColorGammaA";
static const char * const k_pch_Camera_BoundsStrength_Int32 = "cameraBoundsStrength";
+ static const char * const k_pch_Camera_RoomViewMode_Int32 = "cameraRoomViewMode";
//-----------------------------------------------------------------------------
// audio keys
@@ -1528,6 +1971,9 @@ namespace vr
static const char * const k_pch_Dashboard_Section = "dashboard";
static const char * const k_pch_Dashboard_EnableDashboard_Bool = "enableDashboard";
static const char * const k_pch_Dashboard_ArcadeMode_Bool = "arcadeMode";
+ static const char * const k_pch_Dashboard_EnableWebUI = "webUI";
+ static const char * const k_pch_Dashboard_EnableWebUIDevTools = "webUIDevTools";
+ static const char * const k_pch_Dashboard_EnableWebUIDashboardReplacement = "webUIDashboard";
//-----------------------------------------------------------------------------
// model skin keys
@@ -1537,6 +1983,28 @@ namespace vr
// driver keys - These could be checked in any driver_ section
static const char * const k_pch_Driver_Enable_Bool = "enable";
+ //-----------------------------------------------------------------------------
+ // web interface keys
+ static const char* const k_pch_WebInterface_Section = "WebInterface";
+ static const char* const k_pch_WebInterface_WebEnable_Bool = "WebEnable";
+ static const char* const k_pch_WebInterface_WebPort_String = "WebPort";
+
+ //-----------------------------------------------------------------------------
+ // tracking overrides - keys are device paths, values are the device paths their
+ // tracking/pose information overrides
+ static const char* const k_pch_TrackingOverride_Section = "TrackingOverrides";
+
+ //-----------------------------------------------------------------------------
+ // per-app keys - the section name for these is the app key itself. Some of these are prefixed by the controller type
+ static const char* const k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL";
+ static const char* const k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL";
+ static const char* const k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave";
+ static const char* const k_pch_App_ActionManifestURL_String = "ActionManifestURL";
+
+ //-----------------------------------------------------------------------------
+ // configuration for trackers
+ static const char * const k_pch_Trackers_Section = "trackers";
+
} // namespace vr
// iservertrackeddevicedriver.h
@@ -1725,7 +2193,14 @@ namespace vr
// -----------------------------------
/** Specific to Oculus compositor support, textures supplied must be created using this method. */
- virtual void CreateSwapTextureSet( uint32_t unPid, uint32_t unFormat, uint32_t unWidth, uint32_t unHeight, vr::SharedTextureHandle_t( *pSharedTextureHandles )[ 3 ] ) {}
+ struct SwapTextureSetDesc_t
+ {
+ uint32_t nWidth;
+ uint32_t nHeight;
+ uint32_t nFormat;
+ uint32_t nSampleCount;
+ };
+ virtual void CreateSwapTextureSet( uint32_t unPid, const SwapTextureSetDesc_t *pSwapTextureSetDesc, vr::SharedTextureHandle_t( *pSharedTextureHandles )[ 3 ] ) {}
/** Used to textures created using CreateSwapTextureSet. Only one of the set's handles needs to be used to destroy the entire set. */
virtual void DestroySwapTextureSet( vr::SharedTextureHandle_t sharedTextureHandle ) {}
@@ -1738,46 +2213,33 @@ namespace vr
/** Call once per layer to draw for this frame. One shared texture handle per eye. Textures must be created
* using CreateSwapTextureSet and should be alternated per frame. Call Present once all layers have been submitted. */
- virtual void SubmitLayer( vr::SharedTextureHandle_t sharedTextureHandles[ 2 ], const vr::VRTextureBounds_t( &bounds )[ 2 ], const vr::HmdMatrix34_t *pPose ) {}
-
- /** Submits queued layers for display. */
- virtual void Present( vr::SharedTextureHandle_t syncTexture ) {}
-
- };
-
- static const char *IVRDriverDirectModeComponent_Version = "IVRDriverDirectModeComponent_002";
-
-}
-
-// ivrcontrollercomponent.h
-namespace vr
-{
+ struct SubmitLayerPerEye_t
+ {
+ // Shared texture handles (depth not always provided).
+ vr::SharedTextureHandle_t hTexture, hDepthTexture;
+ // Valid region of provided texture (and depth).
+ vr::VRTextureBounds_t bounds;
- // ----------------------------------------------------------------------------------------------
- // Purpose: Controller access on a single tracked device.
- // ----------------------------------------------------------------------------------------------
- class IVRControllerComponent
- {
- public:
+ // Projection matrix used to render the depth buffer.
+ vr::HmdMatrix44_t mProjection;
+ };
+ virtual void SubmitLayer( const SubmitLayerPerEye_t( &perEye )[ 2 ], const vr::HmdMatrix34_t *pPose ) {}
- // ------------------------------------
- // Controller Methods
- // ------------------------------------
-
- /** Gets the current state of a controller. */
- virtual VRControllerState_t GetControllerState( ) = 0;
+ /** Submits queued layers for display. */
+ virtual void Present( vr::SharedTextureHandle_t syncTexture ) {}
- /** Returns a uint64 property. If the property is not available this function will return 0. */
- virtual bool TriggerHapticPulse( uint32_t unAxisId, uint16_t usPulseDurationMicroseconds ) = 0;
+ /** Called after Present to allow driver to take more time until vsync after they've successfully acquired the sync texture in Present.*/
+ virtual void PostPresent() {}
+ /** Called to get additional frame timing stats from driver. Check m_nSize for versioning (new members will be added to end only). */
+ virtual void GetFrameTiming( DriverDirectMode_FrameTiming *pFrameTiming ) {}
};
-
-
- static const char *IVRControllerComponent_Version = "IVRControllerComponent_001";
+ static const char *IVRDriverDirectModeComponent_Version = "IVRDriverDirectModeComponent_005";
}
+
// ivrcameracomponent.h
namespace vr
{
@@ -1830,7 +2292,6 @@ namespace vr
class ITrackedDeviceServerDriver;
struct TrackedDeviceDriverInfo_t;
struct DriverPose_t;
-typedef PropertyContainerHandle_t DriverHandle_t;
/** This interface is provided by vrserver to allow the driver to notify
* the system when something changes about a device. These changes must
@@ -1907,9 +2368,33 @@ class IVRWatchdogProvider
static const char *IVRWatchdogProvider_Version = "IVRWatchdogProvider_001";
+
+
+
+/** This is an optional interface drivers may implement. It will be loaded in vrcompositor.exe */
+class IVRCompositorPluginProvider
+{
+public:
+ /** initializes the driver when used to load compositor plugins */
+ virtual EVRInitError Init( IVRDriverContext *pDriverContext ) = 0;
+
+ /** cleans up the driver right before it is unloaded */
+ virtual void Cleanup() = 0;
+
+ /** Returns the versions of interfaces used by this driver */
+ virtual const char * const *GetInterfaceVersions() = 0;
+
+ /** Requests a component interface of the driver for specific functionality. The driver should return NULL
+ * if the requested interface or version is not supported. */
+ virtual void *GetComponent( const char *pchComponentNameAndVersion ) = 0;
+};
+
+static const char *IVRCompositorPluginProvider_Version = "IVRCompositorPluginProvider_001";
+
}
// ivrproperties.h
#include
+#include
namespace vr
{
@@ -1991,6 +2476,10 @@ class CVRPropertyHelpers
* return an empty string. */
std::string GetStringProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError = nullptr );
+ /** Reads a std::vector of data from a property. */
+ template< typename T>
+ ETrackedPropertyError GetPropertyVector( PropertyContainerHandle_t ulContainer, ETrackedDeviceProperty prop, PropertyTypeTag_t unExpectedTag, std::vector *pvecResults );
+
/** Sets a scaler property. The new value will be returned on any subsequent call to get this property in any process. */
ETrackedPropertyError SetBoolProperty( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, bool bNewValue );
ETrackedPropertyError SetFloatProperty( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, float fNewValue );
@@ -2012,6 +2501,12 @@ class CVRPropertyHelpers
/* Turns a device index into a property container handle. */
PropertyContainerHandle_t TrackedDeviceToPropertyContainer( TrackedDeviceIndex_t nDevice ) { return m_pProperties->TrackedDeviceToPropertyContainer( nDevice ); }
+ /** Sets a std::vector of typed data to a property. */
+ template< typename T>
+ ETrackedPropertyError SetPropertyVector( PropertyContainerHandle_t ulContainer, ETrackedDeviceProperty prop, PropertyTypeTag_t unExpectedTag, std::vector *vecProperties );
+
+ /** Returns true if the specified property is set on the specified container */
+ bool IsPropertySet( PropertyContainerHandle_t ulContainer, ETrackedDeviceProperty prop, ETrackedPropertyError *peError = nullptr );
private:
template
T GetPropertyHelper( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, ETrackedPropertyError *pError, T bDefault, PropertyTypeTag_t unTypeTag );
@@ -2229,8 +2724,116 @@ inline ETrackedPropertyError CVRPropertyHelpers::EraseProperty( PropertyContaine
}
+template< typename T >
+ETrackedPropertyError CVRPropertyHelpers::SetPropertyVector(PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, PropertyTypeTag_t unTag, std::vector *pvecProperties)
+{
+ return SetProperty( ulContainer, prop, &(*pvecProperties)[0], (uint32_t)(pvecProperties->size() * sizeof( T )), unTag );
}
+template< typename T >
+ETrackedPropertyError CVRPropertyHelpers::GetPropertyVector( PropertyContainerHandle_t ulContainer, ETrackedDeviceProperty prop, PropertyTypeTag_t unExpectedTag, std::vector *pvecResults )
+{
+ ETrackedPropertyError err;
+ PropertyTypeTag_t unTag;
+ uint32_t unNeeded;
+ if ( pvecResults->empty() )
+ unNeeded = GetProperty( ulContainer, prop, nullptr, 0, &unTag, &err );
+ else
+ unNeeded = GetProperty( ulContainer, prop, &(*pvecResults)[0], (uint32_t)(pvecResults->size() * sizeof( T )), &unTag, &err );
+ uint32_t unFound = unNeeded / sizeof( T );
+ if ( err == TrackedProp_Success )
+ {
+ if ( unTag != unExpectedTag && unFound > 0 )
+ {
+ return TrackedProp_WrongDataType;
+ }
+
+ pvecResults->resize( unFound );
+ return TrackedProp_Success;
+ }
+ else if ( err == TrackedProp_BufferTooSmall )
+ {
+ pvecResults->resize( unFound );
+ unNeeded = GetProperty( ulContainer, prop, &(*pvecResults)[0], (uint32_t)(pvecResults->size() * sizeof( T )), &unTag, &err );
+ unFound = unNeeded / sizeof( T );
+
+ if ( err == TrackedProp_Success )
+ {
+ if ( unTag != unExpectedTag )
+ {
+ return TrackedProp_WrongDataType;
+ }
+
+ pvecResults->resize( unFound );
+ return TrackedProp_Success;
+ }
+ }
+ return err;
+}
+
+inline bool CVRPropertyHelpers::IsPropertySet( PropertyContainerHandle_t ulContainer, ETrackedDeviceProperty prop, ETrackedPropertyError *peError )
+{
+ ETrackedPropertyError error;
+ GetProperty( ulContainer, prop, nullptr, 0, nullptr, &error );
+ if ( peError )
+ *peError = error;
+ return error == TrackedProp_Success || error == TrackedProp_BufferTooSmall;
+}
+
+}
+
+
+
+// ivrdriverinput.h
+namespace vr
+{
+
+ typedef uint64_t VRInputComponentHandle_t;
+ static const VRInputComponentHandle_t k_ulInvalidInputComponentHandle = 0;
+
+ enum EVRScalarType
+ {
+ VRScalarType_Absolute = 0,
+ VRScalarType_Relative = 1,
+ };
+
+
+ enum EVRScalarUnits
+ {
+ VRScalarUnits_NormalizedOneSided = 0, // Value ranges from 0 to 1
+ VRScalarUnits_NormalizedTwoSided = 1, // Value ranges from -1 to 1
+ };
+
+ class IVRDriverInput
+ {
+ public:
+
+ /** Creates a boolean input component for the device */
+ virtual EVRInputError CreateBooleanComponent( PropertyContainerHandle_t ulContainer, const char *pchName, VRInputComponentHandle_t *pHandle ) = 0;
+
+ /** Updates a boolean component */
+ virtual EVRInputError UpdateBooleanComponent( VRInputComponentHandle_t ulComponent, bool bNewValue, double fTimeOffset ) = 0;
+
+ /** Creates a scalar input component for the device */
+ virtual EVRInputError CreateScalarComponent( PropertyContainerHandle_t ulContainer, const char *pchName, VRInputComponentHandle_t *pHandle, EVRScalarType eType, EVRScalarUnits eUnits ) = 0;
+
+ /** Updates a boolean component */
+ virtual EVRInputError UpdateScalarComponent( VRInputComponentHandle_t ulComponent, float fNewValue, double fTimeOffset ) = 0;
+
+ /** Creates a haptic component for the device */
+ virtual EVRInputError CreateHapticComponent( PropertyContainerHandle_t ulContainer, const char *pchName, VRInputComponentHandle_t *pHandle ) = 0;
+
+ /** Creates a skeleton component. */
+ virtual EVRInputError CreateSkeletonComponent( PropertyContainerHandle_t ulContainer, const char *pchName, const char *pchSkeletonPath, const char *pchBasePosePath, const VRBoneTransform_t *pGripLimitTransforms, uint32_t unGripLimitTransformCount, VRInputComponentHandle_t *pHandle ) = 0;
+
+ /** Updates a skeleton component. */
+ virtual EVRInputError UpdateSkeletonComponent( VRInputComponentHandle_t ulComponent, EVRSkeletalMotionRange eMotionRange, const VRBoneTransform_t *pTransforms, uint32_t unTransformCount ) = 0;
+
+ };
+
+ static const char * const IVRDriverInput_Version = "IVRDriverInput_002";
+
+} // namespace vr
// ivrdriverlog.h
namespace vr
@@ -2274,24 +2877,6 @@ class IVRServerDriverHost
* only permitted on devices of the HMD class. */
virtual void VsyncEvent( double vsyncTimeOffsetSeconds ) = 0;
- /** notifies the server that the button was pressed */
- virtual void TrackedDeviceButtonPressed( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0;
-
- /** notifies the server that the button was unpressed */
- virtual void TrackedDeviceButtonUnpressed( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0;
-
- /** notifies the server that the button was pressed */
- virtual void TrackedDeviceButtonTouched( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0;
-
- /** notifies the server that the button was unpressed */
- virtual void TrackedDeviceButtonUntouched( uint32_t unWhichDevice, EVRButtonId eButtonId, double eventTimeOffset ) = 0;
-
- /** notifies the server than a controller axis changed */
- virtual void TrackedDeviceAxisUpdated( uint32_t unWhichDevice, uint32_t unWhichAxis, const VRControllerAxis_t & axisState ) = 0;
-
- /** Notifies the server that the proximity sensor on the specified device */
- virtual void ProximitySensorState( uint32_t unWhichDevice, bool bProximitySensorTriggered ) = 0;
-
/** Sends a vendor specific event (VREvent_VendorSpecific_Reserved_Start..VREvent_VendorSpecific_Reserved_End */
virtual void VendorSpecificEvent( uint32_t unWhichDevice, vr::EVREventType eventType, const VREvent_Data_t & eventData, double eventTimeOffset ) = 0;
@@ -2312,7 +2897,23 @@ class IVRServerDriverHost
virtual void TrackedDeviceDisplayTransformUpdated( uint32_t unWhichDevice, HmdMatrix34_t eyeToHeadLeft, HmdMatrix34_t eyeToHeadRight ) = 0;
};
-static const char *IVRServerDriverHost_Version = "IVRServerDriverHost_004";
+static const char *IVRServerDriverHost_Version = "IVRServerDriverHost_005";
+
+}
+
+// ivrcompositordriverhost.h
+namespace vr
+{
+
+class IVRCompositorDriverHost
+{
+public:
+ /** Returns true and fills the event with the next event on the queue if there is one. If there are no events
+ * this method returns false. uncbVREvent should be the size in bytes of the VREvent_t struct */
+ virtual bool PollNextEvent( VREvent_t *pEvent, uint32_t uncbVREvent ) = 0;
+};
+
+static const char *IVRCompositorDriverHost_Version = "IVRCompositorDriverHost_001";
}
@@ -2393,6 +2994,14 @@ static const char *IVRWatchdogHost_Version = "IVRWatchdogHost_001";
// ivrvirtualdisplay.h
namespace vr
{
+ struct PresentInfo_t
+ {
+ SharedTextureHandle_t backbufferTextureHandle;
+ EVSync vsync;
+ uint64_t nFrameId;
+ double flVSyncTimeInSeconds;
+ };
+
// ----------------------------------------------------------------------------------------------
// Purpose: This component is used for drivers that implement a virtual display (e.g. wireless).
// ----------------------------------------------------------------------------------------------
@@ -2401,7 +3010,7 @@ namespace vr
public:
/** Submits final backbuffer for display. */
- virtual void Present( vr::SharedTextureHandle_t backbufferTextureHandle ) = 0;
+ virtual void Present( const PresentInfo_t *pPresentInfo, uint32_t unPresentInfoSize ) = 0;
/** Block until the last presented buffer start scanning out. */
virtual void WaitForPresent() = 0;
@@ -2410,10 +3019,7 @@ namespace vr
virtual bool GetTimeSinceLastVsync( float *pfSecondsSinceLastVsync, uint64_t *pulFrameCounter ) = 0;
};
- static const char *IVRVirtualDisplay_Version = "IVRVirtualDisplay_001";
-
- /** Returns the current IVRVirtualDisplay pointer or NULL the interface could not be found. */
- VR_INTERFACE vr::IVRVirtualDisplay *VR_CALLTYPE VRVirtualDisplay();
+ static const char *IVRVirtualDisplay_Version = "IVRVirtualDisplay_002";
}
@@ -2436,13 +3042,63 @@ class IVRResources
/** Provides the full path to the specified resource. Resource names can include named directories for
* drivers and other things, and this resolves all of those and returns the actual physical path.
* pchResourceTypeDirectory is the subdirectory of resources to look in. */
- virtual uint32_t GetResourceFullPath( const char *pchResourceName, const char *pchResourceTypeDirectory, char *pchPathBuffer, uint32_t unBufferLen ) = 0;
+ virtual uint32_t GetResourceFullPath( const char *pchResourceName, const char *pchResourceTypeDirectory, VR_OUT_STRING() char *pchPathBuffer, uint32_t unBufferLen ) = 0;
};
static const char * const IVRResources_Version = "IVRResources_001";
}
+// ivriobuffer.h
+namespace vr
+{
+
+typedef uint64_t IOBufferHandle_t;
+static const uint64_t k_ulInvalidIOBufferHandle = 0;
+
+ enum EIOBufferError
+ {
+ IOBuffer_Success = 0,
+ IOBuffer_OperationFailed = 100,
+ IOBuffer_InvalidHandle = 101,
+ IOBuffer_InvalidArgument = 102,
+ IOBuffer_PathExists = 103,
+ IOBuffer_PathDoesNotExist = 104,
+ IOBuffer_Permission = 105,
+ };
+
+ enum EIOBufferMode
+ {
+ IOBufferMode_Read = 0x0001,
+ IOBufferMode_Write = 0x0002,
+ IOBufferMode_Create = 0x0200,
+ };
+
+ // ----------------------------------------------------------------------------------------------
+ // Purpose:
+ // ----------------------------------------------------------------------------------------------
+ class IVRIOBuffer
+ {
+ public:
+ /** opens an existing or creates a new IOBuffer of unSize bytes */
+ virtual vr::EIOBufferError Open( const char *pchPath, vr::EIOBufferMode mode, uint32_t unElementSize, uint32_t unElements, vr::IOBufferHandle_t *pulBuffer ) = 0;
+
+ /** closes a previously opened or created buffer */
+ virtual vr::EIOBufferError Close( vr::IOBufferHandle_t ulBuffer ) = 0;
+
+ /** reads up to unBytes from buffer into *pDst, returning number of bytes read in *punRead */
+ virtual vr::EIOBufferError Read( vr::IOBufferHandle_t ulBuffer, void *pDst, uint32_t unBytes, uint32_t *punRead ) = 0;
+
+ /** writes unBytes of data from *pSrc into a buffer. */
+ virtual vr::EIOBufferError Write( vr::IOBufferHandle_t ulBuffer, void *pSrc, uint32_t unBytes ) = 0;
+
+ /** retrieves the property container of an buffer. */
+ virtual vr::PropertyContainerHandle_t PropertyContainer( vr::IOBufferHandle_t ulBuffer ) = 0;
+ };
+
+ static const char *IVRIOBuffer_Version = "IVRIOBuffer_001";
+}
+
// ivrdrivermanager.h
namespace vr
{
@@ -2454,6 +3110,8 @@ class IVRDriverManager
/** Returns the length of the number of bytes necessary to hold this string including the trailing null. */
virtual uint32_t GetDriverName( vr::DriverId_t nDriver, VR_OUT_STRING() char *pchValue, uint32_t unBufferSize ) = 0;
+
+ virtual DriverHandle_t GetDriverHandle( const char *pchDriverName ) = 0;
};
static const char * const IVRDriverManager_Version = "IVRDriverManager_001";
@@ -2462,23 +3120,116 @@ static const char * const IVRDriverManager_Version = "IVRDriverManager_001";
+// ivrdriverspatialanchors.h
+namespace vr
+{
+ struct SpatialAnchorDriverPose_t
+ {
+ /** This position is in the same "world" space (+Y up) as provided by DriverPose_t. */
+ vr::HmdQuaternion_t qWorldRotation;
+ vr::HmdVector3d_t vWorldTranslation;
+
+ /** The pose will automatically start returning VRSpatialAnchorError_NotAvailableInThisUniverse
+ * if this is nonzero and does not match the current universe ID. */
+ uint64_t ulRequiredUniverseId;
+
+ /** When this time expires, SteamVR will start generating
+ * VREvent_SpatialAnchors_RequestPoseUpdate when the pose is read by an application
+ * to let the driver know it is still worth updating.
+ * You can use this facility in several ways:
+ * 1. Set to -1 to never receive an update request for this pose. The driver
+ * may still update poses at any time.
+ * 2. Set to 0 to always receive an update request *after* each time the pose
+ * is read. The rate of requests could be very high if the application gets
+ * the pose at framerate.
+ * 3. If the driver knows there is no reason to update the pose for some amount of
+ * time, it can set that time here and receive the update request reminder later.
+ * 4. If the driver plans to automatically update this pose for some amount of time
+ * (as it gets better information about the virtual location of this anchor) it can
+ * set that duration here to indicate that no "update requested" reminders are needed.
+ * When that automatic update period expires, any future interest in the pose will
+ * be indicated by a pose update request.
+ * The driver may always update the pose, including during the valid duration. */
+ double fValidDuration; // seconds
+ };
+
+ class IVRDriverSpatialAnchors
+ {
+ public:
+
+ /* NOTE: You must declare support for spatial anchors in your driver manifest. Add
+ * "spatialAnchorsSupport": true to your manifest. Without that setting, SteamVR
+ * will short-circuit anchor requests from applications and provide a generic descriptor
+ * that does not have any of the advantages of true spatial anchors. */
+
+ /* The driver should monitor for events VREvent_SpatialAnchors_RequestPoseUpdate (for new
+ * descriptors from applications that need UpdateSpatialAnchorPose()) and for
+ * VREvent_SpatialAnchors_RequestDescriptorUpdate (for new poses that need UpdateSpatialAnchorDescriptor()).
+ * For automatic pose updates over time, the driver should keep track of the handles it
+ * has seen and provide updates when conditions change. If the driver uses fValidDuration,
+ * it may wait for VREvent_SpatialAnchors_RequestPoseUpdate instead of keeping track itself. */
+
+ /** Update a pose for a spatial anchor. Should be called when an event notifies the driver that a
+ * new descriptor has been registered by an application. May be called for any anchor whenever the
+ * driver has better information about the best virtual coordinate to represent the anchor. Should
+ * be called on all active handles whenever driver state changes in a way that changes how physical
+ * world locations map to virtual coordinates (e.g. anything that would cause a universe ID change).
+ * This fires an event when it is called for the first time (to alert whoever submitted the descriptor). */
+ virtual EVRSpatialAnchorError UpdateSpatialAnchorPose( SpatialAnchorHandle_t unHandle, const SpatialAnchorDriverPose_t *pPose ) = 0;
+
+ /** Invalidate any pose associated with the handle and cause future calls to GetSpatialAnchorPose (on
+ * both the client and driver side) to return the specified error. eError must be one of
+ * VRSpatialAnchorError_NotYetAvailable, VRSpatialAnchorError_NotAvailableInThisUniverse, or
+ * VRSpatialAnchorError_PermanentlyUnavailable */
+ virtual EVRSpatialAnchorError SetSpatialAnchorPoseError( SpatialAnchorHandle_t unHandle, EVRSpatialAnchorError eError, double fValidDuration ) = 0;
+
+ /** Update the descriptor for a spatial anchor. Should be called when an event notifies the driver
+ * that a new pose has been registered by an application. May be called for any anchor whenever the
+ * driver has better or additional information it wants to include in the anchor descriptor. Note,
+ * however, that the application may never fetch the updated anchor descriptor and may request the
+ * original descriptor in a future session having ignored the update.
+ * The supplied descriptor should be only the driver's opaque internal data, not the decorated form that
+ * is used by clients (wrapped by runtime metadata). The descriptor must not contain non-ASCII characters or
+ * the two special characters ~ or "
+ * This fires an event every time it is called. */
+ virtual EVRSpatialAnchorError UpdateSpatialAnchorDescriptor( SpatialAnchorHandle_t unHandle, const char *pchDescriptor ) = 0;
+
+ /** Get the pose for a given handle. */
+ virtual EVRSpatialAnchorError GetSpatialAnchorPose( SpatialAnchorHandle_t unHandle, SpatialAnchorDriverPose_t *pDriverPoseOut ) = 0;
+
+ /** Get the descriptor for a given handle. This will be VRSpatialAnchorError_NotYetAvailable for handles
+ * where the driver has not yet built a descriptor. It will be the application-supplied descriptor for previously
+ * saved anchors that the application is requesting poses for. If the driver has called UpdateSpatialAnchorDescriptor()
+ * already in this session, it will be the descriptor provided by the driver.
+ * If bDecorated, returns the descriptor wrapped with runtime metadata suitable for a client to save. Else returns only
+ * the driver's opaque internal data.
+ */
+ virtual EVRSpatialAnchorError GetSpatialAnchorDescriptor( SpatialAnchorHandle_t unHandle, VR_OUT_STRING() char *pchDescriptorOut, uint32_t *punDescriptorBufferLenInOut, bool bDecorated ) = 0;
+
+ };
+
+ static const char * const IVRDriverSpatialAnchors_Version = "IVRDriverSpatialAnchors_001";
+
+} // namespace vr
+
namespace vr
{
+#if !defined( OPENVR_INTERFACE_INTERNAL )
static const char * const k_InterfaceVersions[] =
{
IVRSettings_Version,
ITrackedDeviceServerDriver_Version,
IVRDisplayComponent_Version,
IVRDriverDirectModeComponent_Version,
- IVRControllerComponent_Version,
IVRCameraComponent_Version,
IServerTrackedDeviceProvider_Version,
IVRWatchdogProvider_Version,
IVRVirtualDisplay_Version,
IVRDriverManager_Version,
IVRResources_Version,
+ IVRCompositorPluginProvider_Version,
nullptr
};
@@ -2496,6 +3247,7 @@ namespace vr
EVRInitError InitServer();
EVRInitError InitWatchdog();
+ EVRInitError InitCompositor();
IVRSettings *VRSettings()
{
@@ -2551,6 +3303,16 @@ namespace vr
return m_pVRWatchdogHost;
}
+ IVRCompositorDriverHost *VRCompositorDriverHost()
+ {
+ if ( m_pVRCompositorDriverHost == nullptr )
+ {
+ EVRInitError eError;
+ m_pVRCompositorDriverHost = ( IVRCompositorDriverHost * )VRDriverContext()->GetGenericInterface( IVRCompositorDriverHost_Version, &eError );
+ }
+ return m_pVRCompositorDriverHost;
+ }
+
IVRDriverLog *VRDriverLog()
{
if ( m_pVRDriverLog == nullptr )
@@ -2586,6 +3348,36 @@ namespace vr
return m_pVRResources;
}
+ IVRDriverInput *VRDriverInput()
+ {
+ if ( !m_pVRDriverInput )
+ {
+ EVRInitError eError;
+ m_pVRDriverInput = (IVRDriverInput *)VRDriverContext()->GetGenericInterface( IVRDriverInput_Version, &eError );
+ }
+ return m_pVRDriverInput;
+ }
+
+ IVRIOBuffer *VRIOBuffer()
+ {
+ if ( !m_pVRIOBuffer )
+ {
+ EVRInitError eError;
+ m_pVRIOBuffer = (IVRIOBuffer *)VRDriverContext()->GetGenericInterface( IVRIOBuffer_Version, &eError );
+ }
+ return m_pVRIOBuffer;
+ }
+
+ IVRDriverSpatialAnchors *VRDriverSpatialAnchors()
+ {
+ if ( !m_pVRDriverSpatialAnchors )
+ {
+ EVRInitError eError;
+ m_pVRDriverSpatialAnchors = (IVRDriverSpatialAnchors *)VRDriverContext()->GetGenericInterface( IVRDriverSpatialAnchors_Version, &eError );
+ }
+ return m_pVRDriverSpatialAnchors;
+ }
+
private:
CVRPropertyHelpers m_propertyHelpers;
CVRHiddenAreaHelpers m_hiddenAreaHelpers;
@@ -2594,9 +3386,13 @@ namespace vr
IVRProperties *m_pVRProperties;
IVRServerDriverHost *m_pVRServerDriverHost;
IVRWatchdogHost *m_pVRWatchdogHost;
+ IVRCompositorDriverHost *m_pVRCompositorDriverHost;
IVRDriverLog *m_pVRDriverLog;
IVRDriverManager *m_pVRDriverManager;
IVRResources *m_pVRResources;
+ IVRDriverInput *m_pVRDriverInput;
+ IVRIOBuffer *m_pVRIOBuffer;
+ IVRDriverSpatialAnchors *m_pVRDriverSpatialAnchors;
};
inline COpenVRDriverContext &OpenVRInternal_ModuleServerDriverContext()
@@ -2612,19 +3408,27 @@ namespace vr
inline IVRDriverLog *VR_CALLTYPE VRDriverLog() { return OpenVRInternal_ModuleServerDriverContext().VRDriverLog(); }
inline IVRServerDriverHost *VR_CALLTYPE VRServerDriverHost() { return OpenVRInternal_ModuleServerDriverContext().VRServerDriverHost(); }
inline IVRWatchdogHost *VR_CALLTYPE VRWatchdogHost() { return OpenVRInternal_ModuleServerDriverContext().VRWatchdogHost(); }
+ inline IVRCompositorDriverHost *VR_CALLTYPE VRCompositorDriverHost() { return OpenVRInternal_ModuleServerDriverContext().VRCompositorDriverHost(); }
inline DriverHandle_t VR_CALLTYPE VRDriverHandle() { return OpenVRInternal_ModuleServerDriverContext().VRDriverHandle(); }
inline IVRDriverManager *VR_CALLTYPE VRDriverManager() { return OpenVRInternal_ModuleServerDriverContext().VRDriverManager(); }
inline IVRResources *VR_CALLTYPE VRResources() { return OpenVRInternal_ModuleServerDriverContext().VRResources(); }
+ inline IVRDriverInput *VR_CALLTYPE VRDriverInput() { return OpenVRInternal_ModuleServerDriverContext().VRDriverInput(); }
+ inline IVRIOBuffer *VR_CALLTYPE VRIOBuffer() { return OpenVRInternal_ModuleServerDriverContext().VRIOBuffer(); }
+ inline IVRDriverSpatialAnchors *VR_CALLTYPE VRDriverSpatialAnchors() { return OpenVRInternal_ModuleServerDriverContext().VRDriverSpatialAnchors(); }
inline void COpenVRDriverContext::Clear()
{
m_pVRSettings = nullptr;
m_pVRProperties = nullptr;
m_pVRServerDriverHost = nullptr;
- m_pVRDriverLog = nullptr;
m_pVRWatchdogHost = nullptr;
+ m_pVRCompositorDriverHost = nullptr;
+ m_pVRDriverLog = nullptr;
m_pVRDriverManager = nullptr;
m_pVRResources = nullptr;
+ m_pVRDriverInput = nullptr;
+ m_pVRIOBuffer = nullptr;
+ m_pVRDriverSpatialAnchors = nullptr;
}
inline EVRInitError COpenVRDriverContext::InitServer()
@@ -2650,6 +3454,19 @@ namespace vr
return VRInitError_None;
}
+ inline EVRInitError COpenVRDriverContext::InitCompositor()
+ {
+ Clear();
+ if ( !VRCompositorDriverHost()
+ || !VRSettings()
+ || !VRProperties()
+ || !VRDriverLog()
+ || !VRDriverManager()
+ || !VRResources() )
+ return VRInitError_Init_InterfaceNotFound;
+ return VRInitError_None;
+ }
+
inline EVRInitError InitServerDriverContext( IVRDriverContext *pContext )
{
VRDriverContext() = pContext;
@@ -2662,6 +3479,12 @@ namespace vr
return OpenVRInternal_ModuleServerDriverContext().InitWatchdog();
}
+ inline EVRInitError InitCompositorDriverContext( IVRDriverContext *pContext )
+ {
+ VRDriverContext() = pContext;
+ return OpenVRInternal_ModuleServerDriverContext().InitCompositor();
+ }
+
inline void CleanupDriverContext()
{
VRDriverContext() = nullptr;
@@ -2687,6 +3510,20 @@ namespace vr
#define VR_CLEANUP_WATCHDOG_DRIVER_CONTEXT() \
vr::CleanupDriverContext();
+
+#define VR_INIT_COMPOSITOR_DRIVER_CONTEXT( pContext ) \
+ { \
+ vr::EVRInitError eError = vr::InitCompositorDriverContext( pContext ); \
+ if( eError != vr::VRInitError_None ) \
+ return eError; \
+ }
+
+#define VR_CLEANUP_COMPOSITOR_DRIVER_CONTEXT() \
+ vr::CleanupDriverContext();
+
+
+#endif // OPENVR_INTERFACE_INTERNAL
+
}
// End
diff --git a/bin/osx64/OpenVR.framework/Versions/A/OpenVR b/bin/osx64/OpenVR.framework/Versions/A/OpenVR
index 3fb0184a..49aa6430 100755
Binary files a/bin/osx64/OpenVR.framework/Versions/A/OpenVR and b/bin/osx64/OpenVR.framework/Versions/A/OpenVR differ
diff --git a/bin/osx64/libopenvr_api.a b/bin/osx64/libopenvr_api.a
new file mode 100644
index 00000000..87f8fb18
Binary files /dev/null and b/bin/osx64/libopenvr_api.a differ
diff --git a/bin/osx64/libopenvr_api.dylib b/bin/osx64/libopenvr_api.dylib
new file mode 100755
index 00000000..23c4483b
Binary files /dev/null and b/bin/osx64/libopenvr_api.dylib differ
diff --git a/headers/openvr.h b/headers/openvr.h
index dd2addd2..93e71c5c 100644
--- a/headers/openvr.h
+++ b/headers/openvr.h
@@ -125,7 +125,7 @@ enum ETextureType
TextureType_DirectX = 0, // Handle is an ID3D11Texture
TextureType_OpenGL = 1, // Handle is an OpenGL texture name or an OpenGL render buffer name, depending on submit flags
TextureType_Vulkan = 2, // Handle is a pointer to a VRVulkanTextureData_t structure
- TextureType_IOSurface = 3, // Handle is a macOS cross-process-sharable IOSurfaceRef, deprecated in favor of TextureType_Metal on supported platforms
+ TextureType_IOSurface = 3, // Handle is a macOS cross-process-sharable IOSurfaceRef (kIOSurfaceIsGlobal must be set for SteamVR), deprecated in favor of TextureType_Metal on supported platforms
TextureType_DirectX12 = 4, // Handle is a pointer to a D3D12TextureData_t structure
TextureType_DXGISharedHandle = 5, // Handle is a HANDLE DXGI share handle, only supported for Overlay render targets.
// this texture is used directly by our renderer, so only perform atomic (copyresource or resolve) on it
diff --git a/src/README b/src/README
index 826c58da..a1123b5b 100644
--- a/src/README
+++ b/src/README
@@ -30,7 +30,7 @@ their application or redistribute the binary they build.
This is a cmake project, to build it use the version of cmake appropriate
for your platform. For example, to build on a POSIX system simply perform
- cd src; mkdir _build; cd _build; cmake ..; make
+ mkdir build; cd build; cmake ..; make
and you will end up with the static library /src/bin//libopenvr_api.a