From a99f9310da11a5e60141c65da91e64351181067f Mon Sep 17 00:00:00 2001 From: MuteTab Date: Thu, 19 Jul 2018 12:41:24 -0700 Subject: [PATCH 1/9] Add first-run checks for flying settings. --- interface/src/Application.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 311c08b858..a1d4a1e8e2 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4838,7 +4838,13 @@ void Application::loadSettings() { } } - isFirstPerson = (qApp->isHMDMode()); + isFirstPerson = (qApp->isHMDMode()) + + // Flying should be disabled by default in HMD mode on first run, and it + // should be enabled by default in desktop mode, always. + auto myAvatar = getMyAvatar(); + myAvatar->setFlyingEnabled((isFirstPerson)?false:true); + } else { // if this is not the first run, the camera will be initialized differently depending on user settings From 63089df2dd64b2b4bd1c43422762a9dc26aa9ee0 Mon Sep 17 00:00:00 2001 From: MuteTab Date: Thu, 19 Jul 2018 12:42:45 -0700 Subject: [PATCH 2/9] Re-added missing semi-colon. --- interface/src/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a1d4a1e8e2..216ec9ac42 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4838,7 +4838,7 @@ void Application::loadSettings() { } } - isFirstPerson = (qApp->isHMDMode()) + isFirstPerson = (qApp->isHMDMode()); // Flying should be disabled by default in HMD mode on first run, and it // should be enabled by default in desktop mode, always. From b70b4244475f66a4c409d6cbbb33c7296a7dcb91 Mon Sep 17 00:00:00 2001 From: MuteTab Date: Thu, 19 Jul 2018 14:27:49 -0700 Subject: [PATCH 3/9] Added new menu classification for VR vs non-VR movement. --- interface/src/ui/PreferencesDialog.cpp | 52 ++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index d0fe92ea00..16b4b270f3 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -266,20 +266,15 @@ void setupPreferences() { preferences->addPreference(new SliderPreference(FACE_TRACKING, "Eye Deflection", getter, setter)); } - static const QString MOVEMENT{ "VR Movement" }; + static const QString MOVEMENT{ "Movement" }; { static const QString movementsControlChannel = QStringLiteral("Hifi-Advanced-Movement-Disabler"); auto getter = [=]()->bool { return myAvatar->useAdvancedMovementControls(); }; auto setter = [=](bool value) { myAvatar->setUseAdvancedMovementControls(value); }; preferences->addPreference(new CheckPreference(MOVEMENT, - QStringLiteral("Advanced movement for hand controllers"), - getter, setter)); - } - { - auto getter = [=]()->bool { return myAvatar->getFlyingEnabled(); }; - auto setter = [=](bool value) { myAvatar->setFlyingEnabled(value); }; - preferences->addPreference(new CheckPreference(MOVEMENT, "Flying & jumping", getter, setter)); + QStringLiteral("Advanced movement for hand controllers"), + getter, setter)); } { auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; @@ -307,6 +302,47 @@ void setupPreferences() { preferences->addPreference(preference); } + static const QString VR_MOVEMENT{ "VR Movement" }; + { + + static const QString movementsControlChannel = QStringLiteral("Hifi-Advanced-Movement-Disabler"); + auto getter = [=]()->bool { return myAvatar->useAdvancedMovementControls(); }; + auto setter = [=](bool value) { myAvatar->setUseAdvancedMovementControls(value); }; + preferences->addPreference(new CheckPreference(VR_MOVEMENT, + QStringLiteral("Advanced movement for hand controllers"), + getter, setter)); + } + { + auto getter = [=]()->bool { return myAvatar->getFlyingEnabled(); }; + auto setter = [=](bool value) { myAvatar->setFlyingEnabled(value); }; + preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying", getter, setter)); + } + { + auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; + auto setter = [=](int value) { myAvatar->setSnapTurn(value == 0); }; + auto preference = new RadioButtonsPreference(VR_MOVEMENT, "Snap turn / Smooth turn", getter, setter); + QStringList items; + items << "Snap turn" << "Smooth turn"; + preference->setItems(items); + preferences->addPreference(preference); + } + { + auto getter = [=]()->float { return myAvatar->getUserHeight(); }; + auto setter = [=](float value) { myAvatar->setUserHeight(value); }; + auto preference = new SpinnerPreference(VR_MOVEMENT, "User real-world height (meters)", getter, setter); + preference->setMin(1.0f); + preference->setMax(2.2f); + preference->setDecimals(3); + preference->setStep(0.001f); + preferences->addPreference(preference); + } + { + auto preference = new ButtonPreference(VR_MOVEMENT, "RESET SENSORS", [] { + qApp->resetSensors(); + }); + preferences->addPreference(preference); + } + static const QString AVATAR_CAMERA{ "Mouse Sensitivity" }; { auto getter = [=]()->float { return myAvatar->getPitchSpeed(); }; From 97e5d65592033d752d95915e09729f88f1939659 Mon Sep 17 00:00:00 2001 From: MuteTab Date: Thu, 19 Jul 2018 14:30:06 -0700 Subject: [PATCH 4/9] Added conditional check for VR vs non-VR menu. --- interface/resources/qml/hifi/tablet/ControllerSettings.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/tablet/ControllerSettings.qml b/interface/resources/qml/hifi/tablet/ControllerSettings.qml index 135c1379e2..0a45feb61f 100644 --- a/interface/resources/qml/hifi/tablet/ControllerSettings.qml +++ b/interface/resources/qml/hifi/tablet/ControllerSettings.qml @@ -299,7 +299,7 @@ Item { anchors.fill: stackView id: controllerPrefereneces objectName: "TabletControllerPreferences" - showCategories: ["VR Movement", "Game Controller", "Sixense Controllers", "Perception Neuron", "Leap Motion"] + showCategories: [( (HMD.active) ? "VR Movement" : "Movement"), "Game Controller", "Sixense Controllers", "Perception Neuron", "Leap Motion"] categoryProperties: { "VR Movement" : { "User real-world height (meters)" : { "anchors.right" : "undefined" }, From 3080539b63952024e1dcf496a6d0e5ba509d724e Mon Sep 17 00:00:00 2001 From: MuteTab Date: Thu, 19 Jul 2018 14:40:20 -0700 Subject: [PATCH 5/9] Make getFlyingEnabled() always true when in desktop. --- interface/src/avatar/MyAvatar.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index fd121055a1..91be9ec4cc 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2837,7 +2837,8 @@ bool MyAvatar::isInAir() { bool MyAvatar::getFlyingEnabled() { // May return true even if client is not allowed to fly in the zone. - return _enableFlying; + // Should always return true if in desktop mode. + return (qApp->isHMDMode()) ? _enableFlying : true; } // Public interface for targetscale From 8d65e14193374c26e20c8f22064409412711ebd4 Mon Sep 17 00:00:00 2001 From: MuteTab Date: Thu, 19 Jul 2018 14:43:46 -0700 Subject: [PATCH 6/9] Remove one change, turned out to be unnecessary. --- interface/src/avatar/MyAvatar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 91be9ec4cc..69625d403f 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2822,6 +2822,7 @@ void MyAvatar::setFlyingEnabled(bool enabled) { return; } + // Flying should always be enabled for desktop users, preference may be set for HMD. _enableFlying = enabled; } @@ -2837,8 +2838,7 @@ bool MyAvatar::isInAir() { bool MyAvatar::getFlyingEnabled() { // May return true even if client is not allowed to fly in the zone. - // Should always return true if in desktop mode. - return (qApp->isHMDMode()) ? _enableFlying : true; + return _enableFlying; } // Public interface for targetscale From dfcf47e8ee0e64b9e394a773bcf35f622f348785 Mon Sep 17 00:00:00 2001 From: MuteTab Date: Thu, 19 Jul 2018 14:44:32 -0700 Subject: [PATCH 7/9] Removed useless comment. --- interface/src/avatar/MyAvatar.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 69625d403f..fd121055a1 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2822,7 +2822,6 @@ void MyAvatar::setFlyingEnabled(bool enabled) { return; } - // Flying should always be enabled for desktop users, preference may be set for HMD. _enableFlying = enabled; } From 3108d650de08209360d339665bae5bfcf40735b6 Mon Sep 17 00:00:00 2001 From: r3tk0n <39922250+r3tk0n@users.noreply.github.com> Date: Fri, 20 Jul 2018 08:29:11 -0700 Subject: [PATCH 8/9] Restore original menu string for flying Restore the original menu string for flying as it apparently *does* effect jumping. --- interface/src/ui/PreferencesDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 16b4b270f3..135b59a152 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -315,7 +315,7 @@ void setupPreferences() { { auto getter = [=]()->bool { return myAvatar->getFlyingEnabled(); }; auto setter = [=](bool value) { myAvatar->setFlyingEnabled(value); }; - preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying", getter, setter)); + preferences->addPreference(new CheckPreference(VR_MOVEMENT, "Flying & jumping", getter, setter)); } { auto getter = [=]()->int { return myAvatar->getSnapTurn() ? 0 : 1; }; From bc91affa708b8cbddd95d5b95af9bc0bd8dd4d56 Mon Sep 17 00:00:00 2001 From: r3tk0n Date: Fri, 20 Jul 2018 15:13:44 -0700 Subject: [PATCH 9/9] Bring this PR inline with RC70.1 PR. --- interface/src/Application.cpp | 5 +++-- interface/src/avatar/MyAvatar.cpp | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 216ec9ac42..ae212e933d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -4841,9 +4841,10 @@ void Application::loadSettings() { isFirstPerson = (qApp->isHMDMode()); // Flying should be disabled by default in HMD mode on first run, and it - // should be enabled by default in desktop mode, always. + // should be enabled by default in desktop mode. + auto myAvatar = getMyAvatar(); - myAvatar->setFlyingEnabled((isFirstPerson)?false:true); + myAvatar->setFlyingEnabled(!isFirstPerson); } else { // if this is not the first run, the camera will be initialized differently depending on user settings diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index fd121055a1..6a3ae91dd6 100755 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1281,7 +1281,8 @@ void MyAvatar::loadData() { settings.remove("avatarEntityData"); } setAvatarEntityDataChanged(true); - setFlyingEnabled(settings.value("enabledFlying").toBool()); + Setting::Handle firstRunVal { Settings::firstRun, true }; + setFlyingEnabled(firstRunVal.get() ? getFlyingEnabled() : settings.value("enabledFlying").toBool()); setDisplayName(settings.value("displayName").toString()); setCollisionSoundURL(settings.value("collisionSoundURL", DEFAULT_AVATAR_COLLISION_SOUND_URL).toString()); setSnapTurn(settings.value("useSnapTurn", _useSnapTurn).toBool());