5.8.6 (#661)
* add delay if interface not found * adjust initialization behavior * pushed for debugging reasons for concerned parties * comment out simple recenter * remove old style motion, some minor optimizations * optimize default case check * optimized default condition * change manifest install behavior to trigger on desktop mode as well * add desktop mode binding launch * add tracker overlay option to utils * commit to check status * attempt to fix native LH issues with chaperone when exiting * add desktop mode toggle and some cleanup * remove adjust chaperone * remove clang format from ci, increment version, cleanup * update circle ci * fix conversion warning * add F13-19 to keyboard parser * add additional logging around failure to initialize * add unsaved changes * update version 5.8.1 * fix some collisions in enum declaration * add controller powers on steamvr, and no HMD to steamvr tab, increment version * slightly alter drag movement, fix qml issue * code cleanup * fix logspam/attempt to delete non existant overlays * increment version 5.8.3 * add zero-offset to true as potential edge case fix * remove dead code in qml * fix both brightness sliders to be uniform .05 minimum via set, and .2 minimum via slider * attempt to fix recenter, and fix floor * further space drag/recenter improvements * get rid of old code * increment version 5.8.6 * remove old commented code settings page * update documentation * re-add mistakenly removed line
This commit is contained in:
@@ -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.
|
- **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).
|
- **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.
|
- **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")
|
- **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.
|
- **No Fade to Grid**: When app goes non-responsive, you will not fade to grid.
|
||||||
- **Camera** (all checkboxes require restart)
|
- **Camera** (all checkboxes require restart)
|
||||||
- **Enable Camera**: Enables Camera Features
|
- **Enable Camera**: Enables Camera Features
|
||||||
- **Camera for Bounds**: Your camera view will replace your vr view as you near/exit chaperone
|
- **Show Camera on bounds collision**: 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.
|
- **Show Camera on controller**: Your camera view will pop up as an overlay on your controller
|
||||||
- **Camera for Room View**: You will have a Tron/Shadow version of the room when double-clicking system button.
|
|
||||||
- **Binds**
|
- **Binds**
|
||||||
- **Enable Per-App**: Enables Per App Binding Feature
|
- **Enable Per-App**: Enables Per App Binding Feature
|
||||||
- **Application**: Application to set Per app Bindings
|
- **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.
|
- **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
|
||||||
|
|
||||||
<img src="docs/screenshots/StatisticsPage.png" width="600" alt="Statistics Page">
|
<img src="docs/screenshots/StatisticsPage.png" width="600" alt="Statistics Page">
|
||||||
@@ -571,8 +574,6 @@ Allows users to temporarily move and rotate the center of the playspace. This al
|
|||||||
<img src="docs/screenshots/SettingsPage.png" width="600" alt="Settings Page">
|
<img src="docs/screenshots/SettingsPage.png" width="600" alt="Settings Page">
|
||||||
|
|
||||||
- **Autostart:** Allows you to enable/disable auto start.
|
- **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).
|
- **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.
|
- **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.)
|
- **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.)
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
5.8.3-release
|
5.8.6-release
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
|
|
||||||
## Capabilities
|
## Capabilities
|
||||||
We provide two distinct types of functionality, `Keyboard Shortcut`'s [macros] and `Key Press`'s [individual key press]
|
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
|
### Keyboard Shortcuts
|
||||||
|
|
||||||
- Sends One or Many keys to the OS like a macro.
|
- 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`, ... |
|
| A to Z | The letter in lowercase. `a`, `b`, `c`, ... |
|
||||||
| Number Row 0-9 | The number. `0`, `1`, `2`, ... |
|
| Number Row 0-9 | The number. `0`, `1`, `2`, ... |
|
||||||
| Function keys F1-F9 | Capital F followed by number. `F1`, `F2`, `F3`, ... |
|
| 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` |
|
| Backspace | `BACKSPACE` |
|
||||||
| Space | `SPACE` |
|
| Space | `SPACE` |
|
||||||
| Tab | `TAB` |
|
| Tab | `TAB` |
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 106 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 106 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 75 KiB |
@@ -1249,8 +1249,12 @@ void OverlayController::mainEventLoop()
|
|||||||
|
|
||||||
case vr::VREvent_SeatedZeroPoseReset:
|
case vr::VREvent_SeatedZeroPoseReset:
|
||||||
{
|
{
|
||||||
m_moveCenterTabController.incomingSeatedReset();
|
m_incomingReset = true;
|
||||||
LOG( INFO ) << "Game/SteamVR Triggered Seated Zero-Position Reset";
|
}
|
||||||
|
break;
|
||||||
|
case vr::VREvent_StandingZeroPoseReset:
|
||||||
|
{
|
||||||
|
m_incomingReset = true;
|
||||||
}
|
}
|
||||||
break;
|
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::TrackedDevicePose_t devicePoses[vr::k_unMaxTrackedDeviceCount];
|
||||||
vr::VRSystem()->GetDeviceToAbsoluteTrackingPose(
|
vr::VRSystem()->GetDeviceToAbsoluteTrackingPose(
|
||||||
vr::TrackingUniverseStanding,
|
vr::TrackingUniverseStanding,
|
||||||
@@ -1430,6 +1441,8 @@ void OverlayController::AddOffsetToUniverseCenter(
|
|||||||
{
|
{
|
||||||
vr::VRChaperoneSetup()->CommitWorkingCopy(
|
vr::VRChaperoneSetup()->CommitWorkingCopy(
|
||||||
vr::EChaperoneConfigFile_Live );
|
vr::EChaperoneConfigFile_Live );
|
||||||
|
vr::VRChaperoneSetup()->ReloadFromDisk(
|
||||||
|
vr::EChaperoneConfigFile_Temp );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ private:
|
|||||||
QString m_updateMessage = "";
|
QString m_updateMessage = "";
|
||||||
QString m_optionalMessage = "";
|
QString m_optionalMessage = "";
|
||||||
QString m_versionCheckText = "";
|
QString m_versionCheckText = "";
|
||||||
|
bool m_incomingReset = false;
|
||||||
|
|
||||||
QUrl m_runtimePathUrl;
|
QUrl m_runtimePathUrl;
|
||||||
|
|
||||||
|
|||||||
@@ -100,14 +100,6 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyToggleButton {
|
|
||||||
id: allowExternalEditsToggle
|
|
||||||
text: "Allow External App Chaperone Edits (Danger)"
|
|
||||||
onCheckedChanged: {
|
|
||||||
MoveCenterTabController.setAllowExternalEdits(checked, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MyToggleButton {
|
MyToggleButton {
|
||||||
id: universeCenteredRotationToggle
|
id: universeCenteredRotationToggle
|
||||||
text: "Universe-Centered Rotation (Disables HMD Centering)"
|
text: "Universe-Centered Rotation (Disables HMD Centering)"
|
||||||
@@ -323,10 +315,7 @@ MyStackViewPage {
|
|||||||
} // end column
|
} // end column
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
settingsAutoStartToggle.checked = SettingsTabController.autoStartEnabled
|
settingsAutoStartToggle.checked = SettingsTabController.autoStartEnabled
|
||||||
|
|
||||||
allowExternalEditsToggle.checked = MoveCenterTabController.allowExternalEdits
|
|
||||||
universeCenteredRotationToggle.checked = MoveCenterTabController.universeCenteredRotation
|
universeCenteredRotationToggle.checked = MoveCenterTabController.universeCenteredRotation
|
||||||
|
|
||||||
disableCrashRecoveryToggle.checked = !OverlayController.crashRecoveryDisabled
|
disableCrashRecoveryToggle.checked = !OverlayController.crashRecoveryDisabled
|
||||||
customTickRateText.text = OverlayController.customTickRateMs
|
customTickRateText.text = OverlayController.customTickRateMs
|
||||||
vsyncDisabledToggle.checked = OverlayController.vsyncDisabled
|
vsyncDisabledToggle.checked = OverlayController.vsyncDisabled
|
||||||
@@ -362,9 +351,6 @@ MyStackViewPage {
|
|||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: MoveCenterTabController
|
target: MoveCenterTabController
|
||||||
onAllowExternalEditsChanged: {
|
|
||||||
allowExternalEditsToggle.checked = MoveCenterTabController.allowExternalEdits
|
|
||||||
}
|
|
||||||
onUniverseCenteredRotationChanged: {
|
onUniverseCenteredRotationChanged: {
|
||||||
universeCenteredRotationToggle.checked = MoveCenterTabController.universeCenteredRotation
|
universeCenteredRotationToggle.checked = MoveCenterTabController.universeCenteredRotation
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ GroupBox {
|
|||||||
if(!c1){
|
if(!c1){
|
||||||
|
|
||||||
steamvrCameraBoundsToggle.enabled = false;
|
steamvrCameraBoundsToggle.enabled = false;
|
||||||
steamvrCameraRoomToggle.enabled = false;
|
steamvrCameraContToggle.enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ GroupBox {
|
|||||||
|
|
||||||
MySlider {
|
MySlider {
|
||||||
id: brightnessSlider
|
id: brightnessSlider
|
||||||
from: 0.10
|
from: 0.2
|
||||||
to: 1.0
|
to: 1.0
|
||||||
stepSize: 0.01
|
stepSize: 0.01
|
||||||
value: 1.0
|
value: 1.0
|
||||||
@@ -73,8 +73,8 @@ GroupBox {
|
|||||||
function onInputEvent(input) {
|
function onInputEvent(input) {
|
||||||
var val = parseFloat(input)
|
var val = parseFloat(input)
|
||||||
if (!isNaN(val)) {
|
if (!isNaN(val)) {
|
||||||
if (val < 3.0) {
|
if (val < 5.0) {
|
||||||
val = 3.0
|
val = 5.0
|
||||||
} else if (val > 100.0) {
|
} else if (val > 100.0) {
|
||||||
val = 100.0
|
val = 100.0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ GroupBox {
|
|||||||
|
|
||||||
MySlider {
|
MySlider {
|
||||||
id: brightnessSlider
|
id: brightnessSlider
|
||||||
from: 0.01
|
from: 0.2
|
||||||
to: 1.0
|
to: 1.0
|
||||||
stepSize: 0.01
|
stepSize: 0.01
|
||||||
value: 1.0
|
value: 1.0
|
||||||
|
|||||||
@@ -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
|
bool MoveCenterTabController::universeCenteredRotation() const
|
||||||
{
|
{
|
||||||
return settings::getSetting(
|
return settings::getSetting(
|
||||||
@@ -904,38 +887,31 @@ void MoveCenterTabController::shutdown()
|
|||||||
|
|
||||||
void MoveCenterTabController::incomingSeatedReset()
|
void MoveCenterTabController::incomingSeatedReset()
|
||||||
{
|
{
|
||||||
// if we didn't send the request from OVRAS, we need to send another
|
// This really covers standing reset as well
|
||||||
// ResetSeatedZeroPose(). It seems that only after this is sent from
|
updateChaperoneResetData();
|
||||||
// OVRAS does ReloadFromDisk return valid info on WMR.
|
if ( m_offsetY != 0 )
|
||||||
if ( !m_selfRequestedSeatedRecenter )
|
|
||||||
{
|
{
|
||||||
LOG( INFO ) << "steamvr center?";
|
m_offsetY = -m_offsetY;
|
||||||
m_selfRequestedSeatedRecenter = true;
|
updateSpace();
|
||||||
vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated );
|
updateChaperoneResetData();
|
||||||
}
|
}
|
||||||
else
|
zeroOffsets();
|
||||||
{
|
|
||||||
LOG( INFO ) << "not our receneter";
|
|
||||||
updateSeatedResetData();
|
|
||||||
}
|
|
||||||
// vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::reset()
|
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 )
|
if ( !m_chaperoneBasisAcquired )
|
||||||
{
|
{
|
||||||
LOG( WARNING ) << "WARNING: Attempted reset offsets before chaperone "
|
LOG( WARNING ) << "WARNING: Attempted reset offsets before chaperone "
|
||||||
"basis is acquired!";
|
"basis is acquired!";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( m_pendingSeatedRecenter )
|
// vr::VRChaperoneSetup()->HideWorkingSetPreview();
|
||||||
{
|
|
||||||
vr::VRChaperoneSetup()->GetWorkingSeatedZeroPoseToRawTrackingPose(
|
|
||||||
&m_seatedCenterForReset );
|
|
||||||
m_pendingSeatedRecenter = false;
|
|
||||||
}
|
|
||||||
vr::VRChaperoneSetup()->HideWorkingSetPreview();
|
|
||||||
m_heightToggle = false;
|
m_heightToggle = false;
|
||||||
emit heightToggleChanged( m_heightToggle );
|
emit heightToggleChanged( m_heightToggle );
|
||||||
m_oldOffsetX = 0.0f;
|
m_oldOffsetX = 0.0f;
|
||||||
@@ -951,7 +927,13 @@ void MoveCenterTabController::reset()
|
|||||||
m_lastControllerPosition[2] = 0.0f;
|
m_lastControllerPosition[2] = 0.0f;
|
||||||
m_lastMoveHand = vr::TrackedControllerRole_Invalid;
|
m_lastMoveHand = vr::TrackedControllerRole_Invalid;
|
||||||
m_lastRotateHand = 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
|
// For Center Marker
|
||||||
// Needs to happen after apply chaperone
|
// Needs to happen after apply chaperone
|
||||||
@@ -1106,6 +1088,7 @@ void MoveCenterTabController::zeroOffsets()
|
|||||||
// down properly.
|
// down properly.
|
||||||
parent->setPreviousShutdownSafe( false );
|
parent->setPreviousShutdownSafe( false );
|
||||||
}
|
}
|
||||||
|
m_pendingZeroOffsets = true;
|
||||||
}
|
}
|
||||||
if ( m_roomSetupModeDetected )
|
if ( m_roomSetupModeDetected )
|
||||||
{
|
{
|
||||||
@@ -1119,7 +1102,7 @@ void MoveCenterTabController::zeroOffsets()
|
|||||||
void MoveCenterTabController::sendSeatedRecenter()
|
void MoveCenterTabController::sendSeatedRecenter()
|
||||||
{
|
{
|
||||||
vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated );
|
vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated );
|
||||||
// vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseStanding );
|
vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseStanding );
|
||||||
}
|
}
|
||||||
|
|
||||||
double MoveCenterTabController::getHmdYawTotal()
|
double MoveCenterTabController::getHmdYawTotal()
|
||||||
@@ -1162,10 +1145,6 @@ void MoveCenterTabController::updateSeatedResetData()
|
|||||||
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
vr::VRChaperoneSetup()->ReloadFromDisk( vr::EChaperoneConfigFile_Live );
|
||||||
// done with this recenter, so set self request back to false for next
|
// done with this recenter, so set self request back to false for next
|
||||||
// time.
|
// 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()
|
void MoveCenterTabController::updateChaperoneResetData()
|
||||||
@@ -1188,10 +1167,11 @@ void MoveCenterTabController::updateChaperoneResetData()
|
|||||||
updateCollisionBoundsForOffset();
|
updateCollisionBoundsForOffset();
|
||||||
parent->m_chaperoneTabController.updateHeight( getBoundsBasisMaxY() );
|
parent->m_chaperoneTabController.updateHeight( getBoundsBasisMaxY() );
|
||||||
|
|
||||||
unsigned checkQuadCount = 0;
|
// unsigned checkQuadCount = 0;
|
||||||
vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr,
|
// vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo( nullptr,
|
||||||
&checkQuadCount );
|
// &checkQuadCount
|
||||||
if ( checkQuadCount > 0 )
|
// );
|
||||||
|
if ( currentQuadCount > 0 )
|
||||||
{
|
{
|
||||||
parent->chaperoneUtils().loadChaperoneData( false );
|
parent->chaperoneUtils().loadChaperoneData( false );
|
||||||
}
|
}
|
||||||
@@ -1233,17 +1213,19 @@ void MoveCenterTabController::updateCollisionBoundsForOffset()
|
|||||||
|
|
||||||
void MoveCenterTabController::applyChaperoneResetData()
|
void MoveCenterTabController::applyChaperoneResetData()
|
||||||
{
|
{
|
||||||
vr::VRChaperoneSetup()->HideWorkingSetPreview();
|
updateSpace( true );
|
||||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
||||||
if ( m_collisionBoundsCountForReset > 0 )
|
if ( m_collisionBoundsCountForReset > 0 )
|
||||||
{
|
{
|
||||||
vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo(
|
vr::VRChaperoneSetup()->SetWorkingCollisionBoundsInfo(
|
||||||
m_collisionBoundsForReset, m_collisionBoundsCountForReset );
|
m_collisionBoundsForReset, m_collisionBoundsCountForReset );
|
||||||
}
|
}
|
||||||
vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(
|
// zeroOffsets();
|
||||||
&m_universeCenterForReset );
|
// These commands set play area as centered which is un-desirable
|
||||||
vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose(
|
// vr::VRChaperoneSetup()->SetWorkingStandingZeroPoseToRawTrackingPose(
|
||||||
&m_seatedCenterForReset );
|
// &m_universeCenterForReset );
|
||||||
|
// vr::VRChaperoneSetup()->SetWorkingSeatedZeroPoseToRawTrackingPose(
|
||||||
|
// &m_seatedCenterForReset );
|
||||||
|
|
||||||
vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live );
|
vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live );
|
||||||
|
|
||||||
@@ -2495,29 +2477,6 @@ void MoveCenterTabController::updateSpace( bool forceUpdate )
|
|||||||
return;
|
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<float>( 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;
|
vr::HmdMatrix34_t offsetUniverseCenter;
|
||||||
|
|
||||||
// set offsetUniverseCenter to the current angle
|
// set offsetUniverseCenter to the current angle
|
||||||
|
|||||||
@@ -126,8 +126,9 @@ class MoveCenterTabController : public QObject
|
|||||||
Q_PROPERTY(
|
Q_PROPERTY(
|
||||||
bool showLogMatricesButton READ showLogMatricesButton WRITE
|
bool showLogMatricesButton READ showLogMatricesButton WRITE
|
||||||
setShowLogMatricesButton NOTIFY showLogMatricesButtonChanged )
|
setShowLogMatricesButton NOTIFY showLogMatricesButtonChanged )
|
||||||
Q_PROPERTY( bool allowExternalEdits READ allowExternalEdits WRITE
|
// Q_PROPERTY( bool allowExternalEdits READ allowExternalEdits WRITE
|
||||||
setAllowExternalEdits NOTIFY allowExternalEditsChanged )
|
// setAllowExternalEdits NOTIFY allowExternalEditsChanged
|
||||||
|
// )
|
||||||
Q_PROPERTY(
|
Q_PROPERTY(
|
||||||
bool universeCenteredRotation READ universeCenteredRotation WRITE
|
bool universeCenteredRotation READ universeCenteredRotation WRITE
|
||||||
setUniverseCenteredRotation NOTIFY universeCenteredRotationChanged )
|
setUniverseCenteredRotation NOTIFY universeCenteredRotationChanged )
|
||||||
@@ -190,8 +191,6 @@ private:
|
|||||||
bool m_gravityActive = false;
|
bool m_gravityActive = false;
|
||||||
bool m_gravityReversed = false;
|
bool m_gravityReversed = false;
|
||||||
bool m_pendingZeroOffsets = true;
|
bool m_pendingZeroOffsets = true;
|
||||||
bool m_pendingSeatedRecenter = false;
|
|
||||||
bool m_selfRequestedSeatedRecenter = false;
|
|
||||||
bool m_dashWasOpenPreviousFrame = false;
|
bool m_dashWasOpenPreviousFrame = false;
|
||||||
bool m_roomSetupModeDetected = false;
|
bool m_roomSetupModeDetected = false;
|
||||||
bool m_seatedModeDetected = false;
|
bool m_seatedModeDetected = false;
|
||||||
@@ -266,7 +265,7 @@ public:
|
|||||||
bool lockYToggle() const;
|
bool lockYToggle() const;
|
||||||
bool lockZToggle() const;
|
bool lockZToggle() const;
|
||||||
bool showLogMatricesButton() const;
|
bool showLogMatricesButton() const;
|
||||||
bool allowExternalEdits() const;
|
// bool allowExternalEdits() const;
|
||||||
bool universeCenteredRotation() const;
|
bool universeCenteredRotation() const;
|
||||||
bool isInitComplete() const;
|
bool isInitComplete() const;
|
||||||
double getHmdYawTotal();
|
double getHmdYawTotal();
|
||||||
@@ -345,7 +344,7 @@ public slots:
|
|||||||
void setLockY( bool value, bool notify = true );
|
void setLockY( bool value, bool notify = true );
|
||||||
void setLockZ( bool value, bool notify = true );
|
void setLockZ( bool value, bool notify = true );
|
||||||
void setShowLogMatricesButton( 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 setUniverseCenteredRotation( bool value, bool notify = true );
|
||||||
|
|
||||||
void shutdown();
|
void shutdown();
|
||||||
@@ -388,7 +387,7 @@ signals:
|
|||||||
void requireLockYChanged( bool value );
|
void requireLockYChanged( bool value );
|
||||||
void requireLockZChanged( bool value );
|
void requireLockZChanged( bool value );
|
||||||
void showLogMatricesButtonChanged( bool value );
|
void showLogMatricesButtonChanged( bool value );
|
||||||
void allowExternalEditsChanged( bool value );
|
// void allowExternalEditsChanged( bool value );
|
||||||
void universeCenteredRotationChanged( bool value );
|
void universeCenteredRotationChanged( bool value );
|
||||||
void offsetProfilesUpdated();
|
void offsetProfilesUpdated();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{ "major": 5, "minor": 7, "patch": 4, "updateMessage": "", "optionalMessage": "" }
|
{ "major": 5, "minor": 8, "patch": 6, "updateMessage": "", "optionalMessage": "" }
|
||||||
|
|||||||
Reference in New Issue
Block a user