From 5452144157482e1b8f47bb9c6c415ff2470f2f6c Mon Sep 17 00:00:00 2001 From: ykeara Date: Sun, 1 Sep 2019 02:13:38 -0500 Subject: [PATCH] Velocity fade dependent setting removal (#282) * removed velocity fade dependent fade. * changed floating point comparisons * explicit conversion changes * removed head speed calculation from overlaycontroller as no longer used --- src/overlaycontroller.cpp | 13 +- src/res/qml/ChaperoneWarningsPage.qml | 105 ------------ src/tabcontrollers/ChaperoneTabController.cpp | 156 ++++-------------- src/tabcontrollers/ChaperoneTabController.h | 30 +--- 4 files changed, 32 insertions(+), 272 deletions(-) diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index 83cdfb5..2b5541e 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -1030,22 +1030,13 @@ void OverlayController::mainEventLoop() rightSpeed = std::sqrt( vel[0] * vel[0] + vel[1] * vel[1] + vel[2] * vel[2] ); } - auto hmdSpeed = 0.0f; - if ( devicePoses[vr::k_unTrackedDeviceIndex_Hmd].bPoseIsValid - && devicePoses[vr::k_unTrackedDeviceIndex_Hmd].eTrackingResult - == vr::TrackingResult_Running_OK ) - { - auto& vel = devicePoses[vr::k_unTrackedDeviceIndex_Hmd].vVelocity.v; - hmdSpeed - = std::sqrt( vel[0] * vel[0] + vel[1] * vel[1] + vel[2] * vel[2] ); - } + m_moveCenterTabController.eventLoopTick( vr::VRCompositor()->GetTrackingSpace(), devicePoses ); m_utilitiesTabController.eventLoopTick(); m_statisticsTabController.eventLoopTick( devicePoses, leftSpeed, rightSpeed ); - m_chaperoneTabController.eventLoopTick( - devicePoses, leftSpeed, rightSpeed, hmdSpeed ); + m_chaperoneTabController.eventLoopTick( devicePoses ); m_audioTabController.eventLoopTick(); if ( vr::VROverlay()->IsDashboardVisible() ) diff --git a/src/res/qml/ChaperoneWarningsPage.qml b/src/res/qml/ChaperoneWarningsPage.qml index ba41794..2ad9fdb 100644 --- a/src/res/qml/ChaperoneWarningsPage.qml +++ b/src/res/qml/ChaperoneWarningsPage.qml @@ -384,95 +384,6 @@ MyStackViewPage { } } - - ColumnLayout { - spacing: 0 - MyToggleButton { - id: velModifierToggle - text: "Velocity Dependent Fade/Activation Distance" - onCheckedChanged: { - ChaperoneTabController.chaperoneVelocityModifierEnabled = checked - } - } - RowLayout { - MyText { - text: "Distance Modifier: " - Layout.preferredWidth: 250 - } - MyPushButton2 { - id: velModifierMinusButton - Layout.preferredWidth: 40 - text: "-" - onClicked: { - var val = ChaperoneTabController.chaperoneVelocityModifier - 0.01 - if (val < 0.0) { - val = 0.0; - } - ChaperoneTabController.chaperoneVelocityModifier = val.toFixed(2) - } - } - - MySlider { - id: velModifierSlider - from: 0 - to: 1.0 - stepSize: 0.01 - value: 0.3 - Layout.fillWidth: true - onPositionChanged: { - var val = this.from + ( this.position * (this.to - this.from)) - velModifierText.text = val.toFixed(2) - } - onValueChanged: { - var val = velModifierSlider.value.toFixed(2) - if (val < 0.0) { - val = 0.0 - } - ChaperoneTabController.chaperoneVelocityModifier = val - velModifierText.text = val - } - } - - MyPushButton2 { - id: velModifierPlusButton - Layout.preferredWidth: 40 - text: "+" - onClicked: { - var val = ChaperoneTabController.chaperoneVelocityModifier + 0.01 - if (val > 1.0) { - val = 1.0; - } - ChaperoneTabController.chaperoneVelocityModifier = val.toFixed(2) - } - } - - MyTextField { - id: velModifierText - text: "0.00" - keyBoardUID: 804 - Layout.preferredWidth: 100 - Layout.leftMargin: 10 - horizontalAlignment: Text.AlignHCenter - function onInputEvent(input) { - var val = parseFloat(input) - if (!isNaN(val)) { - if (val < 0.0) { - val = 0.0 - } - val = val.toFixed(2) - ChaperoneTabController.chaperoneVelocityModifier = val - text = val - } else { - text = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2) - } - } - } - } - } - - - Item { Layout.fillHeight: true; Layout.fillWidth: true } - Component.onCompleted: { switchBeginnerToggle.checked = ChaperoneTabController.chaperoneSwitchToBeginnerEnabled var d = ChaperoneTabController.chaperoneSwitchToBeginnerDistance.toFixed(2) @@ -500,12 +411,6 @@ MyStackViewPage { openDashboardDistanceSlider.value = d } openDashboardDistanceText.text = d - velModifierToggle.checked = ChaperoneTabController.chaperoneVelocityModifierEnabled - d = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2) - if (d <= velModifierSlider.to) { - velModifierSlider.value = d - } - velModifierText.text = d } Connections { @@ -553,16 +458,6 @@ MyStackViewPage { } openDashboardDistanceText.text = d } - onChaperoneVelocityModifierEnabledChanged: { - velModifierToggle.checked = ChaperoneTabController.chaperoneVelocityModifierEnabled - } - onChaperoneVelocityModifierChanged: { - var d = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2) - if (d <= velModifierSlider.to && Math.abs(velModifierSlider.value - d) > 0.0008) { - velModifierSlider.value = d - } - velModifierText.text = d - } } } } diff --git a/src/tabcontrollers/ChaperoneTabController.cpp b/src/tabcontrollers/ChaperoneTabController.cpp index d21fe0b..235a1d2 100644 --- a/src/tabcontrollers/ChaperoneTabController.cpp +++ b/src/tabcontrollers/ChaperoneTabController.cpp @@ -33,18 +33,13 @@ void ChaperoneTabController::initStage1() = settings->value( "chaperoneShowDashboardEnabled", false ).toBool(); m_chaperoneShowDashboardDistance = settings->value( "chaperoneShowDashboardDistance", 0.5f ).toFloat(); - m_enableChaperoneVelocityModifier - = settings->value( "chaperoneVelocityModifierEnabled", false ).toBool(); - m_chaperoneVelocityModifier - = settings->value( "chaperoneVelocityModifier", 0.3f ).toFloat(); - m_chaperoneVelocityModifierCurrent = 1.0f; m_disableChaperone = settings->value( "disableChaperone", false ).toBool(); m_fadeDistanceRemembered = settings->value( "fadeDistanceRemembered", 0.5f ).toFloat(); settings->endGroup(); reloadChaperoneProfiles(); - eventLoopTick( nullptr, 0.0f, 0.0f, 0.0f ); + eventLoopTick( nullptr ); } void ChaperoneTabController::initStage2( OverlayController* var_parent ) @@ -210,12 +205,6 @@ void ChaperoneTabController::reloadChaperoneProfiles() entry.chaperoneShowDashboardDistance = settings->value( "chaperoneShowDashboardDistance", 0.5f ) .toFloat(); - entry.enableChaperoneVelocityModifier - = settings->value( "chaperoneVelocityModifierEnabled", false ) - .toBool(); - entry.chaperoneVelocityModifier - = settings->value( "chaperoneVelocityModifier", 0.3f ) - .toFloat(); } } settings->endArray(); @@ -343,10 +332,6 @@ void ChaperoneTabController::saveChaperoneProfiles() p.enableChaperoneShowDashboard ); settings->setValue( "chaperoneShowDashboardDistance", p.chaperoneShowDashboardDistance ); - settings->setValue( "chaperoneVelocityModifierEnabled", - p.enableChaperoneVelocityModifier ); - settings->setValue( "chaperoneVelocityModifier", - p.chaperoneVelocityModifier ); } i++; } @@ -373,8 +358,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) // Switch to Beginner Mode if ( m_enableChaperoneSwitchToBeginner ) { - float activationDistance = m_chaperoneSwitchToBeginnerDistance - * m_chaperoneVelocityModifierCurrent; + float activationDistance = m_chaperoneSwitchToBeginnerDistance; if ( distance <= activationDistance && m_isHMDActive && !m_chaperoneSwitchToBeginnerActive ) @@ -443,8 +427,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) if ( m_enableChaperoneHapticFeedback ) { - float activationDistance = m_chaperoneHapticFeedbackDistance - * m_chaperoneVelocityModifierCurrent; + float activationDistance = m_chaperoneHapticFeedbackDistance; if ( distance <= activationDistance && proxSensorOverrideState ) { @@ -511,8 +494,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) if ( m_enableChaperoneAlarmSound ) { // LOG(WARNING) << "In alarm"; - float activationDistance = m_chaperoneAlarmSoundDistance - * m_chaperoneVelocityModifierCurrent; + float activationDistance = m_chaperoneAlarmSoundDistance; if ( distance <= activationDistance && proxSensorOverrideState ) { @@ -547,8 +529,7 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) // Show Dashboard if ( m_enableChaperoneShowDashboard ) { - float activationDistance = m_chaperoneShowDashboardDistance - * m_chaperoneVelocityModifierCurrent; + float activationDistance = m_chaperoneShowDashboardDistance; if ( distance <= activationDistance && !m_chaperoneShowDashboardActive ) { if ( !vr::VROverlay()->IsDashboardVisible() ) @@ -567,32 +548,8 @@ void ChaperoneTabController::handleChaperoneWarnings( float distance ) } void ChaperoneTabController::eventLoopTick( - vr::TrackedDevicePose_t* devicePoses, - float leftSpeed, - float rightSpeed, - float hmdSpeed ) + vr::TrackedDevicePose_t* devicePoses ) { - m_chaperoneVelocityModifierCurrent = 1.0f; - if ( m_enableChaperoneVelocityModifier ) - { - float mod = m_chaperoneVelocityModifier - * std::max( { leftSpeed, rightSpeed, hmdSpeed } ); - if ( mod > 0.02f ) - { - m_chaperoneVelocityModifierCurrent += mod; - } - } - float newFadeDistance = m_fadeDistance * m_chaperoneVelocityModifierCurrent; - if ( m_fadeDistanceModified != newFadeDistance ) - { - m_fadeDistanceModified = newFadeDistance; - vr::VRSettings()->SetFloat( - vr::k_pch_CollisionBounds_Section, - vr::k_pch_CollisionBounds_FadeDistance_Float, - m_fadeDistanceModified ); - vr::VRSettings()->Sync(); - } - if ( devicePoses ) { m_isHMDActive = false; @@ -702,23 +659,16 @@ void ChaperoneTabController::eventLoopTick( vrSettingsError ); } setBoundsVisibility( vis / 255.0f ); - if ( m_chaperoneVelocityModifierCurrent == 1.0f ) + if ( vrSettingsError != vr::VRSettingsError_None ) { - auto fd = vr::VRSettings()->GetFloat( - vr::k_pch_CollisionBounds_Section, - vr::k_pch_CollisionBounds_FadeDistance_Float, - &vrSettingsError ); - if ( vrSettingsError != vr::VRSettingsError_None ) - { - LOG( WARNING ) - << "Could not read \"" - << vr::k_pch_CollisionBounds_FadeDistance_Float - << "\" setting: " - << vr::VRSettings()->GetSettingsErrorNameFromEnum( - vrSettingsError ); - } - setFadeDistance( fd ); + LOG( WARNING ) + << "Could not read \"" + << vr::k_pch_CollisionBounds_FadeDistance_Float + << "\" setting: " + << vr::VRSettings()->GetSettingsErrorNameFromEnum( + vrSettingsError ); } + auto cm = vr::VRSettings()->GetBool( vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_CenterMarkerOn_Bool, @@ -764,7 +714,7 @@ float ChaperoneTabController::boundsVisibility() const void ChaperoneTabController::setBoundsVisibility( float value, bool notify ) { - if ( m_visibility != value ) + if ( fabs( static_cast( m_visibility - m_visibility ) ) > 0.005 ) { if ( value <= 0.3f ) { @@ -794,7 +744,7 @@ float ChaperoneTabController::fadeDistance() const void ChaperoneTabController::setFadeDistance( float value, bool notify ) { - if ( m_fadeDistance != value ) + if ( fabs( static_cast( m_fadeDistance - value ) ) > 0.005 ) { m_fadeDistance = value; vr::VRSettings()->SetFloat( @@ -816,7 +766,7 @@ float ChaperoneTabController::height() const void ChaperoneTabController::setHeight( float value, bool notify ) { - if ( m_height != value ) + if ( fabs( static_cast( m_height - value ) ) > 0.005 ) { m_height = value; // TODO revert? @@ -853,7 +803,7 @@ void ChaperoneTabController::setHeight( float value, bool notify ) void ChaperoneTabController::updateHeight( float value, bool notify ) { - if ( m_height != value ) + if ( fabs( static_cast( m_height - value ) ) > 0.005 ) { m_height = value; if ( notify ) @@ -966,16 +916,6 @@ float ChaperoneTabController::chaperoneShowDashboardDistance() const return m_chaperoneShowDashboardDistance; } -bool ChaperoneTabController::isChaperoneVelocityModifierEnabled() const -{ - return m_enableChaperoneVelocityModifier; -} - -float ChaperoneTabController::chaperoneVelocityModifier() const -{ - return m_chaperoneVelocityModifier; -} - Q_INVOKABLE unsigned ChaperoneTabController::getChaperoneProfileCount() { return static_cast( chaperoneProfiles.size() ); @@ -1051,7 +991,9 @@ void ChaperoneTabController::setChaperoneSwitchToBeginnerEnabled( bool value, void ChaperoneTabController::setChaperoneSwitchToBeginnerDistance( float value, bool notify ) { - if ( m_chaperoneSwitchToBeginnerDistance != value ) + if ( fabs( static_cast( m_chaperoneSwitchToBeginnerDistance + - value ) ) + > 0.005 ) { m_chaperoneSwitchToBeginnerDistance = value; auto settings = OverlayController::appSettings(); @@ -1096,7 +1038,9 @@ void ChaperoneTabController::setChaperoneHapticFeedbackEnabled( bool value, void ChaperoneTabController::setChaperoneHapticFeedbackDistance( float value, bool notify ) { - if ( m_chaperoneHapticFeedbackDistance != value ) + if ( fabs( + static_cast( m_chaperoneHapticFeedbackDistance - value ) ) + > 0.005 ) { m_chaperoneHapticFeedbackDistance = value; auto settings = OverlayController::appSettings(); @@ -1192,7 +1136,8 @@ void ChaperoneTabController::setChaperoneAlarmSoundAdjustVolume( bool value, void ChaperoneTabController::setChaperoneAlarmSoundDistance( float value, bool notify ) { - if ( m_chaperoneAlarmSoundDistance != value ) + if ( fabs( static_cast( m_chaperoneAlarmSoundDistance - value ) ) + > 0.005 ) { m_chaperoneAlarmSoundDistance = value; auto settings = OverlayController::appSettings(); @@ -1233,7 +1178,8 @@ void ChaperoneTabController::setChaperoneShowDashboardEnabled( bool value, void ChaperoneTabController::setChaperoneShowDashboardDistance( float value, bool notify ) { - if ( m_chaperoneShowDashboardDistance != value ) + if ( fabs( static_cast( m_chaperoneShowDashboardDistance - value ) ) + > 0.005 ) { m_chaperoneShowDashboardDistance = value; auto settings = OverlayController::appSettings(); @@ -1250,46 +1196,6 @@ void ChaperoneTabController::setChaperoneShowDashboardDistance( float value, } } -void ChaperoneTabController::setChaperoneVelocityModifierEnabled( bool value, - bool notify ) -{ - if ( m_enableChaperoneVelocityModifier != value ) - { - m_enableChaperoneVelocityModifier = value; - auto settings = OverlayController::appSettings(); - settings->beginGroup( "chaperoneSettings" ); - settings->setValue( "chaperoneVelocityModifierEnabled", - m_enableChaperoneVelocityModifier ); - settings->endGroup(); - settings->sync(); - if ( notify ) - { - emit chaperoneVelocityModifierEnabledChanged( - m_enableChaperoneVelocityModifier ); - } - } -} - -void ChaperoneTabController::setChaperoneVelocityModifier( float value, - bool notify ) -{ - if ( m_chaperoneVelocityModifier != value ) - { - m_chaperoneVelocityModifier = value; - auto settings = OverlayController::appSettings(); - settings->beginGroup( "chaperoneSettings" ); - settings->setValue( "chaperoneVelocityModifier", - m_chaperoneVelocityModifier ); - settings->endGroup(); - settings->sync(); - if ( notify ) - { - emit chaperoneVelocityModifierChanged( - m_chaperoneVelocityModifier ); - } - } -} - void ChaperoneTabController::setDisableChaperone( bool value, bool notify ) { if ( m_disableChaperone != value ) @@ -1501,9 +1407,6 @@ void ChaperoneTabController::addChaperoneProfile( profile->enableChaperoneShowDashboard = m_enableChaperoneShowDashboard; profile->chaperoneShowDashboardDistance = m_chaperoneShowDashboardDistance; - profile->enableChaperoneVelocityModifier - = m_enableChaperoneVelocityModifier; - profile->chaperoneVelocityModifier = m_chaperoneVelocityModifier; } saveChaperoneProfiles(); OverlayController::appSettings()->sync(); @@ -1599,9 +1502,6 @@ void ChaperoneTabController::applyChaperoneProfile( unsigned index ) profile.chaperoneShowDashboardDistance ); setChaperoneShowDashboardEnabled( profile.enableChaperoneShowDashboard ); - setChaperoneVelocityModifier( profile.chaperoneVelocityModifier ); - setChaperoneVelocityModifierEnabled( - profile.enableChaperoneVelocityModifier ); } vr::VRSettings()->Sync( true ); updateHeight( getBoundsMaxY() ); diff --git a/src/tabcontrollers/ChaperoneTabController.h b/src/tabcontrollers/ChaperoneTabController.h index 227f326..4dbc443 100644 --- a/src/tabcontrollers/ChaperoneTabController.h +++ b/src/tabcontrollers/ChaperoneTabController.h @@ -6,6 +6,7 @@ #include #include #include +#include class QQuickWindow; // application namespace @@ -60,8 +61,6 @@ struct ChaperoneProfile float chaperoneAlarmSoundDistance = 0.0f; bool enableChaperoneShowDashboard = false; float chaperoneShowDashboardDistance = 0.0f; - bool enableChaperoneVelocityModifier = false; - float chaperoneVelocityModifier = 0.0f; }; class ChaperoneTabController : public QObject @@ -125,20 +124,11 @@ class ChaperoneTabController : public QObject WRITE setChaperoneShowDashboardDistance NOTIFY chaperoneShowDashboardDistanceChanged ) - Q_PROPERTY( bool chaperoneVelocityModifierEnabled READ - isChaperoneVelocityModifierEnabled WRITE - setChaperoneVelocityModifierEnabled NOTIFY - chaperoneVelocityModifierEnabledChanged ) - Q_PROPERTY( float chaperoneVelocityModifier READ chaperoneVelocityModifier - WRITE setChaperoneVelocityModifier NOTIFY - chaperoneVelocityModifierChanged ) - private: OverlayController* parent; float m_visibility = 0.6f; float m_fadeDistance = 0.7f; - float m_fadeDistanceModified = 0.7f; float m_height = 2.0f; bool m_centerMarker = false; bool m_playSpaceMarker = false; @@ -166,10 +156,6 @@ private: float m_chaperoneShowDashboardDistance = 0.5f; bool m_chaperoneShowDashboardActive = false; - bool m_enableChaperoneVelocityModifier = false; - float m_chaperoneVelocityModifier = 0.0f; - float m_chaperoneVelocityModifierCurrent = 1.0f; - unsigned settingsUpdateCounter = 0; bool m_isHapticGood = true; @@ -194,10 +180,7 @@ public: void initStage1(); void initStage2( OverlayController* parent ); - void eventLoopTick( vr::TrackedDevicePose_t* devicePoses, - float leftSpeed, - float rightSpeed, - float hmdSpeed ); + void eventLoopTick( vr::TrackedDevicePose_t* devicePoses ); void handleChaperoneWarnings( float distance ); float boundsVisibility() const; @@ -229,9 +212,6 @@ public: bool isChaperoneShowDashboardEnabled() const; float chaperoneShowDashboardDistance() const; - bool isChaperoneVelocityModifierEnabled() const; - float chaperoneVelocityModifier() const; - void reloadChaperoneProfiles(); void saveChaperoneProfiles(); @@ -269,9 +249,6 @@ public slots: void setChaperoneShowDashboardEnabled( bool value, bool notify = true ); void setChaperoneShowDashboardDistance( float value, bool notify = true ); - void setChaperoneVelocityModifierEnabled( bool value, bool notify = true ); - void setChaperoneVelocityModifier( float value, bool notify = true ); - void flipOrientation( double degrees = 180 ); void reloadFromDisk(); @@ -316,9 +293,6 @@ signals: void chaperoneShowDashboardEnabledChanged( bool value ); void chaperoneShowDashboardDistanceChanged( float value ); - void chaperoneVelocityModifierEnabledChanged( bool value ); - void chaperoneVelocityModifierChanged( float value ); - void chaperoneProfilesUpdated(); };