* 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:
ykeara
2024-02-27 18:03:22 -06:00
committed by GitHub
parent cee78f2194
commit ec865f5127
15 changed files with 74 additions and 112 deletions
+15 -2
View File
@@ -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 );
}
}
}
+1
View File
@@ -131,6 +131,7 @@ private:
QString m_updateMessage = "";
QString m_optionalMessage = "";
QString m_versionCheckText = "";
bool m_incomingReset = false;
QUrl m_runtimePathUrl;
-14
View File
@@ -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
}
@@ -85,7 +85,7 @@ GroupBox {
if(!c1){
steamvrCameraBoundsToggle.enabled = false;
steamvrCameraRoomToggle.enabled = false;
steamvrCameraContToggle.enabled = false;
}
}
@@ -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
}
@@ -52,7 +52,7 @@ GroupBox {
MySlider {
id: brightnessSlider
from: 0.01
from: 0.2
to: 1.0
stepSize: 0.01
value: 1.0
+34 -75
View File
@@ -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 )
// This really covers standing reset as well
updateChaperoneResetData();
if ( m_offsetY != 0 )
{
LOG( INFO ) << "steamvr center?";
m_selfRequestedSeatedRecenter = true;
vr::VRChaperone()->ResetZeroPose( vr::TrackingUniverseSeated );
m_offsetY = -m_offsetY;
updateSpace();
updateChaperoneResetData();
}
else
{
LOG( INFO ) << "not our receneter";
updateSeatedResetData();
}
// 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<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;
// set offsetUniverseCenter to the current angle
+6 -7
View File
@@ -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 @@ private:
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 @@ public:
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 @@ signals:
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();
};