diff --git a/build_scripts/qt/resources.pri b/build_scripts/qt/resources.pri index eef9506..8c3ec74 100644 --- a/build_scripts/qt/resources.pri +++ b/build_scripts/qt/resources.pri @@ -16,6 +16,8 @@ DISTFILES += \ src/res/qml/audio_page/* \ src/res/qml/ChaperonePage.qml \ src/res/qml/ChaperoneWarningsPage.qml \ + src/res/qml/chaperone_page/* \ + src/res/qml/chaperone_page/change_orientation/* \ src/res/qml/FixFloorPage.qml \ src/res/qml/PlayspacePage.qml \ src/res/qml/motion_page/* \ diff --git a/src/openvr/ivrinput.cpp b/src/openvr/ivrinput.cpp index 48a7d2c..9030dc4 100644 --- a/src/openvr/ivrinput.cpp +++ b/src/openvr/ivrinput.cpp @@ -302,7 +302,7 @@ bool SteamIVRInput::chaperoneToggle() bool SteamIVRInput::proxState() { - return isDigitalActionActivatedConstant( m_pushToTalk ); + return isDigitalActionActivatedConstant( m_proxSensor ); } bool SteamIVRInput::keyboardOne() diff --git a/src/openvr/ivrinput.h b/src/openvr/ivrinput.h index e640316..f0e6022 100644 --- a/src/openvr/ivrinput.h +++ b/src/openvr/ivrinput.h @@ -55,7 +55,7 @@ namespace action_keys constexpr auto hapticsLeft = "/actions/haptic/out/HapticsLeft"; constexpr auto hapticsRight = "/actions/haptic/out/HapticsRight"; - constexpr auto proxSensor = "/actions/misc/in/ProxSensor"; + constexpr auto proxSensor = "/actions/haptic/in/ProxSensor"; constexpr auto chaperoneToggle = "/actions/misc/in/ChaperoneToggle"; diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index ad816e9..c1baaa8 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -33,7 +33,25 @@ OverlayController::OverlayController( bool desktopMode, QQmlEngine& qmlEngine ) : QObject(), m_desktopMode( desktopMode ), m_noSound( noSound ), m_actions() { - m_runtimePathUrl = QUrl::fromLocalFile( vr::VR_RuntimePath() ); + // Arbitrarily chosen Max Length of Directory path, should be sufficient for + // Any set-up + const uint32_t maxLength = 16192; + uint32_t requiredLength; + + char tempRuntimePath[maxLength]; + bool pathIsGood + = vr::VR_GetRuntimePath( tempRuntimePath, maxLength, &requiredLength ); + + // Throw Error If over 16k characters in path string + if ( !pathIsGood ) + { + LOG( ERROR ) << "Error Finding VR Runtime Path, Attempting Recovery: "; + uint32_t maxLengthRe = requiredLength; + LOG( INFO ) << "Open VR reporting Required path length of: " + << maxLengthRe; + } + + m_runtimePathUrl = QUrl::fromLocalFile( tempRuntimePath ); LOG( INFO ) << "VR Runtime Path: " << m_runtimePathUrl.toLocalFile(); QString activationSoundFile = m_runtimePathUrl.toLocalFile().append( @@ -587,12 +605,32 @@ void OverlayController::processChaperoneBindings() m_chaperoneTabController.setDisableChaperone( !( m_chaperoneTabController.disableChaperone() ), true ); } + m_chaperoneTabController.setProxState( m_actions.proxState() ); } void OverlayController::processPushToTalkBindings() { const auto pushToTalkCannotChange = !m_audioTabController.pttChangeValid(); const auto pushToTalkEnabled = m_audioTabController.pttEnabled(); + + const auto proxSensorActivated = m_actions.proxState(); + const auto useProxSensor = m_audioTabController.micProximitySensorCanMute(); + + if ( useProxSensor ) + { + if ( !proxSensorActivated ) + { + m_audioTabController.setMicMuted( true ); + return; + } + // strictly speaking this is not the most elegant solution, but should + // work well enough. + else if ( !pushToTalkEnabled ) + { + m_audioTabController.setMicMuted( false ); + } + } + if ( pushToTalkCannotChange || !pushToTalkEnabled ) { return; @@ -600,6 +638,7 @@ void OverlayController::processPushToTalkBindings() const auto pushToTalkButtonActivated = m_actions.pushToTalk(); const auto pushToTalkCurrentlyActive = m_audioTabController.pttActive(); + if ( pushToTalkButtonActivated && !pushToTalkCurrentlyActive ) { m_audioTabController.startPtt(); diff --git a/src/package_files/action_manifest.json b/src/package_files/action_manifest.json index f464e36..25d7a68 100644 --- a/src/package_files/action_manifest.json +++ b/src/package_files/action_manifest.json @@ -157,7 +157,7 @@ "type": "boolean" }, { - "name": "/actions/misc/in/ProxSensor", + "name": "/actions/haptic/in/ProxSensor", "requirement": "optional", "type": "boolean" }, @@ -235,7 +235,7 @@ "/actions/misc/in/ZAxisLockToggle" : "Z-Axis Lock Toggle", "/actions/misc/in/PushToTalk" : "Push To Talk", "/actions/misc/in/ChaperoneToggle" : "Chaperone Toggle", - "/actions/misc/in/ProxSensor" : "Proximity Sensor", + "/actions/haptic/in/ProxSensor" : "Proximity Sensor", "/actions/misc/in/KeyboardOne" : "Keyboard Shortcut One", "/actions/misc/in/KeyboardTwo" : "Keyboard Shortcut Two", "/actions/misc/in/KeyboardThree" : "Keyboard Shortcut Three" diff --git a/src/package_files/default_action_manifests/ovras-team.advancedsettings_default_hmd.json b/src/package_files/default_action_manifests/ovras-team.advancedsettings_default_hmd.json index d615f09..8277d8f 100644 --- a/src/package_files/default_action_manifests/ovras-team.advancedsettings_default_hmd.json +++ b/src/package_files/default_action_manifests/ovras-team.advancedsettings_default_hmd.json @@ -5,12 +5,12 @@ "app_key" : "ovras-team.advancedsettings", "bindings": { - "/actions/misc" : { + "/actions/haptic" : { "sources" : [ { "inputs" : { "click" : { - "output" : "/actions/misc/in/ProxSensor" + "output" : "/actions/haptic/in/ProxSensor" } }, "mode" : "button", diff --git a/src/res/qml/ChaperonePage.qml b/src/res/qml/chaperone_page/ChaperonePage.qml similarity index 98% rename from src/res/qml/ChaperonePage.qml rename to src/res/qml/chaperone_page/ChaperonePage.qml index fc9a656..c3e371c 100644 --- a/src/res/qml/ChaperonePage.qml +++ b/src/res/qml/chaperone_page/ChaperonePage.qml @@ -4,7 +4,8 @@ import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import ovras.advsettings 1.0 import "." // QTBUG-34418, singletons require explicit import to load qmldir file -import "common" +import "../common" +import "change_orientation" MyStackViewPage { headerText: "Chaperone Settings" @@ -489,15 +490,8 @@ MyStackViewPage { mainView.push(chaperoneWarningsPage) } } + ChangeOrientationGroupBox { } - MyPushButton { - id: chaperoneFlipOrientationButton - text: "Flip Orientation" - Layout.preferredWidth: 250 - onClicked: { - ChaperoneTabController.flipOrientation() - } - } Item { Layout.fillHeight: true; Layout.fillWidth: true} diff --git a/src/res/qml/chaperone_page/change_orientation/ChangeOrientationGroupBox.qml b/src/res/qml/chaperone_page/change_orientation/ChangeOrientationGroupBox.qml new file mode 100644 index 0000000..07622de --- /dev/null +++ b/src/res/qml/chaperone_page/change_orientation/ChangeOrientationGroupBox.qml @@ -0,0 +1,104 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.0 +import QtQuick.Layouts 1.3 +import ovras.advsettings 1.0 +import "../../common" +import "." // QTBUG-34418, singletons require explicit import to load qmldir file + +GroupBox { + id: changeOrientationGroupBox + Layout.fillWidth: true + + label: MyText { + leftPadding: 10 + text: "Rotate Orientation (permanent)" + bottomPadding: -10 + } + background: Rectangle { + color: "transparent" + border.color: "#ffffff" + radius: 8 + } + + ColumnLayout { + anchors.fill: parent + + Rectangle { + color: "#ffffff" + height: 1 + Layout.fillWidth: true + Layout.bottomMargin: 5 + } + + ColumnLayout { + RowLayout { + MyPushButton2 { + id: spaceRotationMinusButton + Layout.preferredWidth: 40 + text: "-" + onClicked: { + var val = spaceRotationSlider.value - 45 + if (val <= -180){ + val = -180; + } + spaceRotationSlider.value = val + spaceRotationText.text = val + } + } + + MySlider { + id: spaceRotationSlider + from: -180 + to: 180 + stepSize: 1 + value: 0 + Layout.fillWidth: true + onValueChanged: { + var val = this.value + spaceRotationText.text = val + } + } + + MyPushButton2 { + id: spaceRotationPlusButton + Layout.preferredWidth: 40 + text: "+" + onClicked: { + var val = spaceRotationSlider.value + 45 + if (val >= 180){ + val = 180; + } + spaceRotationSlider.value = val + spaceRotationText.text = val + } + } + + MyTextField { + id: spaceRotationText + text: "0°" + keyBoardUID: 311 + Layout.preferredWidth: 150 + Layout.leftMargin: 10 + horizontalAlignment: Text.AlignHCenter + function onInputEvent(input) { + var val = parseFloat(input) + if (!isNaN(val)) { + spaceRotationText.text = val + "°" + spaceRotationSlider.value = val + } + } + } + MyPushButton { + id: spaceRotationApplyButton + Layout.preferredWidth: 145 + text:"Apply" + onClicked: { + ChaperoneTabController.flipOrientation(spaceRotationSlider.value) + spaceRotationSlider.value = 0 + spaceRotationText.text = "0°" + } + } + } + } + } +} diff --git a/src/res/qml/common/mainwidget.qml b/src/res/qml/common/mainwidget.qml index 3d993ec..2e65164 100644 --- a/src/res/qml/common/mainwidget.qml +++ b/src/res/qml/common/mainwidget.qml @@ -7,6 +7,7 @@ import "../audio_page" import "../motion_page" import "../video_page" import "../desktop_overlay_page" +import "../chaperone_page" Rectangle { id: root diff --git a/src/tabcontrollers/AudioTabController.cpp b/src/tabcontrollers/AudioTabController.cpp index f01f238..74d3706 100644 --- a/src/tabcontrollers/AudioTabController.cpp +++ b/src/tabcontrollers/AudioTabController.cpp @@ -172,43 +172,6 @@ void AudioTabController::eventLoopTick() if ( settingsUpdateCounter >= k_audioSettingsUpdateCounter ) { - // Not usable until OpenVR 1.4.x? - // Will require updates to action based system - /* - if ( m_micProximitySensorCanMute ) - { - vr::VRControllerState_t controllerState; - if ( vr::VRSystem()->GetControllerState( - vr::k_unTrackedDeviceIndex_Hmd, - &controllerState, - sizeof( vr::VRControllerState_t ) ) ) - { - if ( ( controllerState.ulButtonPressed - & vr::ButtonMaskFromId( vr::k_EButton_ProximitySensor ) ) - == 0 ) - { - if ( !m_micMuted ) - { - setMicMuted( true ); - } - } - else - { - if ( m_micMuted ) - { - setMicMuted( false ); - } - } - } - else - { - if ( !parent->isDashboardVisible() ) - { - LOG( ERROR ) << "Could not read proximity sensor!"; - } - } - } - */ vr::EVRSettingsError vrSettingsError; char mirrorDeviceId[1024]; vr::VRSettings()->GetString( diff --git a/src/tabcontrollers/ChaperoneTabController.cpp b/src/tabcontrollers/ChaperoneTabController.cpp index 22532a2..575873c 100644 --- a/src/tabcontrollers/ChaperoneTabController.cpp +++ b/src/tabcontrollers/ChaperoneTabController.cpp @@ -42,8 +42,8 @@ void ChaperoneTabController::initStage1() m_fadeDistanceRemembered = settings->value( "fadeDistanceRemembered", 0.5f ).toFloat(); settings->endGroup(); - // initHaptics(); reloadChaperoneProfiles(); + eventLoopTick( nullptr, 0.0f, 0.0f, 0.0f ); } @@ -362,6 +362,15 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) vr::VRSystem()->GetControllerState( vr::k_unTrackedDeviceIndex_Hmd, &hmdState, sizeof( vr::VRControllerState_t ) ); + // If proximity Sensor is True (only can be true if exists) + // Then use prox sensor else use hmd activity level. + // Needed as detection since the "has prox sensor" property is unreliable. + // Note m_isProxActive should only ever be set to true if there is a prox + // sensor AND its currently on. + + bool proxSensorOverrideState = false; + m_HMDHasProx ? ( proxSensorOverrideState = m_isProxActive ) + : ( proxSensorOverrideState = m_isHMDActive ); // Switch to Beginner Mode if ( m_enableChaperoneSwitchToBeginner ) @@ -439,7 +448,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) float activationDistance = m_chaperoneHapticFeedbackDistance * m_chaperoneVelocityModifierCurrent; - if ( distance <= activationDistance && m_isHMDActive ) + if ( distance <= activationDistance && proxSensorOverrideState ) { if ( !m_chaperoneHapticFeedbackActive ) { @@ -493,7 +502,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) this ); } } - else if ( ( distance > activationDistance || !m_isHMDActive ) + else if ( ( distance > activationDistance || !proxSensorOverrideState ) && m_chaperoneHapticFeedbackActive ) { m_chaperoneHapticFeedbackActive = false; @@ -507,7 +516,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) float activationDistance = m_chaperoneAlarmSoundDistance * m_chaperoneVelocityModifierCurrent; - if ( distance <= activationDistance && m_isHMDActive ) + if ( distance <= activationDistance && proxSensorOverrideState ) { if ( !m_chaperoneAlarmSoundActive ) { @@ -529,7 +538,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) parent->setAlarm01SoundVolume( 1.0f ); } } - else if ( ( distance > activationDistance || !m_isHMDActive ) + else if ( ( distance > activationDistance || !proxSensorOverrideState ) && m_chaperoneAlarmSoundActive ) { parent->cancelAlarm01Sound(); @@ -1311,11 +1320,14 @@ void ChaperoneTabController::setDisableChaperone( bool value, bool notify ) } } -void ChaperoneTabController::flipOrientation() +void ChaperoneTabController::flipOrientation( double degrees ) { parent->m_moveCenterTabController.reset(); + double rad = 0; + rad = degrees * ( M_PI / 180.0 ); + parent->RotateUniverseCenter( vr::TrackingUniverseStanding, - static_cast( M_PI ) ); + static_cast( rad ) ); parent->m_moveCenterTabController.zeroOffsets(); } @@ -1728,6 +1740,16 @@ void ChaperoneTabController::setLeftInputHandle( m_leftInputHandle = handle; } +void ChaperoneTabController::setProxState( bool value ) +{ + if ( value ) + { + m_HMDHasProx = true; + } + + m_isProxActive = value; +} + void ChaperoneTabController::shutdown() { if ( m_enableChaperoneSwitchToBeginner diff --git a/src/tabcontrollers/ChaperoneTabController.h b/src/tabcontrollers/ChaperoneTabController.h index 2a0551d..167d4e6 100644 --- a/src/tabcontrollers/ChaperoneTabController.h +++ b/src/tabcontrollers/ChaperoneTabController.h @@ -175,6 +175,8 @@ private: bool m_isHapticGood = true; bool m_isHMDActive = false; + bool m_isProxActive = false; + bool m_HMDHasProx = false; int m_updateTicksChaperoneReload = 0; @@ -210,6 +212,8 @@ public: void setRightInputHandle( vr::VRInputValueHandle_t handle ); void setLeftInputHandle( vr::VRInputValueHandle_t handle ); + void setProxState( bool value ); + bool isChaperoneSwitchToBeginnerEnabled() const; float chaperoneSwitchToBeginnerDistance() const; @@ -263,7 +267,7 @@ public slots: void setChaperoneVelocityModifierEnabled( bool value, bool notify = true ); void setChaperoneVelocityModifier( float value, bool notify = true ); - void flipOrientation(); + void flipOrientation( double degrees = 180 ); void reloadFromDisk(); void addChaperoneProfile( QString name, diff --git a/src/tabcontrollers/FixFloorTabController.cpp b/src/tabcontrollers/FixFloorTabController.cpp index 22f7e19..3cea34c 100644 --- a/src/tabcontrollers/FixFloorTabController.cpp +++ b/src/tabcontrollers/FixFloorTabController.cpp @@ -229,14 +229,14 @@ void FixFloorTabController::eventLoopTick( int FixFloorTabController::getControllerType( vr::TrackedDeviceIndex_t controllerRole ) { - int maxLength = 64; + const uint32_t maxLength = 64; /* vr::k_unMaxPropertyStringSize is Theoretical Max Size, however it is 1024*32, and its pretty unrealistic to expect a controller name to be that big. We are just going to set 64 as an arbitrary size, and print error to log if too small */ - char* controllerTypeString = new char[maxLength]; + char controllerTypeString[maxLength]; vr::ETrackedPropertyError error; auto stringLength = vr::VRSystem()->GetStringTrackedDeviceProperty( controllerRole, @@ -255,15 +255,12 @@ int FixFloorTabController::getControllerType( } else if ( strcmp( controllerTypeString, "knuckles" ) == 0 ) { - delete[] controllerTypeString; return Controller_Knuckles; } else if ( strcmp( controllerTypeString, "vive_controller" ) == 0 ) { - delete[] controllerTypeString; return Controller_Wand; } - delete[] controllerTypeString; return Controller_Unknown; } diff --git a/third-party/openvr/bin/linux32/libopenvr_api.so b/third-party/openvr/bin/linux32/libopenvr_api.so index 7c3940b..f0c2bef 100644 Binary files a/third-party/openvr/bin/linux32/libopenvr_api.so and b/third-party/openvr/bin/linux32/libopenvr_api.so differ diff --git a/third-party/openvr/bin/linux32/libopenvr_api.so.dbg b/third-party/openvr/bin/linux32/libopenvr_api.so.dbg index 9520d4c..dc673e5 100644 Binary files a/third-party/openvr/bin/linux32/libopenvr_api.so.dbg and b/third-party/openvr/bin/linux32/libopenvr_api.so.dbg differ diff --git a/third-party/openvr/bin/linux64/libopenvr_api.so b/third-party/openvr/bin/linux64/libopenvr_api.so index 7ee96ea..b5db2f0 100644 Binary files a/third-party/openvr/bin/linux64/libopenvr_api.so and b/third-party/openvr/bin/linux64/libopenvr_api.so differ diff --git a/third-party/openvr/bin/linux64/libopenvr_api.so.dbg b/third-party/openvr/bin/linux64/libopenvr_api.so.dbg index 240ea67..e906635 100644 Binary files a/third-party/openvr/bin/linux64/libopenvr_api.so.dbg and b/third-party/openvr/bin/linux64/libopenvr_api.so.dbg differ diff --git a/third-party/openvr/bin/osx32/libopenvr_api.dylib b/third-party/openvr/bin/osx32/libopenvr_api.dylib index b3c2569..8a2df47 100644 Binary files a/third-party/openvr/bin/osx32/libopenvr_api.dylib and b/third-party/openvr/bin/osx32/libopenvr_api.dylib differ diff --git a/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib b/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib index 095ca48..2351ff4 100644 Binary files a/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib and b/third-party/openvr/bin/osx32/libopenvr_api.dylib.dSYM/Contents/Resources/DWARF/libopenvr_api.dylib differ diff --git a/third-party/openvr/bin/win32/openvr_api.dll b/third-party/openvr/bin/win32/openvr_api.dll index 66d492b..4f5bdf1 100644 Binary files a/third-party/openvr/bin/win32/openvr_api.dll and b/third-party/openvr/bin/win32/openvr_api.dll differ diff --git a/third-party/openvr/bin/win32/openvr_api.pdb b/third-party/openvr/bin/win32/openvr_api.pdb index 0614e8f..f3429e0 100644 Binary files a/third-party/openvr/bin/win32/openvr_api.pdb and b/third-party/openvr/bin/win32/openvr_api.pdb differ diff --git a/third-party/openvr/bin/win64/openvr_api.dll b/third-party/openvr/bin/win64/openvr_api.dll index 7c9a0b1..3b05986 100644 Binary files a/third-party/openvr/bin/win64/openvr_api.dll and b/third-party/openvr/bin/win64/openvr_api.dll differ diff --git a/third-party/openvr/bin/win64/openvr_api.pdb b/third-party/openvr/bin/win64/openvr_api.pdb index 6b11a0a..3c53691 100644 Binary files a/third-party/openvr/bin/win64/openvr_api.pdb and b/third-party/openvr/bin/win64/openvr_api.pdb differ diff --git a/third-party/openvr/headers/openvr.h b/third-party/openvr/headers/openvr.h index 59d97a1..3585e25 100644 --- a/third-party/openvr/headers/openvr.h +++ b/third-party/openvr/headers/openvr.h @@ -15,8 +15,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 3; - static const uint32_t k_nSteamVRVersionBuild = 20; + static const uint32_t k_nSteamVRVersionMinor = 4; + static const uint32_t k_nSteamVRVersionBuild = 18; } // namespace vr // vrtypes.h @@ -207,7 +207,7 @@ enum ETrackedControllerRole TrackedControllerRole_RightHand = 2, // Tracked device associated with the right hand TrackedControllerRole_OptOut = 3, // Tracked device is opting out of left/right hand selection TrackedControllerRole_Treadmill = 4, // Tracked device is a treadmill - TrackedControllerRole_Max = 4 + TrackedControllerRole_Max = 5 }; @@ -430,6 +430,11 @@ enum ETrackedDeviceProperty Prop_CameraDistortionCoefficients_Float_Array = 2073, // Prop_NumCameras_Int32-sized array of double[vr::k_unMaxDistortionFunctionParameters] (max size is vr::k_unMaxCameras) Prop_ExpectedControllerType_String = 2074, + Prop_DisplayAvailableFrameRates_Float_Array = 2080, // populated by compositor from actual EDID list when available from GPU driver + Prop_DisplaySupportsMultipleFramerates_Bool = 2081, // if this is true but Prop_DisplayAvailableFrameRates_Float_Array is empty, explain to user + + Prop_DashboardLayoutPathName_String = 2090, + // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, @@ -490,7 +495,7 @@ enum ETrackedDeviceProperty // Properties that are set internally based on other information provided by drivers Prop_ControllerType_String = 7000, - Prop_LegacyInputProfile_String = 7001, + //Prop_LegacyInputProfile_String = 7001, // This is no longer used. See "legacy_binding" in the input profile instead. Prop_ControllerHandSelectionPriority_Int32 = 7002, // Allows hand assignments to prefer some controllers over others. High numbers are selected over low numbers // Vendors are free to expose private debug data in this reserved region @@ -734,12 +739,14 @@ enum EVREventType VREvent_DriverRequestedQuit = 704, // The driver has requested that SteamVR shut down VREvent_RestartRequested = 705, // A driver or other component wants the user to restart SteamVR - VREvent_ChaperoneDataHasChanged = 800, // Sent when the process needs to call VRChaperone()->ReloadInfo() + VREvent_ChaperoneDataHasChanged = 800, // this will never happen with the new chaperone system VREvent_ChaperoneUniverseHasChanged = 801, - VREvent_ChaperoneTempDataHasChanged = 802, + VREvent_ChaperoneTempDataHasChanged = 802, // this will never happen with the new chaperone system VREvent_ChaperoneSettingsHaveChanged = 803, VREvent_SeatedZeroPoseReset = 804, VREvent_ChaperoneFlushCache = 805, // Sent when the process needs to reload any cached data it retrieved from VRChaperone() + VREvent_ChaperoneRoomSetupStarting = 806, // Triggered by CVRChaperoneClient::RoomSetupStarting + VREvent_ChaperoneRoomSetupFinished = 807, // Triggered by CVRChaperoneClient::CommitWorkingCopy VREvent_AudioSettingsHaveChanged = 820, @@ -794,6 +801,7 @@ enum EVREventType VREvent_Compositor_HDCPError = 1414, // data is hdcpError VREvent_Compositor_ApplicationNotResponding = 1415, VREvent_Compositor_ApplicationResumed = 1416, + VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, @@ -871,9 +879,9 @@ 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_IndexController_A = k_EButton_Grip, + k_EButton_IndexController_B = k_EButton_ApplicationMenu, + k_EButton_IndexController_JoyStick = k_EButton_Axis3, k_EButton_Max = 64 }; @@ -1099,7 +1107,7 @@ enum EShowUIType { ShowUI_ControllerBinding = 0, ShowUI_ManageTrackers = 1, - ShowUI_QuickStart = 2, + // ShowUI_QuickStart = 2, // Deprecated ShowUI_Pairing = 3, ShowUI_Settings = 4, }; @@ -1428,7 +1436,7 @@ enum EVRSkeletalTrackingLevel // body part location can be measured directly but with fewer degrees of freedom than the actual body // part. Certain body part positions may be unmeasured by the device and estimated from other input data. - // E.g. Knuckles, gloves that only measure finger curl + // E.g. Index Controllers, gloves that only measure finger curl VRSkeletalTracking_Partial, // Body part location can be measured directly throughout the entire range of motion of the body part. @@ -1505,6 +1513,7 @@ enum EVRInitError VRInitError_Init_VRWebHelperStartupFailed = 141, VRInitError_Init_TrackerManagerInitFailed = 142, VRInitError_Init_AlreadyRunning = 143, + VRInitError_Init_FailedForVrMonitor = 144, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1519,6 +1528,7 @@ enum EVRInitError // VRInitError_Driver_HmdDisplayNotFoundAfterFix = 210, // not needed: here for historic reasons VRInitError_Driver_HmdDriverIdOutOfBounds = 211, VRInitError_Driver_HmdDisplayMirrored = 212, + VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, VRInitError_IPC_ServerInitFailed = 300, VRInitError_IPC_ConnectFailed = 301, @@ -2523,6 +2533,7 @@ namespace vr 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_DebugInputBinding = "debugInputBinding"; + static const char * const k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; static const char * const k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * const k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -2551,6 +2562,7 @@ namespace vr static const char * const k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; + static const char * const k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; static const char * const k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; static const char * const k_pch_Lighthouse_NewPairing_Bool = "newPairing"; @@ -2600,7 +2612,7 @@ namespace vr static const char * const k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * const k_pch_Perf_TestData_Float = "perfTestData"; - static const char * const k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; + static const char * const k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; //----------------------------------------------------------------------------- // collision bounds keys @@ -2867,6 +2879,11 @@ public: /** Hides the chaperone data in the working set to preview in the compositor (if it was visible).*/ virtual void HideWorkingSetPreview() = 0; + + /** Fire an event that the tracking system can use to know room setup is about to begin. This lets the tracking + * system make any last minute adjustments that should be incorporated into the new setup. If the user is adjusting + * live in HMD using a tweak tool, keep in mind that calling this might cause the user to see the room jump. */ + virtual void RoomSetupStarting() = 0; }; static const char * const IVRChaperoneSetup_Version = "IVRChaperoneSetup_006"; @@ -3201,6 +3218,13 @@ public: * If you want to know if motion smoothing actually triggered due to a late frame, check Compositor_FrameTiming * m_nReprojectionFlags & VRCompositor_ReprojectionMotion instead. */ virtual bool IsMotionSmoothingEnabled() = 0; + + /** Indicates whether or not motion smoothing is supported by the current hardware. */ + virtual bool IsMotionSmoothingSupported() = 0; + + /** Indicates whether or not the current scene focus app is currently loading. This is inferred from its use of FadeGrid to + * explicitly fade to the compositor to cover up the fact that it cannot render at a sustained full framerate during this time. */ + virtual bool IsCurrentSceneFocusAppLoading() = 0; }; static const char * const IVRCompositor_Version = "IVRCompositor_022"; @@ -4296,6 +4320,16 @@ namespace vr VRFingerSplay_Count }; + enum EVRSummaryType + { + // The skeletal summary data will match the animated bone transforms for the action. + VRSummaryType_FromAnimation = 0, + + // The skeletal summary data will include unprocessed data directly from the device when available. + // This data is generally less latent than the data that is computed from the animations. + VRSummaryType_FromDevice = 1, + }; + enum EVRInputFilterCancelType { VRInputFilterCancel_Timers = 0, @@ -4448,8 +4482,13 @@ namespace vr * 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 pose action given its handle for the number of seconds relative to now. This + * will generally be called with negative times from the fUpdateTime fields in other actions. */ + virtual EVRInputError GetPoseActionDataRelativeToNow( VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, InputPoseActionData_t *pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice ) = 0; + + /** Reads the state of a pose action given its handle. The returned values will match the values returned + * by the last call to IVRCompositor::WaitGetPoses(). */ + virtual EVRInputError GetPoseActionDataForNextFrame( VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, 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 ) = 0; @@ -4477,7 +4516,7 @@ namespace vr virtual EVRInputError GetSkeletalBoneData( VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, VR_ARRAY_COUNT( unTransformArrayCount ) VRBoneTransform_t *pTransformArray, uint32_t unTransformArrayCount ) = 0; /** Reads summary information about the current pose of the skeleton associated with the given action. */ - virtual EVRInputError GetSkeletalSummaryData( VRActionHandle_t action, VRSkeletalSummaryData_t * pSkeletalSummaryData ) = 0; + virtual EVRInputError GetSkeletalSummaryData( VRActionHandle_t action, EVRSummaryType eSummaryType, VRSkeletalSummaryData_t * pSkeletalSummaryData ) = 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). @@ -4514,7 +4553,7 @@ namespace vr virtual bool IsUsingLegacyInput() = 0; }; - static const char * const IVRInput_Version = "IVRInput_005"; + static const char * const IVRInput_Version = "IVRInput_006"; } // namespace vr @@ -4656,8 +4695,8 @@ namespace vr VR_INTERFACE bool VR_CALLTYPE VR_IsRuntimeInstalled(); /** Returns where the OpenVR runtime is installed. */ - VR_INTERFACE const char *VR_CALLTYPE VR_RuntimePath(); - + VR_INTERFACE bool VR_GetRuntimePath( VR_OUT_STRING() char *pchPathBuffer, uint32_t unBufferSize, uint32_t *punRequiredBufferSize ); + /** Returns the name of the enum value for an EVRInitError. This function may be called outside of VR_Init()/VR_Shutdown(). */ VR_INTERFACE const char *VR_CALLTYPE VR_GetVRInitErrorAsSymbol( EVRInitError error ); diff --git a/third-party/openvr/headers/openvr_api.cs b/third-party/openvr/headers/openvr_api.cs index 3f8267b..d593777 100644 --- a/third-party/openvr/headers/openvr_api.cs +++ b/third-party/openvr/headers/openvr_api.cs @@ -640,6 +640,11 @@ public struct IVRChaperoneSetup [MarshalAs(UnmanagedType.FunctionPtr)] internal _HideWorkingSetPreview HideWorkingSetPreview; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate void _RoomSetupStarting(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _RoomSetupStarting RoomSetupStarting; + } [StructLayout(LayoutKind.Sequential)] @@ -865,6 +870,16 @@ public struct IVRCompositor [MarshalAs(UnmanagedType.FunctionPtr)] internal _IsMotionSmoothingEnabled IsMotionSmoothingEnabled; + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsMotionSmoothingSupported(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsMotionSmoothingSupported IsMotionSmoothingSupported; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate bool _IsCurrentSceneFocusAppLoading(); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _IsCurrentSceneFocusAppLoading IsCurrentSceneFocusAppLoading; + } [StructLayout(LayoutKind.Sequential)] @@ -1576,9 +1591,14 @@ public struct IVRInput internal _GetAnalogActionData GetAnalogActionData; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetPoseActionData(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + internal delegate EVRInputError _GetPoseActionDataRelativeToNow(ulong action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); [MarshalAs(UnmanagedType.FunctionPtr)] - internal _GetPoseActionData GetPoseActionData; + internal _GetPoseActionDataRelativeToNow GetPoseActionDataRelativeToNow; + + [UnmanagedFunctionPointer(CallingConvention.StdCall)] + internal delegate EVRInputError _GetPoseActionDataForNextFrame(ulong action, ETrackingUniverseOrigin eOrigin, ref InputPoseActionData_t pActionData, uint unActionDataSize, ulong ulRestrictToDevice); + [MarshalAs(UnmanagedType.FunctionPtr)] + internal _GetPoseActionDataForNextFrame GetPoseActionDataForNextFrame; [UnmanagedFunctionPointer(CallingConvention.StdCall)] internal delegate EVRInputError _GetSkeletalActionData(ulong action, ref InputSkeletalActionData_t pActionData, uint unActionDataSize); @@ -1616,7 +1636,7 @@ public struct IVRInput internal _GetSkeletalBoneData GetSkeletalBoneData; [UnmanagedFunctionPointer(CallingConvention.StdCall)] - internal delegate EVRInputError _GetSkeletalSummaryData(ulong action, ref VRSkeletalSummaryData_t pSkeletalSummaryData); + internal delegate EVRInputError _GetSkeletalSummaryData(ulong action, EVRSummaryType eSummaryType, ref VRSkeletalSummaryData_t pSkeletalSummaryData); [MarshalAs(UnmanagedType.FunctionPtr)] internal _GetSkeletalSummaryData GetSkeletalSummaryData; @@ -2476,6 +2496,10 @@ public class CVRChaperoneSetup { FnTable.HideWorkingSetPreview(); } + public void RoomSetupStarting() + { + FnTable.RoomSetupStarting(); + } } @@ -2687,6 +2711,16 @@ public class CVRCompositor bool result = FnTable.IsMotionSmoothingEnabled(); return result; } + public bool IsMotionSmoothingSupported() + { + bool result = FnTable.IsMotionSmoothingSupported(); + return result; + } + public bool IsCurrentSceneFocusAppLoading() + { + bool result = FnTable.IsCurrentSceneFocusAppLoading(); + return result; + } } @@ -3507,9 +3541,14 @@ public class CVRInput 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) + public EVRInputError GetPoseActionDataRelativeToNow(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); + EVRInputError result = FnTable.GetPoseActionDataRelativeToNow(action,eOrigin,fPredictedSecondsFromNow,ref pActionData,unActionDataSize,ulRestrictToDevice); + return result; + } + public EVRInputError GetPoseActionDataForNextFrame(ulong action,ETrackingUniverseOrigin eOrigin,ref InputPoseActionData_t pActionData,uint unActionDataSize,ulong ulRestrictToDevice) + { + EVRInputError result = FnTable.GetPoseActionDataForNextFrame(action,eOrigin,ref pActionData,unActionDataSize,ulRestrictToDevice); return result; } public EVRInputError GetSkeletalActionData(ulong action,ref InputSkeletalActionData_t pActionData,uint unActionDataSize) @@ -3548,9 +3587,9 @@ public class CVRInput EVRInputError result = FnTable.GetSkeletalBoneData(action,eTransformSpace,eMotionRange,pTransformArray,(uint) pTransformArray.Length); return result; } - public EVRInputError GetSkeletalSummaryData(ulong action,ref VRSkeletalSummaryData_t pSkeletalSummaryData) + public EVRInputError GetSkeletalSummaryData(ulong action,EVRSummaryType eSummaryType,ref VRSkeletalSummaryData_t pSkeletalSummaryData) { - EVRInputError result = FnTable.GetSkeletalSummaryData(action,ref pSkeletalSummaryData); + EVRInputError result = FnTable.GetSkeletalSummaryData(action,eSummaryType,ref pSkeletalSummaryData); return result; } public EVRInputError GetSkeletalBoneDataCompressed(ulong action,EVRSkeletalMotionRange eMotionRange,IntPtr pvCompressedData,uint unCompressedSize,ref uint punRequiredCompressedSize) @@ -3750,7 +3789,7 @@ public enum ETrackedControllerRole RightHand = 2, OptOut = 3, Treadmill = 4, - Max = 4, + Max = 5, } public enum ETrackingUniverseOrigin { @@ -3887,6 +3926,9 @@ public enum ETrackedDeviceProperty Prop_CameraDistortionFunction_Int32_Array = 2072, Prop_CameraDistortionCoefficients_Float_Array = 2073, Prop_ExpectedControllerType_String = 2074, + Prop_DisplayAvailableFrameRates_Float_Array = 2080, + Prop_DisplaySupportsMultipleFramerates_Bool = 2081, + Prop_DashboardLayoutPathName_String = 2090, Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, @@ -3934,7 +3976,6 @@ public enum ETrackedDeviceProperty Prop_HasVirtualDisplayComponent_Bool = 6006, Prop_HasSpatialAnchorsSupport_Bool = 6007, Prop_ControllerType_String = 7000, - Prop_LegacyInputProfile_String = 7001, Prop_ControllerHandSelectionPriority_Int32 = 7002, Prop_VendorSpecific_Reserved_Start = 10000, Prop_VendorSpecific_Reserved_End = 10999, @@ -4074,6 +4115,8 @@ public enum EVREventType VREvent_ChaperoneSettingsHaveChanged = 803, VREvent_SeatedZeroPoseReset = 804, VREvent_ChaperoneFlushCache = 805, + VREvent_ChaperoneRoomSetupStarting = 806, + VREvent_ChaperoneRoomSetupFinished = 807, VREvent_AudioSettingsHaveChanged = 820, VREvent_BackgroundSettingHasChanged = 850, VREvent_CameraSettingsHaveChanged = 851, @@ -4119,6 +4162,7 @@ public enum EVREventType VREvent_Compositor_HDCPError = 1414, VREvent_Compositor_ApplicationNotResponding = 1415, VREvent_Compositor_ApplicationResumed = 1416, + VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, VREvent_TrackedCamera_PauseVideoStream = 1502, @@ -4172,9 +4216,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_IndexController_A = 2, + k_EButton_IndexController_B = 1, + k_EButton_IndexController_JoyStick = 35, k_EButton_Max = 64, } public enum EVRMouseButton @@ -4192,7 +4236,6 @@ public enum EShowUIType { ShowUI_ControllerBinding = 0, ShowUI_ManageTrackers = 1, - ShowUI_QuickStart = 2, ShowUI_Pairing = 3, ShowUI_Settings = 4, } @@ -4385,6 +4428,7 @@ public enum EVRInitError Init_VRWebHelperStartupFailed = 141, Init_TrackerManagerInitFailed = 142, Init_AlreadyRunning = 143, + Init_FailedForVrMonitor = 144, Driver_Failed = 200, Driver_Unknown = 201, Driver_HmdUnknown = 202, @@ -4397,6 +4441,7 @@ public enum EVRInitError Driver_TrackedDeviceInterfaceUnknown = 209, Driver_HmdDriverIdOutOfBounds = 211, Driver_HmdDisplayMirrored = 212, + Driver_HmdDisplayNotFoundLaptop = 213, IPC_ServerInitFailed = 300, IPC_ConnectFailed = 301, IPC_SharedStateInitFailed = 302, @@ -4831,6 +4876,11 @@ public enum EVRFingerSplay Ring_Pinky = 3, Count = 4, } +public enum EVRSummaryType +{ + FromAnimation = 0, + FromDevice = 1, +} public enum EVRInputFilterCancelType { VRInputFilterCancel_Timers = 0, @@ -5952,6 +6002,7 @@ public class OpenVR public const string k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; public const string k_pch_SteamVR_DebugInput = "debugInput"; public const string k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; + public const string k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; public const string k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; public const string k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; public const string k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -5974,6 +6025,7 @@ public class OpenVR public const string k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; public const string k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; public const string k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; + public const string k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; public const string k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; public const string k_pch_Lighthouse_NewPairing_Bool = "newPairing"; public const string k_pch_Null_Section = "driver_null"; @@ -6008,7 +6060,7 @@ public class OpenVR public const string k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; public const string k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; public const string k_pch_Perf_TestData_Float = "perfTestData"; - public const string k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; + public const string k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; public const string k_pch_CollisionBounds_Section = "collisionBounds"; public const string k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; public const string k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; @@ -6076,7 +6128,7 @@ public class OpenVR public const uint k_unMaxActionSetNameLength = 64; public const uint k_unMaxActionOriginCount = 16; public const uint k_unMaxBoneNameLength = 32; - public const string IVRInput_Version = "IVRInput_005"; + public const string IVRInput_Version = "IVRInput_006"; public const ulong k_ulInvalidIOBufferHandle = 0; public const string IVRIOBuffer_Version = "IVRIOBuffer_002"; public const uint k_ulInvalidSpatialAnchorHandle = 0; diff --git a/third-party/openvr/headers/openvr_api.json b/third-party/openvr/headers/openvr_api.json index 508e434..6dc415f 100644 --- a/third-party/openvr/headers/openvr_api.json +++ b/third-party/openvr/headers/openvr_api.json @@ -82,7 +82,7 @@ ,{"name": "TrackedControllerRole_RightHand","value": "2"} ,{"name": "TrackedControllerRole_OptOut","value": "3"} ,{"name": "TrackedControllerRole_Treadmill","value": "4"} - ,{"name": "TrackedControllerRole_Max","value": "4"} + ,{"name": "TrackedControllerRole_Max","value": "5"} ]} , {"enumname": "vr::ETrackingUniverseOrigin","values": [ {"name": "TrackingUniverseSeated","value": "0"} @@ -216,6 +216,9 @@ ,{"name": "Prop_CameraDistortionFunction_Int32_Array","value": "2072"} ,{"name": "Prop_CameraDistortionCoefficients_Float_Array","value": "2073"} ,{"name": "Prop_ExpectedControllerType_String","value": "2074"} + ,{"name": "Prop_DisplayAvailableFrameRates_Float_Array","value": "2080"} + ,{"name": "Prop_DisplaySupportsMultipleFramerates_Bool","value": "2081"} + ,{"name": "Prop_DashboardLayoutPathName_String","value": "2090"} ,{"name": "Prop_DriverRequestedMuraCorrectionMode_Int32","value": "2200"} ,{"name": "Prop_DriverRequestedMuraFeather_InnerLeft_Int32","value": "2201"} ,{"name": "Prop_DriverRequestedMuraFeather_InnerRight_Int32","value": "2202"} @@ -263,7 +266,6 @@ ,{"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_ControllerHandSelectionPriority_Int32","value": "7002"} ,{"name": "Prop_VendorSpecific_Reserved_Start","value": "10000"} ,{"name": "Prop_VendorSpecific_Reserved_End","value": "10999"} @@ -399,6 +401,8 @@ ,{"name": "VREvent_ChaperoneSettingsHaveChanged","value": "803"} ,{"name": "VREvent_SeatedZeroPoseReset","value": "804"} ,{"name": "VREvent_ChaperoneFlushCache","value": "805"} + ,{"name": "VREvent_ChaperoneRoomSetupStarting","value": "806"} + ,{"name": "VREvent_ChaperoneRoomSetupFinished","value": "807"} ,{"name": "VREvent_AudioSettingsHaveChanged","value": "820"} ,{"name": "VREvent_BackgroundSettingHasChanged","value": "850"} ,{"name": "VREvent_CameraSettingsHaveChanged","value": "851"} @@ -444,6 +448,7 @@ ,{"name": "VREvent_Compositor_HDCPError","value": "1414"} ,{"name": "VREvent_Compositor_ApplicationNotResponding","value": "1415"} ,{"name": "VREvent_Compositor_ApplicationResumed","value": "1416"} + ,{"name": "VREvent_Compositor_OutOfVideoMemory","value": "1417"} ,{"name": "VREvent_TrackedCamera_StartVideoStream","value": "1500"} ,{"name": "VREvent_TrackedCamera_StopVideoStream","value": "1501"} ,{"name": "VREvent_TrackedCamera_PauseVideoStream","value": "1502"} @@ -495,9 +500,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_IndexController_A","value": "2"} + ,{"name": "k_EButton_IndexController_B","value": "1"} + ,{"name": "k_EButton_IndexController_JoyStick","value": "35"} ,{"name": "k_EButton_Max","value": "64"} ]} , {"enumname": "vr::EVRMouseButton","values": [ @@ -512,7 +517,6 @@ , {"enumname": "vr::EShowUIType","values": [ {"name": "ShowUI_ControllerBinding","value": "0"} ,{"name": "ShowUI_ManageTrackers","value": "1"} - ,{"name": "ShowUI_QuickStart","value": "2"} ,{"name": "ShowUI_Pairing","value": "3"} ,{"name": "ShowUI_Settings","value": "4"} ]} @@ -691,6 +695,7 @@ ,{"name": "VRInitError_Init_VRWebHelperStartupFailed","value": "141"} ,{"name": "VRInitError_Init_TrackerManagerInitFailed","value": "142"} ,{"name": "VRInitError_Init_AlreadyRunning","value": "143"} + ,{"name": "VRInitError_Init_FailedForVrMonitor","value": "144"} ,{"name": "VRInitError_Driver_Failed","value": "200"} ,{"name": "VRInitError_Driver_Unknown","value": "201"} ,{"name": "VRInitError_Driver_HmdUnknown","value": "202"} @@ -703,6 +708,7 @@ ,{"name": "VRInitError_Driver_TrackedDeviceInterfaceUnknown","value": "209"} ,{"name": "VRInitError_Driver_HmdDriverIdOutOfBounds","value": "211"} ,{"name": "VRInitError_Driver_HmdDisplayMirrored","value": "212"} + ,{"name": "VRInitError_Driver_HmdDisplayNotFoundLaptop","value": "213"} ,{"name": "VRInitError_IPC_ServerInitFailed","value": "300"} ,{"name": "VRInitError_IPC_ConnectFailed","value": "301"} ,{"name": "VRInitError_IPC_SharedStateInitFailed","value": "302"} @@ -1102,6 +1108,10 @@ ,{"name": "VRFingerSplay_Ring_Pinky","value": "3"} ,{"name": "VRFingerSplay_Count","value": "4"} ]} +, {"enumname": "vr::EVRSummaryType","values": [ + {"name": "VRSummaryType_FromAnimation","value": "0"} + ,{"name": "VRSummaryType_FromDevice","value": "1"} +]} , {"enumname": "vr::EVRInputFilterCancelType","values": [ {"name": "VRInputFilterCancel_Timers","value": "0"} ,{"name": "VRInputFilterCancel_Momentum","value": "1"} @@ -1353,6 +1363,8 @@ "constname": "k_pch_SteamVR_DebugInput","consttype": "const char *const", "constval": "debugInput"} ,{ "constname": "k_pch_SteamVR_DebugInputBinding","consttype": "const char *const", "constval": "debugInputBinding"} +,{ + "constname": "k_pch_SteamVR_DoNotFadeToGrid","consttype": "const char *const", "constval": "doNotFadeToGrid"} ,{ "constname": "k_pch_SteamVR_InputBindingUIBlock","consttype": "const char *const", "constval": "inputBindingUI"} ,{ @@ -1397,6 +1409,8 @@ "constname": "k_pch_Lighthouse_PowerManagedBaseStations_String","consttype": "const char *const", "constval": "PowerManagedBaseStations"} ,{ "constname": "k_pch_Lighthouse_PowerManagedBaseStations2_String","consttype": "const char *const", "constval": "PowerManagedBaseStations2"} +,{ + "constname": "k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32","consttype": "const char *const", "constval": "InactivityTimeoutForBaseStations"} ,{ "constname": "k_pch_Lighthouse_EnableImuFallback_Bool","consttype": "const char *const", "constval": "enableImuFallback"} ,{ @@ -1466,7 +1480,7 @@ ,{ "constname": "k_pch_Perf_TestData_Float","consttype": "const char *const", "constval": "perfTestData"} ,{ - "constname": "k_pch_Perf_LinuxGPUProfiling_Bool","consttype": "const char *const", "constval": "linuxGPUProfiling"} + "constname": "k_pch_Perf_GPUProfiling_Bool","consttype": "const char *const", "constval": "GPUProfiling"} ,{ "constname": "k_pch_CollisionBounds_Section","consttype": "const char *const", "constval": "collisionBounds"} ,{ @@ -1602,7 +1616,7 @@ ,{ "constname": "k_unMaxBoneNameLength","consttype": "const uint32_t", "constval": "32"} ,{ - "constname": "IVRInput_Version","consttype": "const char *const", "constval": "IVRInput_005"} + "constname": "IVRInput_Version","consttype": "const char *const", "constval": "IVRInput_006"} ,{ "constname": "k_ulInvalidIOBufferHandle","consttype": "const uint64_t", "constval": "0"} ,{ @@ -3072,6 +3086,11 @@ "methodname": "HideWorkingSetPreview", "returntype": "void" } +,{ + "classname": "vr::IVRChaperoneSetup", + "methodname": "RoomSetupStarting", + "returntype": "void" +} ,{ "classname": "vr::IVRCompositor", "methodname": "SetTrackingSpace", @@ -3390,6 +3409,16 @@ "methodname": "IsMotionSmoothingEnabled", "returntype": "bool" } +,{ + "classname": "vr::IVRCompositor", + "methodname": "IsMotionSmoothingSupported", + "returntype": "bool" +} +,{ + "classname": "vr::IVRCompositor", + "methodname": "IsCurrentSceneFocusAppLoading", + "returntype": "bool" +} ,{ "classname": "vr::IVROverlay", "methodname": "FindOverlay", @@ -4666,7 +4695,7 @@ } ,{ "classname": "vr::IVRInput", - "methodname": "GetPoseActionData", + "methodname": "GetPoseActionDataRelativeToNow", "returntype": "vr::EVRInputError", "params": [ { "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, @@ -4677,6 +4706,18 @@ { "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"} ] } +,{ + "classname": "vr::IVRInput", + "methodname": "GetPoseActionDataForNextFrame", + "returntype": "vr::EVRInputError", + "params": [ +{ "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, +{ "paramname": "eOrigin" ,"paramtype": "vr::ETrackingUniverseOrigin"}, +{ "paramname": "pActionData" ,"paramtype": "struct vr::InputPoseActionData_t *"}, +{ "paramname": "unActionDataSize" ,"paramtype": "uint32_t"}, +{ "paramname": "ulRestrictToDevice" ,"paramtype": "vr::VRInputValueHandle_t"} + ] +} ,{ "classname": "vr::IVRInput", "methodname": "GetSkeletalActionData", @@ -4756,6 +4797,7 @@ "returntype": "vr::EVRInputError", "params": [ { "paramname": "action" ,"paramtype": "vr::VRActionHandle_t"}, +{ "paramname": "eSummaryType" ,"paramtype": "vr::EVRSummaryType"}, { "paramname": "pSkeletalSummaryData" ,"paramtype": "struct vr::VRSkeletalSummaryData_t *"} ] } diff --git a/third-party/openvr/headers/openvr_capi.h b/third-party/openvr/headers/openvr_capi.h index 03724dd..6cb9c44 100644 --- a/third-party/openvr/headers/openvr_capi.h +++ b/third-party/openvr/headers/openvr_capi.h @@ -176,6 +176,7 @@ static const char * k_pch_SteamVR_HaveStartedTutorialForNativeChaperoneDriver_Bo static const char * k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; static const char * k_pch_SteamVR_DebugInput = "debugInput"; static const char * k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; +static const char * k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; static const char * k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; static const char * k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -198,6 +199,7 @@ 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_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; +static const char * k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; static const char * k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; static const char * k_pch_Lighthouse_NewPairing_Bool = "newPairing"; static const char * k_pch_Null_Section = "driver_null"; @@ -232,7 +234,7 @@ static const char * k_pch_Perf_PerfGraphInHMD_Bool = "perfGraphInHMD"; static const char * k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; static const char * k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * k_pch_Perf_TestData_Float = "perfTestData"; -static const char * k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; +static const char * k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; static const char * k_pch_CollisionBounds_Section = "collisionBounds"; static const char * k_pch_CollisionBounds_Style_Int32 = "CollisionBoundsStyle"; static const char * k_pch_CollisionBounds_GroundPerimeterOn_Bool = "CollisionBoundsGroundPerimeterOn"; @@ -300,7 +302,7 @@ static const unsigned int k_unMaxActionNameLength = 64; static const unsigned int k_unMaxActionSetNameLength = 64; static const unsigned int k_unMaxActionOriginCount = 16; static const unsigned int k_unMaxBoneNameLength = 32; -static const char * IVRInput_Version = "IVRInput_005"; +static const char * IVRInput_Version = "IVRInput_006"; static const unsigned long k_ulInvalidIOBufferHandle = 0; static const char * IVRIOBuffer_Version = "IVRIOBuffer_002"; static const unsigned int k_ulInvalidSpatialAnchorHandle = 0; @@ -361,7 +363,7 @@ typedef enum ETrackedControllerRole ETrackedControllerRole_TrackedControllerRole_RightHand = 2, ETrackedControllerRole_TrackedControllerRole_OptOut = 3, ETrackedControllerRole_TrackedControllerRole_Treadmill = 4, - ETrackedControllerRole_TrackedControllerRole_Max = 4, + ETrackedControllerRole_TrackedControllerRole_Max = 5, } ETrackedControllerRole; typedef enum ETrackingUniverseOrigin @@ -501,6 +503,9 @@ typedef enum ETrackedDeviceProperty ETrackedDeviceProperty_Prop_CameraDistortionFunction_Int32_Array = 2072, ETrackedDeviceProperty_Prop_CameraDistortionCoefficients_Float_Array = 2073, ETrackedDeviceProperty_Prop_ExpectedControllerType_String = 2074, + ETrackedDeviceProperty_Prop_DisplayAvailableFrameRates_Float_Array = 2080, + ETrackedDeviceProperty_Prop_DisplaySupportsMultipleFramerates_Bool = 2081, + ETrackedDeviceProperty_Prop_DashboardLayoutPathName_String = 2090, ETrackedDeviceProperty_Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, ETrackedDeviceProperty_Prop_DriverRequestedMuraFeather_InnerRight_Int32 = 2202, @@ -548,7 +553,6 @@ typedef enum ETrackedDeviceProperty ETrackedDeviceProperty_Prop_HasVirtualDisplayComponent_Bool = 6006, ETrackedDeviceProperty_Prop_HasSpatialAnchorsSupport_Bool = 6007, ETrackedDeviceProperty_Prop_ControllerType_String = 7000, - ETrackedDeviceProperty_Prop_LegacyInputProfile_String = 7001, ETrackedDeviceProperty_Prop_ControllerHandSelectionPriority_Int32 = 7002, ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_Start = 10000, ETrackedDeviceProperty_Prop_VendorSpecific_Reserved_End = 10999, @@ -692,6 +696,8 @@ typedef enum EVREventType EVREventType_VREvent_ChaperoneSettingsHaveChanged = 803, EVREventType_VREvent_SeatedZeroPoseReset = 804, EVREventType_VREvent_ChaperoneFlushCache = 805, + EVREventType_VREvent_ChaperoneRoomSetupStarting = 806, + EVREventType_VREvent_ChaperoneRoomSetupFinished = 807, EVREventType_VREvent_AudioSettingsHaveChanged = 820, EVREventType_VREvent_BackgroundSettingHasChanged = 850, EVREventType_VREvent_CameraSettingsHaveChanged = 851, @@ -737,6 +743,7 @@ typedef enum EVREventType EVREventType_VREvent_Compositor_HDCPError = 1414, EVREventType_VREvent_Compositor_ApplicationNotResponding = 1415, EVREventType_VREvent_Compositor_ApplicationResumed = 1416, + EVREventType_VREvent_Compositor_OutOfVideoMemory = 1417, EVREventType_VREvent_TrackedCamera_StartVideoStream = 1500, EVREventType_VREvent_TrackedCamera_StopVideoStream = 1501, EVREventType_VREvent_TrackedCamera_PauseVideoStream = 1502, @@ -792,9 +799,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_IndexController_A = 2, + EVRButtonId_k_EButton_IndexController_B = 1, + EVRButtonId_k_EButton_IndexController_JoyStick = 35, EVRButtonId_k_EButton_Max = 64, } EVRButtonId; @@ -815,7 +822,6 @@ typedef enum EShowUIType { EShowUIType_ShowUI_ControllerBinding = 0, EShowUIType_ShowUI_ManageTrackers = 1, - EShowUIType_ShowUI_QuickStart = 2, EShowUIType_ShowUI_Pairing = 3, EShowUIType_ShowUI_Settings = 4, } EShowUIType; @@ -1022,6 +1028,7 @@ typedef enum EVRInitError EVRInitError_VRInitError_Init_VRWebHelperStartupFailed = 141, EVRInitError_VRInitError_Init_TrackerManagerInitFailed = 142, EVRInitError_VRInitError_Init_AlreadyRunning = 143, + EVRInitError_VRInitError_Init_FailedForVrMonitor = 144, EVRInitError_VRInitError_Driver_Failed = 200, EVRInitError_VRInitError_Driver_Unknown = 201, EVRInitError_VRInitError_Driver_HmdUnknown = 202, @@ -1034,6 +1041,7 @@ typedef enum EVRInitError EVRInitError_VRInitError_Driver_TrackedDeviceInterfaceUnknown = 209, EVRInitError_VRInitError_Driver_HmdDriverIdOutOfBounds = 211, EVRInitError_VRInitError_Driver_HmdDisplayMirrored = 212, + EVRInitError_VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, EVRInitError_VRInitError_IPC_ServerInitFailed = 300, EVRInitError_VRInitError_IPC_ConnectFailed = 301, EVRInitError_VRInitError_IPC_SharedStateInitFailed = 302, @@ -1504,6 +1512,12 @@ typedef enum EVRFingerSplay EVRFingerSplay_VRFingerSplay_Count = 4, } EVRFingerSplay; +typedef enum EVRSummaryType +{ + EVRSummaryType_VRSummaryType_FromAnimation = 0, + EVRSummaryType_VRSummaryType_FromDevice = 1, +} EVRSummaryType; + typedef enum EVRInputFilterCancelType { EVRInputFilterCancelType_VRInputFilterCancel_Timers = 0, @@ -2432,6 +2446,7 @@ struct VR_IVRChaperoneSetup_FnTable bool (OPENVR_FNTABLE_CALLTYPE *ImportFromBufferToWorking)(char * pBuffer, uint32_t nImportFlags); void (OPENVR_FNTABLE_CALLTYPE *ShowWorkingSetPreview)(); void (OPENVR_FNTABLE_CALLTYPE *HideWorkingSetPreview)(); + void (OPENVR_FNTABLE_CALLTYPE *RoomSetupStarting)(); }; struct VR_IVRCompositor_FnTable @@ -2480,6 +2495,8 @@ struct VR_IVRCompositor_FnTable void (OPENVR_FNTABLE_CALLTYPE *SetExplicitTimingMode)(EVRCompositorTimingMode eTimingMode); EVRCompositorError (OPENVR_FNTABLE_CALLTYPE *SubmitExplicitTimingData)(); bool (OPENVR_FNTABLE_CALLTYPE *IsMotionSmoothingEnabled)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsMotionSmoothingSupported)(); + bool (OPENVR_FNTABLE_CALLTYPE *IsCurrentSceneFocusAppLoading)(); }; struct VR_IVROverlay_FnTable @@ -2646,7 +2663,8 @@ struct VR_IVRInput_FnTable 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 *GetPoseActionDataRelativeToNow)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, float fPredictedSecondsFromNow, struct InputPoseActionData_t * pActionData, uint32_t unActionDataSize, VRInputValueHandle_t ulRestrictToDevice); + EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetPoseActionDataForNextFrame)(VRActionHandle_t action, ETrackingUniverseOrigin eOrigin, 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); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneCount)(VRActionHandle_t action, uint32_t * pBoneCount); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetBoneHierarchy)(VRActionHandle_t action, BoneIndex_t * pParentIndices, uint32_t unIndexArayCount); @@ -2654,7 +2672,7 @@ struct VR_IVRInput_FnTable EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalReferenceTransforms)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalReferencePose eReferencePose, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalTrackingLevel)(VRActionHandle_t action, EVRSkeletalTrackingLevel * pSkeletalTrackingLevel); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneData)(VRActionHandle_t action, EVRSkeletalTransformSpace eTransformSpace, EVRSkeletalMotionRange eMotionRange, struct VRBoneTransform_t * pTransformArray, uint32_t unTransformArrayCount); - EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalSummaryData)(VRActionHandle_t action, struct VRSkeletalSummaryData_t * pSkeletalSummaryData); + EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalSummaryData)(VRActionHandle_t action, EVRSummaryType eSummaryType, struct VRSkeletalSummaryData_t * pSkeletalSummaryData); EVRInputError (OPENVR_FNTABLE_CALLTYPE *GetSkeletalBoneDataCompressed)(VRActionHandle_t action, EVRSkeletalMotionRange eMotionRange, void * pvCompressedData, uint32_t unCompressedSize, uint32_t * punRequiredCompressedSize); EVRInputError (OPENVR_FNTABLE_CALLTYPE *DecompressSkeletalBoneData)(void * pvCompressedBuffer, uint32_t unCompressedBufferSize, EVRSkeletalTransformSpace eTransformSpace, 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); diff --git a/third-party/openvr/headers/openvr_driver.h b/third-party/openvr/headers/openvr_driver.h index 8a48bc5..960042e 100644 --- a/third-party/openvr/headers/openvr_driver.h +++ b/third-party/openvr/headers/openvr_driver.h @@ -15,8 +15,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 3; - static const uint32_t k_nSteamVRVersionBuild = 20; + static const uint32_t k_nSteamVRVersionMinor = 4; + static const uint32_t k_nSteamVRVersionBuild = 18; } // namespace vr // vrtypes.h @@ -207,7 +207,7 @@ enum ETrackedControllerRole TrackedControllerRole_RightHand = 2, // Tracked device associated with the right hand TrackedControllerRole_OptOut = 3, // Tracked device is opting out of left/right hand selection TrackedControllerRole_Treadmill = 4, // Tracked device is a treadmill - TrackedControllerRole_Max = 4 + TrackedControllerRole_Max = 5 }; @@ -430,6 +430,11 @@ enum ETrackedDeviceProperty Prop_CameraDistortionCoefficients_Float_Array = 2073, // Prop_NumCameras_Int32-sized array of double[vr::k_unMaxDistortionFunctionParameters] (max size is vr::k_unMaxCameras) Prop_ExpectedControllerType_String = 2074, + Prop_DisplayAvailableFrameRates_Float_Array = 2080, // populated by compositor from actual EDID list when available from GPU driver + Prop_DisplaySupportsMultipleFramerates_Bool = 2081, // if this is true but Prop_DisplayAvailableFrameRates_Float_Array is empty, explain to user + + Prop_DashboardLayoutPathName_String = 2090, + // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, @@ -490,7 +495,7 @@ enum ETrackedDeviceProperty // Properties that are set internally based on other information provided by drivers Prop_ControllerType_String = 7000, - Prop_LegacyInputProfile_String = 7001, + //Prop_LegacyInputProfile_String = 7001, // This is no longer used. See "legacy_binding" in the input profile instead. Prop_ControllerHandSelectionPriority_Int32 = 7002, // Allows hand assignments to prefer some controllers over others. High numbers are selected over low numbers // Vendors are free to expose private debug data in this reserved region @@ -734,12 +739,14 @@ enum EVREventType VREvent_DriverRequestedQuit = 704, // The driver has requested that SteamVR shut down VREvent_RestartRequested = 705, // A driver or other component wants the user to restart SteamVR - VREvent_ChaperoneDataHasChanged = 800, // Sent when the process needs to call VRChaperone()->ReloadInfo() + VREvent_ChaperoneDataHasChanged = 800, // this will never happen with the new chaperone system VREvent_ChaperoneUniverseHasChanged = 801, - VREvent_ChaperoneTempDataHasChanged = 802, + VREvent_ChaperoneTempDataHasChanged = 802, // this will never happen with the new chaperone system VREvent_ChaperoneSettingsHaveChanged = 803, VREvent_SeatedZeroPoseReset = 804, VREvent_ChaperoneFlushCache = 805, // Sent when the process needs to reload any cached data it retrieved from VRChaperone() + VREvent_ChaperoneRoomSetupStarting = 806, // Triggered by CVRChaperoneClient::RoomSetupStarting + VREvent_ChaperoneRoomSetupFinished = 807, // Triggered by CVRChaperoneClient::CommitWorkingCopy VREvent_AudioSettingsHaveChanged = 820, @@ -794,6 +801,7 @@ enum EVREventType VREvent_Compositor_HDCPError = 1414, // data is hdcpError VREvent_Compositor_ApplicationNotResponding = 1415, VREvent_Compositor_ApplicationResumed = 1416, + VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, @@ -871,9 +879,9 @@ 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_IndexController_A = k_EButton_Grip, + k_EButton_IndexController_B = k_EButton_ApplicationMenu, + k_EButton_IndexController_JoyStick = k_EButton_Axis3, k_EButton_Max = 64 }; @@ -1099,7 +1107,7 @@ enum EShowUIType { ShowUI_ControllerBinding = 0, ShowUI_ManageTrackers = 1, - ShowUI_QuickStart = 2, + // ShowUI_QuickStart = 2, // Deprecated ShowUI_Pairing = 3, ShowUI_Settings = 4, }; @@ -1428,7 +1436,7 @@ enum EVRSkeletalTrackingLevel // body part location can be measured directly but with fewer degrees of freedom than the actual body // part. Certain body part positions may be unmeasured by the device and estimated from other input data. - // E.g. Knuckles, gloves that only measure finger curl + // E.g. Index Controllers, gloves that only measure finger curl VRSkeletalTracking_Partial, // Body part location can be measured directly throughout the entire range of motion of the body part. @@ -1505,6 +1513,7 @@ enum EVRInitError VRInitError_Init_VRWebHelperStartupFailed = 141, VRInitError_Init_TrackerManagerInitFailed = 142, VRInitError_Init_AlreadyRunning = 143, + VRInitError_Init_FailedForVrMonitor = 144, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1519,6 +1528,7 @@ enum EVRInitError // VRInitError_Driver_HmdDisplayNotFoundAfterFix = 210, // not needed: here for historic reasons VRInitError_Driver_HmdDriverIdOutOfBounds = 211, VRInitError_Driver_HmdDisplayMirrored = 212, + VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, VRInitError_IPC_ServerInitFailed = 300, VRInitError_IPC_ConnectFailed = 301, @@ -2106,6 +2116,7 @@ namespace vr 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_DebugInputBinding = "debugInputBinding"; + static const char * const k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; static const char * const k_pch_SteamVR_InputBindingUIBlock = "inputBindingUI"; static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * const k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; @@ -2134,6 +2145,7 @@ namespace vr static const char * const k_pch_Lighthouse_EnableBluetooth_Bool = "enableBluetooth"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations_String = "PowerManagedBaseStations"; static const char * const k_pch_Lighthouse_PowerManagedBaseStations2_String = "PowerManagedBaseStations2"; + static const char * const k_pch_Lighthouse_InactivityTimeoutForBaseStations_Int32 = "InactivityTimeoutForBaseStations"; static const char * const k_pch_Lighthouse_EnableImuFallback_Bool = "enableImuFallback"; static const char * const k_pch_Lighthouse_NewPairing_Bool = "newPairing"; @@ -2183,7 +2195,7 @@ namespace vr static const char * const k_pch_Perf_AllowTimingStore_Bool = "allowTimingStore"; static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * const k_pch_Perf_TestData_Float = "perfTestData"; - static const char * const k_pch_Perf_LinuxGPUProfiling_Bool = "linuxGPUProfiling"; + static const char * const k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; //----------------------------------------------------------------------------- // collision bounds keys diff --git a/third-party/openvr/lib/linux32/libopenvr_api.so b/third-party/openvr/lib/linux32/libopenvr_api.so index 4e0e720..79b4e11 100644 Binary files a/third-party/openvr/lib/linux32/libopenvr_api.so and b/third-party/openvr/lib/linux32/libopenvr_api.so differ diff --git a/third-party/openvr/lib/linux64/libopenvr_api.so b/third-party/openvr/lib/linux64/libopenvr_api.so index e4676c9..fea27b3 100644 Binary files a/third-party/openvr/lib/linux64/libopenvr_api.so and b/third-party/openvr/lib/linux64/libopenvr_api.so differ diff --git a/third-party/openvr/lib/win32/openvr_api.lib b/third-party/openvr/lib/win32/openvr_api.lib index 9c1fdc9..7463e0f 100644 Binary files a/third-party/openvr/lib/win32/openvr_api.lib and b/third-party/openvr/lib/win32/openvr_api.lib differ diff --git a/third-party/openvr/lib/win64/openvr_api.lib b/third-party/openvr/lib/win64/openvr_api.lib index a7bf95d..ff58a77 100644 Binary files a/third-party/openvr/lib/win64/openvr_api.lib and b/third-party/openvr/lib/win64/openvr_api.lib differ