diff --git a/Readme.md b/Readme.md index 5ef415ef..c18aba24 100644 --- a/Readme.md +++ b/Readme.md @@ -358,13 +358,14 @@ These version are not stable and this should be considered for advanced users on - **Enable Timing Overlay**: Enables a simple Timing overlay, locked to HMD currently. - **Allow Multiple Drivers**: Allows multiple Drivers to be loaded allowing multi-device setups (i.e. rift with vive trackers). - **Disable Notifications**: Disables Notifications (pop-ups) while in VR. + - **Require HMD**: When un-checked disables SteamVR's requirement for an HMD - **Enable System Button Binding**: Allows System Button to be bound and used in any app. (you will probably want to change the bindings in "VR Compositor") + - **Controller Power Turns on SteamVR** Un-checking this will make it so if you turn on a controller or tracker SteamVR will not start - **No Fade to Grid**: When app goes non-responsive, you will not fade to grid. - **Camera** (all checkboxes require restart) - **Enable Camera**: Enables Camera Features - - **Camera for Bounds**: Your camera view will replace your vr view as you near/exit chaperone - - **Camera for Dashboard**: You will have a small camera view attached to your controller when you have the dashboard active. - - **Camera for Room View**: You will have a Tron/Shadow version of the room when double-clicking system button. + - **Show Camera on bounds collision**: Your camera view will replace your vr view as you near/exit chaperone + - **Show Camera on controller**: Your camera view will pop up as an overlay on your controller - **Binds** - **Enable Per-App**: Enables Per App Binding Feature - **Application**: Application to set Per app Bindings @@ -552,6 +553,8 @@ Allows users to temporarily move and rotate the center of the playspace. This al - **Media Control Keys:** Allows controlling a media player through the media keys. This is the same as having a keyboard with media keys and then pressing them. Should support most common media players. +- **Show Tracker Batteries** Shows an Overlay on Trackers depecting battery percentage + ## - Statistics Page Statistics Page @@ -571,8 +574,6 @@ Allows users to temporarily move and rotate the center of the playspace. This al Settings Page - **Autostart:** Allows you to enable/disable auto start. -- **Allow External App Chaperone Edits:** Incorporates changes to the chaperone and universe center made by other applications. These changes could come from anywhere, including apps with unpredictable interactions with Advanced Settings. Therefore, this option opens the potential for chaperone misalignment or corruption. However it also allows other chaperone tweaking tools to function in tandem with Advanced Settings. **This option should only be checked if required for compatibility with other apps.** *Note: Changes will only take effect when offsets and rotation are all zero.* -- **Old-Style Motion:** Uses the old system of writing the chaperone universe center and bounds to disk every frame. Use this option only if you experience issues with playspace motion such as snapping back to reset position after releasing a space-drag. This old mode is smooth on most systems but is in theory less performant than the normal method. - **Universe-Centered Rotation:** Causes Rotation to be applied to Universe Center Rather than HMD (Disables offsets automatically compensating to pivot at the HMD). - **Enable Automatic Crash Recovery of Chaperone Config:** This applies the last good autosaved chaperone profile when starting up after not shutting down properly. - **Disable Notification of Newer Version Availability**: This turns off the on start-up check for a new version. (You can refresh this to do a manual check.) diff --git a/build_scripts/compile_version_string.txt b/build_scripts/compile_version_string.txt index 40621f72..5c078117 100644 --- a/build_scripts/compile_version_string.txt +++ b/build_scripts/compile_version_string.txt @@ -1 +1 @@ -5.8.3-release \ No newline at end of file +5.8.6-release diff --git a/docs/keyboard_input_guide.md b/docs/keyboard_input_guide.md index b1beba12..c67ea154 100644 --- a/docs/keyboard_input_guide.md +++ b/docs/keyboard_input_guide.md @@ -2,7 +2,10 @@ ## Capabilities We provide two distinct types of functionality, `Keyboard Shortcut`'s [macros] and `Key Press`'s [individual key press] - + +### Limitations +We are not designed to provide a whole bunch of functionality here, if you need a whole bunch of keys instead of 1 or 2 you may want to use another utility such as [OpenVR2Key](https://github.com/BOLL7708/OpenVR2Key) by Boll7708 on Github (no affiliation) + ### Keyboard Shortcuts - Sends One or Many keys to the OS like a macro. @@ -55,7 +58,7 @@ | A to Z | The letter in lowercase. `a`, `b`, `c`, ... | | Number Row 0-9 | The number. `0`, `1`, `2`, ... | | Function keys F1-F9 | Capital F followed by number. `F1`, `F2`, `F3`, ... | -| Function keys F10-F12 | Capital G followed by number. `G0` = F10, `G1` = F11, ... | +| Function keys F10-F19 | Capital G followed by number. `G0` = F10, `G1` = F11, ... | | Backspace | `BACKSPACE` | | Space | `SPACE` | | Tab | `TAB` | diff --git a/docs/screenshots/SettingsPage.png b/docs/screenshots/SettingsPage.png index 1100151d..426f915b 100644 Binary files a/docs/screenshots/SettingsPage.png and b/docs/screenshots/SettingsPage.png differ diff --git a/docs/screenshots/SteamVRPage.png b/docs/screenshots/SteamVRPage.png index 536ad12a..8b06bc4c 100644 Binary files a/docs/screenshots/SteamVRPage.png and b/docs/screenshots/SteamVRPage.png differ diff --git a/docs/screenshots/UtilitiesPage.png b/docs/screenshots/UtilitiesPage.png index 7167403f..f6a98dc5 100644 Binary files a/docs/screenshots/UtilitiesPage.png and b/docs/screenshots/UtilitiesPage.png differ diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index 7a4b5c60..0e51c8fe 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -1249,8 +1249,12 @@ void OverlayController::mainEventLoop() case vr::VREvent_SeatedZeroPoseReset: { - m_moveCenterTabController.incomingSeatedReset(); - LOG( INFO ) << "Game/SteamVR Triggered Seated Zero-Position Reset"; + m_incomingReset = true; + } + break; + case vr::VREvent_StandingZeroPoseReset: + { + m_incomingReset = true; } break; @@ -1300,6 +1304,13 @@ void OverlayController::mainEventLoop() } } + if ( m_incomingReset ) + { + m_incomingReset = false; + m_moveCenterTabController.incomingSeatedReset(); + LOG( INFO ) << "Incoming Reset"; + } + vr::TrackedDevicePose_t devicePoses[vr::k_unMaxTrackedDeviceCount]; vr::VRSystem()->GetDeviceToAbsoluteTrackingPose( vr::TrackingUniverseStanding, @@ -1430,6 +1441,8 @@ void OverlayController::AddOffsetToUniverseCenter( { vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live ); + vr::VRChaperoneSetup()->ReloadFromDisk( + vr::EChaperoneConfigFile_Temp ); } } } diff --git a/src/overlaycontroller.h b/src/overlaycontroller.h index d57520d3..0a8ded5b 100644 --- a/src/overlaycontroller.h +++ b/src/overlaycontroller.h @@ -131,6 +131,7 @@ class OverlayController : public QObject QString m_updateMessage = ""; QString m_optionalMessage = ""; QString m_versionCheckText = ""; + bool m_incomingReset = false; QUrl m_runtimePathUrl; diff --git a/src/res/qml/SettingsPage.qml b/src/res/qml/SettingsPage.qml index 3904f64b..b5cf9e82 100644 --- a/src/res/qml/SettingsPage.qml +++ b/src/res/qml/SettingsPage.qml @@ -100,14 +100,6 @@ MyStackViewPage { } } - MyToggleButton { - id: allowExternalEditsToggle - text: "Allow External App Chaperone Edits (Danger)" - onCheckedChanged: { - MoveCenterTabController.setAllowExternalEdits(checked, true) - } - } - MyToggleButton { id: universeCenteredRotationToggle text: "Universe-Centered Rotation (Disables HMD Centering)" @@ -323,10 +315,7 @@ MyStackViewPage { } // end column Component.onCompleted: { settingsAutoStartToggle.checked = SettingsTabController.autoStartEnabled - - allowExternalEditsToggle.checked = MoveCenterTabController.allowExternalEdits universeCenteredRotationToggle.checked = MoveCenterTabController.universeCenteredRotation - disableCrashRecoveryToggle.checked = !OverlayController.crashRecoveryDisabled customTickRateText.text = OverlayController.customTickRateMs vsyncDisabledToggle.checked = OverlayController.vsyncDisabled @@ -362,9 +351,6 @@ MyStackViewPage { Connections { target: MoveCenterTabController - onAllowExternalEditsChanged: { - allowExternalEditsToggle.checked = MoveCenterTabController.allowExternalEdits - } onUniverseCenteredRotationChanged: { universeCenteredRotationToggle.checked = MoveCenterTabController.universeCenteredRotation } diff --git a/src/res/qml/steamvr_page/camera/CameraGroupBox.qml b/src/res/qml/steamvr_page/camera/CameraGroupBox.qml index 8c8dfff2..685780f8 100644 --- a/src/res/qml/steamvr_page/camera/CameraGroupBox.qml +++ b/src/res/qml/steamvr_page/camera/CameraGroupBox.qml @@ -85,7 +85,7 @@ GroupBox { if(!c1){ steamvrCameraBoundsToggle.enabled = false; - steamvrCameraRoomToggle.enabled = false; + steamvrCameraContToggle.enabled = false; } } diff --git a/src/res/qml/video_page/brightness/BrightnessGroupBox.qml b/src/res/qml/video_page/brightness/BrightnessGroupBox.qml index 98188718..c47697f9 100644 --- a/src/res/qml/video_page/brightness/BrightnessGroupBox.qml +++ b/src/res/qml/video_page/brightness/BrightnessGroupBox.qml @@ -51,7 +51,7 @@ GroupBox { MySlider { id: brightnessSlider - from: 0.10 + from: 0.2 to: 1.0 stepSize: 0.01 value: 1.0 @@ -73,8 +73,8 @@ GroupBox { function onInputEvent(input) { var val = parseFloat(input) if (!isNaN(val)) { - if (val < 3.0) { - val = 3.0 + if (val < 5.0) { + val = 5.0 } else if (val > 100.0) { val = 100.0 } diff --git a/src/res/qml/video_page/overlaycolorbright/OverlayMethodGroupBox.qml b/src/res/qml/video_page/overlaycolorbright/OverlayMethodGroupBox.qml index f84846ae..4d999118 100644 --- a/src/res/qml/video_page/overlaycolorbright/OverlayMethodGroupBox.qml +++ b/src/res/qml/video_page/overlaycolorbright/OverlayMethodGroupBox.qml @@ -52,7 +52,7 @@ GroupBox { MySlider { id: brightnessSlider - from: 0.01 + from: 0.2 to: 1.0 stepSize: 0.01 value: 1.0 diff --git a/src/tabcontrollers/MoveCenterTabController.cpp b/src/tabcontrollers/MoveCenterTabController.cpp index 05c881c4..c7cabbc9 100644 --- a/src/tabcontrollers/MoveCenterTabController.cpp +++ b/src/tabcontrollers/MoveCenterTabController.cpp @@ -821,23 +821,6 @@ void MoveCenterTabController::setShowLogMatricesButton( bool value, } } -bool MoveCenterTabController::allowExternalEdits() const -{ - return settings::getSetting( - settings::BoolSetting::PLAYSPACE_allowExternalEdits ); -} - -void MoveCenterTabController::setAllowExternalEdits( bool value, bool notify ) -{ - settings::setSetting( settings::BoolSetting::PLAYSPACE_allowExternalEdits, - value ); - - if ( notify ) - { - emit allowExternalEditsChanged( value ); - } -} - bool MoveCenterTabController::universeCenteredRotation() const { return settings::getSetting( @@ -904,38 +887,31 @@ void MoveCenterTabController::shutdown() void MoveCenterTabController::incomingSeatedReset() { - // if we didn't send the request from OVRAS, we need to send another - // ResetSeatedZeroPose(). It seems that only after this is sent from - // OVRAS does ReloadFromDisk return valid info on WMR. - if ( !m_selfRequestedSeatedRecenter ) - { - LOG( INFO ) << "steamvr center?"; - m_selfRequestedSeatedRecenter = true; - vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated ); - } - else + // This really covers standing reset as well + updateChaperoneResetData(); + if ( m_offsetY != 0 ) { - LOG( INFO ) << "not our receneter"; - updateSeatedResetData(); + m_offsetY = -m_offsetY; + updateSpace(); + updateChaperoneResetData(); } - // vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated ); + zeroOffsets(); } void MoveCenterTabController::reset() { + // This is a weird hack for handling the reset properly don't ask me why + // reset plays better w/ a non 0 starting point + m_offsetY = 0.01f; + updateSpace(); + if ( !m_chaperoneBasisAcquired ) { LOG( WARNING ) << "WARNING: Attempted reset offsets before chaperone " "basis is acquired!"; return; } - if ( m_pendingSeatedRecenter ) - { - vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose( - &m_seatedCenterForReset ); - m_pendingSeatedRecenter = false; - } - vr::VRChaperoneSetup()->HideWorkingSetPreview(); + // vr::VRChaperoneSetup()->HideWorkingSetPreview(); m_heightToggle = false; emit heightToggleChanged( m_heightToggle ); m_oldOffsetX = 0.0f; @@ -951,7 +927,13 @@ void MoveCenterTabController::reset() m_lastControllerPosition[2] = 0.0f; m_lastMoveHand = vr::TrackedControllerRole_Invalid; m_lastRotateHand = vr::TrackedControllerRole_Invalid; - applyChaperoneResetData(); + + // Option 1: Does not save + updateSpace( true ); + updateChaperoneResetData(); + + // Option 2: on reset will recenter play area + // applyChaperoneResetData(); // For Center Marker // Needs to happen after apply chaperone @@ -1106,6 +1088,7 @@ void MoveCenterTabController::zeroOffsets() // down properly. parent->setPreviousShutdownSafe( false ); } + m_pendingZeroOffsets = true; } if ( m_roomSetupModeDetected ) { @@ -1119,7 +1102,7 @@ void MoveCenterTabController::zeroOffsets() void MoveCenterTabController::sendSeatedRecenter() { vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated ); - // vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseStanding ); + vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseStanding ); } double MoveCenterTabController::getHmdYawTotal() @@ -1162,10 +1145,6 @@ void MoveCenterTabController::updateSeatedResetData() vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live ); // done with this recenter, so set self request back to false for next // time. - m_selfRequestedSeatedRecenter = false; - // set pending update here, will be processed on next instance of motion - // or running the reset() function. - m_pendingSeatedRecenter = true; } void MoveCenterTabController::updateChaperoneResetData() @@ -1188,10 +1167,11 @@ void MoveCenterTabController::updateChaperoneResetData() updateCollisionBoundsForOffset(); parent->m_chaperoneTabController.updateHeight( getBoundsBasisMaxY() ); - unsigned checkQuadCount = 0; - vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr, - &checkQuadCount ); - if ( checkQuadCount > 0 ) + // unsigned checkQuadCount = 0; + // vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr, + // &checkQuadCount + // ); + if ( currentQuadCount > 0 ) { parent->chaperoneUtils().loadChaperoneData( false ); } @@ -1233,17 +1213,19 @@ void MoveCenterTabController::updateCollisionBoundsForOffset() void MoveCenterTabController::applyChaperoneResetData() { - vr::VRChaperoneSetup()->HideWorkingSetPreview(); + updateSpace( true ); vr::VRChaperoneSetup()->RevertWorkingCopy(); if ( m_collisionBoundsCountForReset > 0 ) { vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo( m_collisionBoundsForReset, m_collisionBoundsCountForReset ); } - vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose( - &m_universeCenterForReset ); - vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose( - &m_seatedCenterForReset ); + // zeroOffsets(); + // These commands set play area as centered which is un-desirable + // vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose( + // &m_universeCenterForReset ); + // vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose( + // &m_seatedCenterForReset ); vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live ); @@ -2495,29 +2477,6 @@ void MoveCenterTabController::updateSpace( bool forceUpdate ) return; } - // reload from disk if we're at zero offsets and allow external edits - if ( allowExternalEdits() - && ( abs( m_oldOffsetX ) + abs( m_oldOffsetY ) + abs( m_oldOffsetZ ) - + abs( static_cast( m_oldRotation ) ) ) - == 0 ) - { - vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live ); - vr::VRChaperoneSetup()->CommitWorkingCopy( - vr::EChaperoneConfigFile_Live ); - updateChaperoneResetData(); - } - - // do a late on-demand setting of seated center basis when we need it - // for motion. This gives the reload from disk a little more time to - // complete before we apply the new seated basis. - if ( m_pendingSeatedRecenter ) - { - vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose( - &m_seatedCenterForReset ); - - m_pendingSeatedRecenter = false; - } - vr::HmdMatrix34_t offsetUniverseCenter; // set offsetUniverseCenter to the current angle diff --git a/src/tabcontrollers/MoveCenterTabController.h b/src/tabcontrollers/MoveCenterTabController.h index 68f6f407..fcbaee77 100644 --- a/src/tabcontrollers/MoveCenterTabController.h +++ b/src/tabcontrollers/MoveCenterTabController.h @@ -126,8 +126,9 @@ class MoveCenterTabController : public QObject Q_PROPERTY( bool showLogMatricesButton READ showLogMatricesButton WRITE setShowLogMatricesButton NOTIFY showLogMatricesButtonChanged ) - Q_PROPERTY( bool allowExternalEdits READ allowExternalEdits WRITE - setAllowExternalEdits NOTIFY allowExternalEditsChanged ) + // Q_PROPERTY( bool allowExternalEdits READ allowExternalEdits WRITE + // setAllowExternalEdits NOTIFY allowExternalEditsChanged + // ) Q_PROPERTY( bool universeCenteredRotation READ universeCenteredRotation WRITE setUniverseCenteredRotation NOTIFY universeCenteredRotationChanged ) @@ -190,8 +191,6 @@ class MoveCenterTabController : public QObject bool m_gravityActive = false; bool m_gravityReversed = false; bool m_pendingZeroOffsets = true; - bool m_pendingSeatedRecenter = false; - bool m_selfRequestedSeatedRecenter = false; bool m_dashWasOpenPreviousFrame = false; bool m_roomSetupModeDetected = false; bool m_seatedModeDetected = false; @@ -266,7 +265,7 @@ class MoveCenterTabController : public QObject bool lockYToggle() const; bool lockZToggle() const; bool showLogMatricesButton() const; - bool allowExternalEdits() const; + // bool allowExternalEdits() const; bool universeCenteredRotation() const; bool isInitComplete() const; double getHmdYawTotal(); @@ -345,7 +344,7 @@ public slots: void setLockY( bool value, bool notify = true ); void setLockZ( bool value, bool notify = true ); void setShowLogMatricesButton( bool value, bool notify = true ); - void setAllowExternalEdits( bool value, bool notify = true ); + // void setAllowExternalEdits( bool value, bool notify = true ); void setUniverseCenteredRotation( bool value, bool notify = true ); void shutdown(); @@ -388,7 +387,7 @@ public slots: void requireLockYChanged( bool value ); void requireLockZChanged( bool value ); void showLogMatricesButtonChanged( bool value ); - void allowExternalEditsChanged( bool value ); + // void allowExternalEditsChanged( bool value ); void universeCenteredRotationChanged( bool value ); void offsetProfilesUpdated(); }; diff --git a/ver/versioncheck.json b/ver/versioncheck.json index ddc36176..99ec7ebc 100644 --- a/ver/versioncheck.json +++ b/ver/versioncheck.json @@ -1 +1 @@ -{ "major": 5, "minor": 7, "patch": 4, "updateMessage": "", "optionalMessage": "" } +{ "major": 5, "minor": 8, "patch": 6, "updateMessage": "", "optionalMessage": "" }