From 5847f86db8e3598bd6be32bb5110a62991d1adb7 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 8 Mar 2017 16:12:03 -0800 Subject: [PATCH 1/9] fix crash when unpacking too many joints --- libraries/animation/src/Rig.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index b70d28fc30..5573f5c0fe 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1310,17 +1310,18 @@ void Rig::copyJointsFromJointData(const QVector& jointDataVec) { if (!_animSkeleton) { return; } - if (jointDataVec.size() != (int)_internalPoseSet._relativePoses.size()) { - // animations haven't fully loaded yet. - _internalPoseSet._relativePoses = _animSkeleton->getRelativeDefaultPoses(); + int numJoints = jointDataVec.size(); + const AnimPoseVec& absoluteDefaultPoses = _animSkeleton->getAbsoluteDefaultPoses(); + if (numJoints != (int)absoluteDefaultPoses.size()) { + // jointData is incompatible + return; } // make a vector of rotations in absolute-geometry-frame - const AnimPoseVec& absoluteDefaultPoses = _animSkeleton->getAbsoluteDefaultPoses(); std::vector rotations; - rotations.reserve(absoluteDefaultPoses.size()); + rotations.reserve(numJoints); const glm::quat rigToGeometryRot(glmExtractRotation(_rigToGeometryTransform)); - for (int i = 0; i < jointDataVec.size(); i++) { + for (int i = 0; i < numJoints; i++) { const JointData& data = jointDataVec.at(i); if (data.rotationSet) { // JointData rotations are in absolute rig-frame so we rotate them to absolute geometry-frame @@ -1334,8 +1335,11 @@ void Rig::copyJointsFromJointData(const QVector& jointDataVec) { _animSkeleton->convertAbsoluteRotationsToRelative(rotations); // store new relative poses + if (numJoints != _internalPoseSet._relativePoses.size()) { + _internalPoseSet._relativePoses = _animSkeleton->getRelativeDefaultPoses(); + } const AnimPoseVec& relativeDefaultPoses = _animSkeleton->getRelativeDefaultPoses(); - for (int i = 0; i < jointDataVec.size(); i++) { + for (int i = 0; i < numJoints; i++) { const JointData& data = jointDataVec.at(i); _internalPoseSet._relativePoses[i].scale() = Vectors::ONE; _internalPoseSet._relativePoses[i].rot() = rotations[i]; From 30d7ffb303925a2f0c7db6ed9e010742ffe43f61 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 8 Mar 2017 17:17:49 -0800 Subject: [PATCH 2/9] fix warning about signed unsigned compare --- libraries/animation/src/Rig.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 5573f5c0fe..9ecd0f6352 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1335,7 +1335,7 @@ void Rig::copyJointsFromJointData(const QVector& jointDataVec) { _animSkeleton->convertAbsoluteRotationsToRelative(rotations); // store new relative poses - if (numJoints != _internalPoseSet._relativePoses.size()) { + if (numJoints != (int)_internalPoseSet._relativePoses.size()) { _internalPoseSet._relativePoses = _animSkeleton->getRelativeDefaultPoses(); } const AnimPoseVec& relativeDefaultPoses = _animSkeleton->getRelativeDefaultPoses(); From d792559d9abc2b4adca943f994cde9f038ec9853 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 10 Mar 2017 09:59:23 -0800 Subject: [PATCH 3/9] have edit.js resend properties of selected entity to entityProperties.js once it's ready --- scripts/system/edit.js | 7 +++++-- scripts/system/html/js/entityProperties.js | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/system/edit.js b/scripts/system/edit.js index 74080dbe09..55bd11b286 100644 --- a/scripts/system/edit.js +++ b/scripts/system/edit.js @@ -1548,7 +1548,7 @@ var PropertiesTool = function (opts) { }); } - selectionManager.addEventListener(function (selectionUpdated) { + function updateSelections(selectionUpdated) { var data = { type: 'update' }; @@ -1589,7 +1589,8 @@ var PropertiesTool = function (opts) { } data.selections = selections; webView.emitScriptEvent(JSON.stringify(data)); - }); + } + selectionManager.addEventListener(updateSelections); webView.webEventReceived.connect(function (data) { try { @@ -1751,6 +1752,8 @@ var PropertiesTool = function (opts) { } } } + } else if (data.type === "propertiesPageReady") { + updateSelections(true); } }); diff --git a/scripts/system/html/js/entityProperties.js b/scripts/system/html/js/entityProperties.js index 4f774e5305..2f109597d7 100644 --- a/scripts/system/html/js/entityProperties.js +++ b/scripts/system/html/js/entityProperties.js @@ -1704,4 +1704,8 @@ function loaded() { document.addEventListener("contextmenu", function(event) { event.preventDefault(); }, false); + + setTimeout(function() { + EventBridge.emitWebEvent(JSON.stringify({ type: 'propertiesPageReady' })); + }, 1000); } From 9b3810814e17426ca34786db09b34d43f5190581 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 10 Mar 2017 18:40:18 +0000 Subject: [PATCH 4/9] fiexed putting menu items on the hud when tablet not open when on desktop screen --- interface/src/Application.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 66d138103d..b575cb07b1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5793,12 +5793,12 @@ void Application::toggleRunningScriptsWidget() const { auto tabletScriptingInterface = DependencyManager::get(); auto tablet = dynamic_cast(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system")); + auto hmd = DependencyManager::get(); if (tablet->getToolbarMode()) { static const QUrl url("hifi/dialogs/RunningScripts.qml"); DependencyManager::get()->show(url, "RunningScripts"); } else { - QQuickItem* tabletRoot = tablet->getTabletRoot(); - if (!tabletRoot && !isHMDMode()) { + if (!hmd->getShouldShowTablet() && !isHMDMode()) { static const QUrl url("hifi/dialogs/RunningScripts.qml"); DependencyManager::get()->show(url, "RunningScripts"); } else { @@ -5835,12 +5835,11 @@ void Application::showAssetServerWidget(QString filePath) { }; auto tabletScriptingInterface = DependencyManager::get(); auto tablet = dynamic_cast(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system")); - + auto hmd = DependencyManager::get(); if (tablet->getToolbarMode()) { DependencyManager::get()->show(url, "AssetServer", startUpload); } else { - QQuickItem* tabletRoot = tablet->getTabletRoot(); - if (!tabletRoot && !isHMDMode()) { + if (!hmd->getShouldShowTablet() && !isHMDMode()) { DependencyManager::get()->show(url, "AssetServer", startUpload); } else { static const QUrl url("../../hifi/dialogs/TabletAssetServer.qml"); @@ -5873,7 +5872,8 @@ void Application::addAssetToWorldFromURL(QString url) { void Application::showDialog(const QString& desktopURL, const QString& tabletURL, const QString& name) const { auto tabletScriptingInterface = DependencyManager::get(); auto tablet = dynamic_cast(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system")); - if (tablet->getToolbarMode() || (!tablet->getTabletRoot() && !isHMDMode())) { + auto hmd = DependencyManager::get(); + if (tablet->getToolbarMode() || (!hmd->getShouldShowTablet() && !isHMDMode())) { DependencyManager::get()->show(desktopURL, name); } else { tablet->loadQMLSource(tabletURL); From b63ab05eec6495fbb5986f6082b8c72dc8b0cfa2 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 10 Mar 2017 19:33:14 +0000 Subject: [PATCH 5/9] improved general settting coloring --- .../tabletWindows/TabletPreferencesDialog.qml | 46 ++++--------------- 1 file changed, 9 insertions(+), 37 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml index 95ce7f5a1d..e3138e8979 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml @@ -21,8 +21,8 @@ import "../../../controls-uit" as HifiControls Item { id: dialog - width: 480 - height: 720 + width: parent.width + height: parent.height HifiConstants { id: hifi } property var sections: [] @@ -31,6 +31,7 @@ Item { property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false + property var tablet; @@ -68,22 +69,11 @@ Item { } z: 100 - gradient: Gradient { - GradientStop { - position: 0 - color: "#2b2b2b" - } - - GradientStop { - position: 1 - color: "#1e1e1e" - } - } - + color: hifi.colors.darkGray RalewayBold { text: title size: 26 - color: "#34a2c7" + color: hifi.colors.white anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.leftMargin: hifi.dimensions.contentMargin.x @@ -99,17 +89,8 @@ Item { right: parent.right } - gradient: Gradient { - GradientStop { - position: 0 - color: "#2b2b2b" - } - - GradientStop { - position: 1 - color: "#0f212e" - } - } + color: hifi.colors.baseGray + Flickable { id: scrollView width: parent.width @@ -203,17 +184,8 @@ Item { left: parent.left right: parent.right } - gradient: Gradient { - GradientStop { - position: 0 - color: "#2b2b2b" - } - - GradientStop { - position: 1 - color: "#0f212e" - } - } + + color: hifi.colors.baseGray Row { anchors { From 88e74251a160fb8efb6e3b889abba32589bde61b Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 10 Mar 2017 12:51:34 -0800 Subject: [PATCH 6/9] cleanups --- scripts/system/tablet-ui/tabletUI.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/system/tablet-ui/tabletUI.js b/scripts/system/tablet-ui/tabletUI.js index 263c8822df..3b15eb4edb 100644 --- a/scripts/system/tablet-ui/tabletUI.js +++ b/scripts/system/tablet-ui/tabletUI.js @@ -75,8 +75,9 @@ function showTabletUI() { tabletShown = true; - if (!tabletRezzed) { - rezTablet(false); + if (!tabletRezzed || !tabletIsValid()) { + closeTabletUI() + rezTablet(); } if (UIWebTablet && tabletRezzed) { @@ -199,7 +200,7 @@ preMakeTime = now; if (!tabletIsValid()) { closeTabletUI(); - rezTablet(false); + rezTablet(); tabletShown = false; } else if (!tabletShown) { hideTabletUI(); From 8a973dae3c077b7c5da386c0deb66a55d5ecf570 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 10 Mar 2017 23:21:29 +0000 Subject: [PATCH 7/9] fixed bring menu dialogs in tablet --- .../resources/qml/hifi/dialogs/TabletRunningScripts.qml | 1 + .../resources/qml/hifi/tablet/TabletAudioPreferences.qml | 2 +- .../resources/qml/hifi/tablet/TabletAvatarPreferences.qml | 2 +- .../resources/qml/hifi/tablet/TabletGeneralPreferences.qml | 5 +++-- interface/resources/qml/hifi/tablet/TabletMenuStack.qml | 2 +- .../qml/hifi/tablet/TabletNetworkingPreferences.qml | 2 +- interface/src/Application.cpp | 2 +- 7 files changed, 9 insertions(+), 7 deletions(-) diff --git a/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml b/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml index e217a6e38e..b4a1ab01b6 100644 --- a/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml +++ b/interface/resources/qml/hifi/dialogs/TabletRunningScripts.qml @@ -20,6 +20,7 @@ import "../../windows" Rectangle { id: root objectName: "RunningScripts" + property var title: "Running Scripts" HifiConstants { id: hifi } signal sendToScript(var message); property var eventBridge; diff --git a/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml b/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml index efb7b5d50d..1c18c44a97 100644 --- a/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletAudioPreferences.qml @@ -19,7 +19,7 @@ StackView { id: profileRoot initialItem: root objectName: "stack" - + property var title: "Audio Preferences" property var eventBridge; signal sendToScript(var message); diff --git a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml index f5c1ddf8f7..b29164a30f 100644 --- a/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletAvatarPreferences.qml @@ -19,7 +19,7 @@ StackView { id: profileRoot initialItem: root objectName: "stack" - + property var title: "Avatar Preferences" property var eventBridge; signal sendToScript(var message); diff --git a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml index 4473a997e6..47e6a05f78 100644 --- a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml @@ -19,10 +19,11 @@ StackView { id: profileRoot initialItem: root objectName: "stack" - + property var title: "General Prefernces" + property var eventBridge; signal sendToScript(var message); - + function pushSource(path) { editRoot.push(Qt.reslovedUrl(path)); } diff --git a/interface/resources/qml/hifi/tablet/TabletMenuStack.qml b/interface/resources/qml/hifi/tablet/TabletMenuStack.qml index a75a9fcd86..64d42acabb 100644 --- a/interface/resources/qml/hifi/tablet/TabletMenuStack.qml +++ b/interface/resources/qml/hifi/tablet/TabletMenuStack.qml @@ -51,7 +51,7 @@ Item { d.push(Qt.resolvedUrl(path)); d.currentItem.eventBridge = tabletMenu.eventBridge d.currentItem.sendToScript.connect(tabletMenu.sendToScript); - breadcrumbText.text = d.currentItem.objectName; + breadcrumbText.text = d.currentItem.title; } function popSource() { diff --git a/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml b/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml index 9b12d3c69e..f48d270646 100644 --- a/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletNetworkingPreferences.qml @@ -19,7 +19,7 @@ StackView { id: profileRoot initialItem: root objectName: "stack" - + property var title: "Network Preferences" property var eventBridge; signal sendToScript(var message); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index b575cb07b1..6be36f18ac 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -5876,7 +5876,7 @@ void Application::showDialog(const QString& desktopURL, const QString& tabletURL if (tablet->getToolbarMode() || (!hmd->getShouldShowTablet() && !isHMDMode())) { DependencyManager::get()->show(desktopURL, name); } else { - tablet->loadQMLSource(tabletURL); + tablet->pushOntoStack(tabletURL); } } From 9f7c5a16033d4341ef13e67e4e8a4f25ae3818cf Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Sat, 11 Mar 2017 11:54:44 +0100 Subject: [PATCH 8/9] Add LOD settings to Tablet UI --- .../qml/hifi/tablet/TabletLodPreferences.qml | 34 +++++++++++++++++++ interface/src/Menu.cpp | 3 +- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 interface/resources/qml/hifi/tablet/TabletLodPreferences.qml diff --git a/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml b/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml new file mode 100644 index 0000000000..8f03bdb0c5 --- /dev/null +++ b/interface/resources/qml/hifi/tablet/TabletLodPreferences.qml @@ -0,0 +1,34 @@ +import QtQuick 2.5 +import Qt.labs.settings 1.0 + +import "tabletWindows" +import "../../dialogs" +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtGraphicalEffects 1.0 + +StackView { + id: profileRoot + initialItem: root + objectName: "stack" + + property var eventBridge; + signal sendToScript(var message); + + function pushSource(path) { + editRoot.push(Qt.reslovedUrl(path)); + } + + function popSource() { + + } + + TabletPreferencesDialog { + id: root + property string title: "LOD Settings" + objectName: "TabletLodPreferences" + width: parent.width + height: parent.height + showCategories: ["Level of Detail Tuning"] + } +} diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 241f908190..7eb5f4ea60 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -308,7 +308,8 @@ Menu::Menu() { // Settings > LOD... action = addActionToQMenuAndActionHash(settingsMenu, "LOD..."); connect(action, &QAction::triggered, [] { - DependencyManager::get()->toggle(QString("hifi/dialogs/LodPreferencesDialog.qml"), "LodPreferencesDialog"); + qApp->showDialog(QString("hifi/dialogs/LodPreferencesDialog.qml"), + QString("../../hifi/tablet/TabletLodPreferences.qml"), "LodPreferencesDialog"); }); // Settings > Control with Speech [advanced] From 81bc56f124fb0e507e5852c5d9a7b1584bb6b296 Mon Sep 17 00:00:00 2001 From: Vladyslav Stelmakhovskyi Date: Sat, 11 Mar 2017 14:44:33 +0100 Subject: [PATCH 9/9] Fixed slider groove size calculation. Added LOD Tools to Tablet UI --- .../resources/qml/controls-uit/Slider.qml | 2 +- .../qml/hifi/dialogs/TabletLODTools.qml | 119 ++++++++++++++++++ interface/src/Application.cpp | 12 ++ interface/src/Application.h | 1 + interface/src/Menu.cpp | 3 +- interface/src/ui/overlays/Web3DOverlay.cpp | 2 + 6 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 interface/resources/qml/hifi/dialogs/TabletLODTools.qml diff --git a/interface/resources/qml/controls-uit/Slider.qml b/interface/resources/qml/controls-uit/Slider.qml index cf59e1d989..39831546e1 100644 --- a/interface/resources/qml/controls-uit/Slider.qml +++ b/interface/resources/qml/controls-uit/Slider.qml @@ -36,7 +36,7 @@ Slider { Rectangle { width: parent.height - 2 - height: slider.value * slider.width - 1 + height: slider.value * (slider.width/(slider.maximumValue - slider.minimumValue)) - 1 radius: height / 2 anchors { top: parent.top diff --git a/interface/resources/qml/hifi/dialogs/TabletLODTools.qml b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml new file mode 100644 index 0000000000..26e9759e0d --- /dev/null +++ b/interface/resources/qml/hifi/dialogs/TabletLODTools.qml @@ -0,0 +1,119 @@ +// +// TabletLODTools.qml +// +// Created by Vlad Stelmahovsky on 3/11/17 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import Qt.labs.settings 1.0 + +import "../../styles-uit" +import "../../controls-uit" as HifiControls +import "../../windows" + +Rectangle { + id: root + objectName: "LODTools" + + property var eventBridge; + signal sendToScript(var message); + property bool isHMD: false + + color: hifi.colors.baseGray + + property int colorScheme: hifi.colorSchemes.dark + + HifiConstants { id: hifi } + + readonly property real treeScale: 32768; // ~20 miles.. This is the number of meters of the 0.0 to 1.0 voxel universe + readonly property real halfTreeScale: treeScale / 2; + + // This controls the LOD. Larger number will make smaller voxels visible at greater distance. + readonly property real defaultOctreeSizeScale: treeScale * 400.0 + + Column { + anchors.margins: 10 + anchors.left: parent.left + anchors.right: parent.right + y: hifi.dimensions.tabletMenuHeader //-bgNavBar + spacing: 20 + + HifiControls.Label { + size: 20 + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("You can see...") + colorScheme: root.colorScheme + } + HifiControls.Label { + id: whatYouCanSeeLabel + color: "red" + size: 20 + anchors.left: parent.left + anchors.right: parent.right + colorScheme: root.colorScheme + } + Row { + anchors.left: parent.left + anchors.right: parent.right + spacing: 10 + + HifiControls.Label { + size: 20 + text: qsTr("Manually Adjust Level of Detail:") + anchors.verticalCenter: parent.verticalCenter + colorScheme: root.colorScheme + } + + HifiControls.CheckBox { + id: adjustCheckbox + boxSize: 20 + anchors.verticalCenter: parent.verticalCenter + onCheckedChanged: LODManager.setAutomaticLODAdjust(!checked); + } + } + + HifiControls.Label { + size: 20 + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("Level of Detail:") + colorScheme: root.colorScheme + } + HifiControls.Slider { + id: slider + enabled: adjustCheckbox.checked + anchors.left: parent.left + anchors.right: parent.right + minimumValue: 5 + maximumValue: 2000 + value: LODManager.getOctreeSizeScale() / treeScale + tickmarksEnabled: false + onValueChanged: { + LODManager.setOctreeSizeScale(value * treeScale); + whatYouCanSeeLabel.text = LODManager.getLODFeedbackText() + } + } + + HifiControls.Button { + id: uploadButton + anchors.left: parent.left + anchors.right: parent.right + text: qsTr("Reset") + color: hifi.buttons.blue + colorScheme: root.colorScheme + height: 30 + onClicked: { + slider.value = defaultOctreeSizeScale/treeScale + adjustCheckbox.checked = false + LODManager.setAutomaticLODAdjust(adjustCheckbox.checked); + } + } + } +} + diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 27dd65ab8d..94a71e01b0 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -6363,6 +6363,18 @@ void Application::loadScriptURLDialog() const { } } +void Application::loadLODToolsDialog() { + auto tabletScriptingInterface = DependencyManager::get(); + auto tablet = dynamic_cast(tabletScriptingInterface->getTablet("com.highfidelity.interface.tablet.system")); + if (tablet->getToolbarMode() || (!tablet->getTabletRoot() && !isHMDMode())) { + auto dialogsManager = DependencyManager::get(); + dialogsManager->lodTools(); + } else { + tablet->pushOntoStack("../../hifi/dialogs/TabletLODTools.qml"); + } + +} + void Application::toggleLogDialog() { if (! _logDialog) { _logDialog = new LogDialog(nullptr, getLogger()); diff --git a/interface/src/Application.h b/interface/src/Application.h index 9fab4aef81..5c72f0fa90 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -403,6 +403,7 @@ public slots: void addAssetToWorldMessageClose(); Q_INVOKABLE void toggleMuteAudio(); + void loadLODToolsDialog(); private slots: void showDesktop(); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 241f908190..dcbcfed6a0 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -408,7 +408,8 @@ Menu::Menu() { // Developer > Render > LOD Tools - addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, 0, dialogsManager.data(), SLOT(lodTools())); + addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, 0, + qApp, SLOT(loadLODToolsDialog())); // HACK enable texture decimation { diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index 32fe26a697..de0218843a 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -43,6 +43,7 @@ #include "FileDialogHelper.h" #include "avatar/AvatarManager.h" #include "AudioClient.h" +#include "LODManager.h" static const float DPI = 30.47f; static const float INCHES_TO_METERS = 1.0f / 39.3701f; @@ -182,6 +183,7 @@ void Web3DOverlay::loadSourceURL() { _webSurface->getRootContext()->setContextProperty("ScriptDiscoveryService", DependencyManager::get().data()); _webSurface->getRootContext()->setContextProperty("Tablet", DependencyManager::get().data()); _webSurface->getRootContext()->setContextProperty("Assets", DependencyManager::get().data()); + _webSurface->getRootContext()->setContextProperty("LODManager", DependencyManager::get().data()); _webSurface->getRootContext()->setContextProperty("pathToFonts", "../../"); tabletScriptingInterface->setQmlTabletRoot("com.highfidelity.interface.tablet.system", _webSurface->getRootItem(), _webSurface.data());