From 3f53235b1b8fdd206c399929e37ff3629aa06f94 Mon Sep 17 00:00:00 2001 From: matzman666 Date: Thu, 22 Dec 2016 00:51:17 +0100 Subject: [PATCH] Bugfixes and Improvements. --- bin/win64/res/qml/AudioPage.qml | 17 +- bin/win64/res/qml/ChaperonePage.qml | 60 +++--- bin/win64/res/qml/PlayspacePage.qml | 21 +- bin/win64/res/qml/RevivePage.qml | 201 ++++++++++-------- bin/win64/res/qml/SteamVRPage.qml | 38 +++- src/main.cpp | 1 + src/overlaycontroller.cpp | 4 +- .../MoveCenterTabController.cpp | 51 ++--- 8 files changed, 215 insertions(+), 178 deletions(-) diff --git a/bin/win64/res/qml/AudioPage.qml b/bin/win64/res/qml/AudioPage.qml index 7335043..18def4a 100644 --- a/bin/win64/res/qml/AudioPage.qml +++ b/bin/win64/res/qml/AudioPage.qml @@ -186,24 +186,15 @@ MyStackViewPage { MyText { text: "Name: " } - TextField { + MyTextField { id: pttNewProfileName + keyBoardUID: 590 color: "#cccccc" text: "" Layout.fillWidth: true font.pointSize: 20 - onActiveFocusChanged: { - if (activeFocus) { - OverlayController.showKeyboard(text, 101) - } - } - Connections { - target: OverlayController - onKeyBoardInputSignal: { - if (userValue == 101) { - pttNewProfileName.text = input - } - } + function onInputEvent(input) { + pttNewProfileName.text = input } } } diff --git a/bin/win64/res/qml/ChaperonePage.qml b/bin/win64/res/qml/ChaperonePage.qml index 0fca311..504b94a 100644 --- a/bin/win64/res/qml/ChaperonePage.qml +++ b/bin/win64/res/qml/ChaperonePage.qml @@ -41,24 +41,15 @@ MyStackViewPage { MyText { text: "Name: " } - TextField { + MyTextField { id: chaperoneNewProfileName + keyBoardUID: 390 color: "#cccccc" text: "" Layout.fillWidth: true font.pointSize: 20 - onActiveFocusChanged: { - if (activeFocus) { - OverlayController.showKeyboard(text, 101) - } - } - Connections { - target: OverlayController - onKeyBoardInputSignal: { - if (userValue == 101) { - chaperoneNewProfileName.text = input - } - } + function onInputEvent(input) { + chaperoneNewProfileName.text = input } } } @@ -285,8 +276,11 @@ MyStackViewPage { val = 100.0 } var v = (val/100).toFixed(2) - chaperoneVisibilitySlider.value = v - ChaperoneTabController.setBoundsVisibility(v, false) + if (v <= chaperoneVisibilitySlider.to) { + chaperoneVisibilitySlider.value = v + } else { + ChaperoneTabController.setBoundsVisibility(v, false) + } } text = Math.round(ChaperoneTabController.boundsVisibility * 100) + "%" } @@ -343,8 +337,11 @@ MyStackViewPage { val = 0.0 } var v = val.toFixed(1) - chaperoneFadeDistanceSlider.value = v - ChaperoneTabController.setFadeDistance(v, false) + if (v <= chaperoneFadeDistanceSlider.to) { + chaperoneFadeDistanceSlider.value = v + } else { + ChaperoneTabController.setFadeDistance(v, false) + } } text = ChaperoneTabController.fadeDistance.toFixed(1) } @@ -366,7 +363,7 @@ MyStackViewPage { MySlider { id: chaperoneHeightSlider from: 0.01 - to: 5.0 + to: 15.0 stepSize: 0.01 value: 2.0 Layout.fillWidth: true @@ -404,8 +401,11 @@ MyStackViewPage { val = 0.01 } var v = val.toFixed(2) - chaperoneHeightSlider.value = v - ChaperoneTabController.setHeight(v, false) + if (v <= chaperoneHeightSlider.to) { + chaperoneHeightSlider.value = v + } else { + ChaperoneTabController.setHeight(v, false) + } } text = ChaperoneTabController.height.toFixed(2) } @@ -479,9 +479,15 @@ MyStackViewPage { Component.onCompleted: { chaperoneVisibilitySlider.value = ChaperoneTabController.boundsVisibility - chaperoneFadeDistanceSlider.value = ChaperoneTabController.fadeDistance + var d = ChaperoneTabController.fadeDistance.toFixed(1) + if (d <= chaperoneFadeDistanceSlider.to) { + chaperoneFadeDistanceSlider.value = d + } + chaperoneFadeDistanceText.text = d var h = ChaperoneTabController.height.toFixed(2) - chaperoneHeightSlider.value = h + if (h <= chaperoneHeightSlider.to) { + chaperoneHeightSlider.value = h + } chaperoneHeightText.text = h chaperoneCenterMarkerToggle.checked = ChaperoneTabController.centerMarker chaperonePlaySpaceToggle.checked = ChaperoneTabController.playSpaceMarker @@ -497,13 +503,17 @@ MyStackViewPage { } } onFadeDistanceChanged: { - if (Math.abs(chaperoneFadeDistanceSlider.value - ChaperoneTabController.fadeDistance) > 0.08) { - chaperoneFadeDistanceSlider.value = ChaperoneTabController.fadeDistance + var d = ChaperoneTabController.fadeDistance.toFixed(1) + if (d <= chaperoneFadeDistanceSlider.to && Math.abs(chaperoneFadeDistanceSlider.value - d) > 0.008) { + chaperoneFadeDistanceSlider.value = d } + chaperoneFadeDistanceText.text = d } onHeightChanged: { var h = ChaperoneTabController.height.toFixed(2) - chaperoneHeightSlider.value = h + if (h <= chaperoneHeightSlider.to && Math.abs(chaperoneHeightSlider.value - h) > 0.008) { + chaperoneHeightSlider.value = h + } chaperoneHeightText.text = h } diff --git a/bin/win64/res/qml/PlayspacePage.qml b/bin/win64/res/qml/PlayspacePage.qml index 178d6be..14a1de7 100644 --- a/bin/win64/res/qml/PlayspacePage.qml +++ b/bin/win64/res/qml/PlayspacePage.qml @@ -204,9 +204,9 @@ MyStackViewPage { Layout.preferredWidth: 40 text: "-" onClicked: { - var val = (MoveCenterTabController.rotation - 45) % 360 - if (val < 0) { - val = 360 + val; + var val = MoveCenterTabController.rotation - 45 + if (val < -180) { + val = val + 360; } MoveCenterTabController.rotation = val } @@ -214,8 +214,8 @@ MyStackViewPage { MySlider { id: playspaceRotationSlider - from: 0 - to: 359 + from: -180 + to: 180 stepSize: 1 value: 0 Layout.fillWidth: true @@ -234,9 +234,9 @@ MyStackViewPage { Layout.preferredWidth: 40 text: "+" onClicked: { - var val = (MoveCenterTabController.rotation + 45) % 360 - if (val < 0) { - val = 360 + val; + var val = MoveCenterTabController.rotation + 45 + if (val > 180) { + val = val -360; } MoveCenterTabController.rotation = val } @@ -252,10 +252,7 @@ MyStackViewPage { function onInputEvent(input) { var val = parseInt(input) if (!isNaN(val)) { - val = val % 360 - if (val < 0) { - val = 360 + val; - } + val = val % 180 MoveCenterTabController.rotation = val text = MoveCenterTabController.rotation + "°" } else { diff --git a/bin/win64/res/qml/RevivePage.qml b/bin/win64/res/qml/RevivePage.qml index 95a7901..d59a827 100644 --- a/bin/win64/res/qml/RevivePage.qml +++ b/bin/win64/res/qml/RevivePage.qml @@ -103,7 +103,7 @@ MyStackViewPage { pixelsPerDisplayPixelText.text = val.toFixed(1) } onValueChanged: { - ReviveTabController.setPixelsPerDisplayPixelOverride(value) + ReviveTabController.setPixelsPerDisplayPixelOverride(value.toFixed(1), false) } } @@ -129,82 +129,13 @@ MyStackViewPage { val = 0.1 } var v = val.toFixed(1) - pixelsPerDisplayPixelSlider.value = v - ReviveTabController.setPixelsPerDisplayPixelOverride(v, false) - text = v - } else { - text = ReviveTabController.pixelsPerDisplayPixelOverride.toFixed(1) - } - } - } - } - - ColumnLayout { - spacing: 8 - Layout.topMargin: 12 - Layout.bottomMargin: 8 - RowLayout { - spacing: 8 - - MyText { - Layout.preferredWidth: 347 - text: "Controller Profile:" - } - - MyComboBox { - id: reviveControllerProfileComboBox - Layout.maximumWidth: 557 - Layout.minimumWidth: 557 - Layout.preferredWidth: 557 - Layout.fillWidth: true - model: [""] - onCurrentIndexChanged: { - if (currentIndex > 0) { - reviveControllerApplyProfileButton.enabled = true - reviveControllerDeleteProfileButton.enabled = true + if (v <= pixelsPerDisplayPixelSlider.to) { + pixelsPerDisplayPixelSlider.value = v } else { - reviveControllerApplyProfileButton.enabled = false - reviveControllerDeleteProfileButton.enabled = false + ReviveTabController.setPixelsPerDisplayPixelOverride(v, false) } } - } - - MyPushButton { - id: reviveControllerApplyProfileButton - enabled: false - Layout.preferredWidth: 200 - text: "Apply" - onClicked: { - if (reviveControllerProfileComboBox.currentIndex > 0) { - ReviveTabController.applyControllerProfile(reviveControllerProfileComboBox.currentIndex - 1) - reviveControllerProfileComboBox.currentIndex = 0 - } - } - } - } - RowLayout { - spacing: 8 - Item { - Layout.fillWidth: true - } - MyPushButton { - id: reviveControllerDeleteProfileButton - enabled: false - Layout.preferredWidth: 200 - text: "Delete Profile" - onClicked: { - if (reviveControllerProfileComboBox.currentIndex > 0) { - reviveDeleteProfileDialog.profileIndex = reviveControllerProfileComboBox.currentIndex - 1 - reviveDeleteProfileDialog.open() - } - } - } - MyPushButton { - Layout.preferredWidth: 200 - text: "New Profile" - onClicked: { - reviveNewProfileDialog.openPopup() - } + text = ReviveTabController.pixelsPerDisplayPixelOverride.toFixed(1) } } } @@ -277,7 +208,7 @@ MyStackViewPage { thumbDeadzoneText.text = val.toFixed(2) } onValueChanged: { - ReviveTabController.setThumbDeadzone(value.toFixed(2)) + ReviveTabController.setThumbDeadzone(value.toFixed(2), false) } } @@ -306,12 +237,13 @@ MyStackViewPage { val = 1.0 } var v = val.toFixed(2) - thumbDeadzoneSlider.value = v - ReviveTabController.setThumbDeadzone(v, false) - text = v - } else { - text = ReviveTabController.thumbDeadzone.toFixed(2) + if (v <= thumbDeadzoneSlider.to) { + thumbDeadzoneSlider.value = v + } else { + ReviveTabController.setThumbDeadzone(v, false) + } } + text = ReviveTabController.thumbDeadzone.toFixed(2) } } } @@ -343,7 +275,7 @@ MyStackViewPage { thumbRangeText.text = val.toFixed(2) } onValueChanged: { - ReviveTabController.setThumbRange(value.toFixed(2)) + ReviveTabController.setThumbRange(value.toFixed(2), false) } } @@ -370,12 +302,13 @@ MyStackViewPage { val = 0.01 } var v = val.toFixed(2) - thumbRangeSlider.value = v - ReviveTabController.setThumbRange(v, false) - text = v - } else { - text = ReviveTabController.thumbRange.toFixed(2) + if (v <= thumbRangeSlider.to) { + thumbRangeSlider.value = v + } else { + ReviveTabController.setThumbRange(v, false) + } } + text = ReviveTabController.thumbRange.toFixed(2) } } } @@ -923,6 +856,78 @@ MyStackViewPage { } + + ColumnLayout { + spacing: 8 + Layout.topMargin: 12 + Layout.bottomMargin: 8 + RowLayout { + spacing: 8 + + MyText { + Layout.preferredWidth: 347 + text: "Controller Profile:" + } + + MyComboBox { + id: reviveControllerProfileComboBox + Layout.maximumWidth: 557 + Layout.minimumWidth: 557 + Layout.preferredWidth: 557 + Layout.fillWidth: true + model: [""] + onCurrentIndexChanged: { + if (currentIndex > 0) { + reviveControllerApplyProfileButton.enabled = true + reviveControllerDeleteProfileButton.enabled = true + } else { + reviveControllerApplyProfileButton.enabled = false + reviveControllerDeleteProfileButton.enabled = false + } + } + } + + MyPushButton { + id: reviveControllerApplyProfileButton + enabled: false + Layout.preferredWidth: 200 + text: "Apply" + onClicked: { + if (reviveControllerProfileComboBox.currentIndex > 0) { + ReviveTabController.applyControllerProfile(reviveControllerProfileComboBox.currentIndex - 1) + reviveControllerProfileComboBox.currentIndex = 0 + } + } + } + } + RowLayout { + spacing: 8 + Item { + Layout.fillWidth: true + } + MyPushButton { + id: reviveControllerDeleteProfileButton + enabled: false + Layout.preferredWidth: 200 + text: "Delete Profile" + onClicked: { + if (reviveControllerProfileComboBox.currentIndex > 0) { + reviveDeleteProfileDialog.profileIndex = reviveControllerProfileComboBox.currentIndex - 1 + reviveDeleteProfileDialog.open() + } + } + } + MyPushButton { + Layout.preferredWidth: 200 + text: "New Profile" + onClicked: { + reviveNewProfileDialog.openPopup() + } + } + } + } + + Item { Layout.fillHeight: true } @@ -954,17 +959,23 @@ MyStackViewPage { Component.onCompleted: { pixelsPerDisplayPixelToggle.checked = ReviveTabController.pixelsPerDisplayPixelOverrideEnabled var v = ReviveTabController.pixelsPerDisplayPixelOverride.toFixed(1) - pixelsPerDisplayPixelSlider.value = v + if (v <= pixelsPerDisplayPixelSlider.to) { + pixelsPerDisplayPixelSlider.value = v + } pixelsPerDisplayPixelText.text = v gripButtonModeComboBox.currentIndex = ReviveTabController.gripButtonMode v = ReviveTabController.thumbDeadzone.toFixed(2) - thumbDeadzoneSlider.value = v + if (v <= thumbDeadzoneSlider.to) { + thumbDeadzoneSlider.value = v + } thumbDeadzoneText.text = v v = ReviveTabController.thumbRange.toFixed(2) - thumbRangeSlider.value = v + if (v <= thumbRangeSlider.to) { + thumbRangeSlider.value = v + } thumbRangeText.text = v touchPitchInputField.text = ReviveTabController.touchPitch.toFixed(1) + "°" @@ -986,17 +997,23 @@ MyStackViewPage { } onPixelsPerDisplayPixelOverrideChanged : { var v = ReviveTabController.pixelsPerDisplayPixelOverride.toFixed(1) - pixelsPerDisplayPixelSlider.value = v + if (v <= pixelsPerDisplayPixelSlider.to) { + pixelsPerDisplayPixelSlider.value = v + } pixelsPerDisplayPixelText.text = v } onThumbDeadzoneChanged : { var v = ReviveTabController.thumbDeadzone.toFixed(2) - thumbDeadzoneSlider.value = v + if (v <= thumbDeadzoneSlider.to) { + thumbDeadzoneSlider.value = v + } thumbDeadzoneText.text = v } onThumbRangeChanged : { var v = ReviveTabController.thumbRange.toFixed(2) - thumbRangeSlider.value = v + if (v >= thumbRangeSlider.from && v <= thumbRangeSlider.to) { + thumbRangeSlider.value = v + } thumbRangeText.text = v } onTouchPitchChanged : { diff --git a/bin/win64/res/qml/SteamVRPage.qml b/bin/win64/res/qml/SteamVRPage.qml index 79ebeff..f9d3b74 100644 --- a/bin/win64/res/qml/SteamVRPage.qml +++ b/bin/win64/res/qml/SteamVRPage.qml @@ -68,8 +68,11 @@ MyStackViewPage { } console.debug("Supersampling TextField: valueChanged(", val, ")") var v = val.toFixed(1) - steamvrSupersamplingSlider.value = v - SteamVRTabController.setSuperSampling(v, false) + if (v <= steamvrSupersamplingSlider.to) { + steamvrSupersamplingSlider.value = v + } else { + SteamVRTabController.setSuperSampling(v, false) + } } text = SteamVRTabController.superSampling.toFixed(1) } @@ -135,8 +138,11 @@ MyStackViewPage { } console.debug("Compositor Supersampling TextField: valueChanged(", val, ")") var v = val.toFixed(1) - steamvrCompositorSupersamplingSlider.value = v - SteamVRTabController.setCompositorSuperSampling(v, false) + if (v <= steamvrCompositorSupersamplingSlider.to) { + steamvrCompositorSupersamplingSlider.value = v + } else { + SteamVRTabController.setCompositorSuperSampling(v, false) + } } text = SteamVRTabController.compositorSuperSampling.toFixed(1) } @@ -201,8 +207,16 @@ MyStackViewPage { } Component.onCompleted: { - steamvrSupersamplingSlider.value = SteamVRTabController.superSampling - steamvrCompositorSupersamplingSlider.value = SteamVRTabController.compositorSuperSampling + var s1 = SteamVRTabController.superSampling.toFixed(1) + if (s1 <= steamvrSupersamplingSlider.to) { + steamvrSupersamplingSlider.value = s1 + } + steamvrSupersamplingText.text = s1 + var s2 = SteamVRTabController.compositorSuperSampling.toFixed(1) + if (s2 <= steamvrCompositorSupersamplingSlider.to) { + steamvrCompositorSupersamplingSlider.value = s2 + } + steamvrCompositorSupersamplingText.text = s2 steamvrAllowInterleavedReprojectionToggle.checked = SteamVRTabController.allowInterleavedReprojection steamvrAllowAsyncReprojectionToggle.checked = SteamVRTabController.allowAsyncReprojection steamvrForceReprojectionToggle.checked = SteamVRTabController.forceReprojection @@ -211,14 +225,18 @@ MyStackViewPage { Connections { target: SteamVRTabController onSuperSamplingChanged: { - if (Math.abs(steamvrSupersamplingSlider.value-SteamVRTabController.superSampling) > 0.08) { - steamvrSupersamplingSlider.value = SteamVRTabController.superSampling + var s1 = SteamVRTabController.superSampling.toFixed(1) + if (s1 <= steamvrSupersamplingSlider.to && Math.abs(steamvrSupersamplingSlider.value-s1) > 0.08) { + steamvrSupersamplingSlider.value = s1 } + steamvrSupersamplingText.text = s1 } onCompositorSuperSamplingChanged: { - if (Math.abs(steamvrCompositorSupersamplingSlider.value-SteamVRTabController.compositorSuperSampling) > 0.08) { - steamvrCompositorSupersamplingSlider.value = SteamVRTabController.compositorSuperSampling + var s2 = SteamVRTabController.compositorSuperSampling.toFixed(1) + if (s2 <= steamvrCompositorSupersamplingSlider.to && Math.abs(steamvrCompositorSupersamplingSlider.value-s2) > 0.08) { + steamvrCompositorSupersamplingSlider.value = s2 } + steamvrCompositorSupersamplingText.text = s2 } onAllowInterleavedReprojectionChanged: { steamvrAllowInterleavedReprojectionToggle.checked = SteamVRTabController.allowInterleavedReprojection diff --git a/src/main.cpp b/src/main.cpp index 3ede492..435da62 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -174,6 +174,7 @@ int main(int argc, char *argv[]) { } conf.setRemainingToDefault(); el::Loggers::reconfigureAllLoggers(conf); + LOG(INFO) << "Application started"; LOG(INFO) << "Log Config: " << QDir::toNativeSeparators(logconfigfile).toStdString(); if (!logFilePath.isEmpty()) { LOG(INFO) << "Log File: " << logFilePath; diff --git a/src/overlaycontroller.cpp b/src/overlaycontroller.cpp index 96afe8f..446e880 100644 --- a/src/overlaycontroller.cpp +++ b/src/overlaycontroller.cpp @@ -407,7 +407,7 @@ void OverlayController::RotateUniverseCenter(vr::ETrackingUniverseOrigin univers vr::HmdMatrix34_t rotMat; vr::HmdMatrix34_t newPos; - utils::initRotationMatrix(rotMat, 0, yAngle); + utils::initRotationMatrix(rotMat, 1, yAngle); utils::matMul33(newPos, rotMat, curPos); newPos.m[0][3] = curPos.m[0][3]; newPos.m[1][3] = curPos.m[1][3]; @@ -464,7 +464,7 @@ void OverlayController::RotateCollisionBounds(float angle, bool commit) { vr::VRChaperoneSetup()->GetWorkingCollisionBoundsInfo(collisionBounds, &collisionBoundsCount); vr::HmdMatrix34_t rotMat; - utils::initRotationMatrix(rotMat, 0, angle); + utils::initRotationMatrix(rotMat, 1, angle); for (unsigned b = 0; b < collisionBoundsCount; b++) { for (unsigned c = 0; c < 4; c++) { auto& corner = collisionBounds[b].vCorners[c]; diff --git a/src/tabcontrollers/MoveCenterTabController.cpp b/src/tabcontrollers/MoveCenterTabController.cpp index f36f208..26977d2 100644 --- a/src/tabcontrollers/MoveCenterTabController.cpp +++ b/src/tabcontrollers/MoveCenterTabController.cpp @@ -90,35 +90,38 @@ void MoveCenterTabController::setAdjustChaperone(bool value, bool notify) { m_adjustChaperone = value; if (m_trackingUniverse == vr::TrackingUniverseStanding) { vr::VRChaperoneSetup()->RevertWorkingCopy(); + float offsetdir; if (m_adjustChaperone) { - if (m_offsetX != 0.0f) { - parent->AddOffsetToCollisionBounds(0, -m_offsetX, false); - } - if (m_offsetY != 0.0f) { - parent->AddOffsetToCollisionBounds(1, -m_offsetY, false); - } - if (m_offsetZ != 0.0f) { - parent->AddOffsetToCollisionBounds(2, -m_offsetZ, false); - } - if (m_rotation != 0) { - float angle = m_rotation * 2 * M_PI / 360.0; - parent->RotateCollisionBounds(-angle, false); - } + offsetdir = -1.0; } else { - if (m_offsetX != 0.0f) { - parent->AddOffsetToCollisionBounds(0, m_offsetX, false); + offsetdir = 1.0; + } + + if (m_offsetX != 0.0f) { + if (m_adjustChaperone || m_rotation == 0) { + parent->AddOffsetToCollisionBounds(0, offsetdir * m_offsetX, false); + } else { + auto angle = m_rotation * 2 * M_PI / 360.0; + parent->AddOffsetToCollisionBounds(0, offsetdir * m_offsetX * std::cos(angle), false); + parent->AddOffsetToCollisionBounds(2, offsetdir * m_offsetX * std::sin(angle), false); } - if (m_offsetY != 0.0f) { - parent->AddOffsetToCollisionBounds(1, m_offsetY, false); - } - if (m_offsetZ != 0.0f) { - parent->AddOffsetToCollisionBounds(2, m_offsetZ, false); - } - if (m_rotation != 0) { - float angle = m_rotation * 2 * M_PI / 360.0; - parent->RotateCollisionBounds(angle, false); + } + if (m_offsetY != 0.0f) { + parent->AddOffsetToCollisionBounds(1, offsetdir * m_offsetY, false); + } + if (m_offsetZ != 0.0f) { + if (m_adjustChaperone || m_rotation == 0) { + parent->AddOffsetToCollisionBounds(2, offsetdir * m_offsetZ, false); + } else { + auto angle = m_rotation * 2 * M_PI / 360.0; + parent->AddOffsetToCollisionBounds(2, offsetdir * m_offsetZ * std::cos(angle), false); + parent->AddOffsetToCollisionBounds(0, -offsetdir * m_offsetZ * std::sin(angle), false); } } + if (m_rotation != 0) { + float angle = m_rotation * 2 * M_PI / 360.0; + parent->RotateCollisionBounds(offsetdir * angle, false); + } vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live); } auto settings = OverlayController::appSettings();