Showing the changes to scripts/developer (8 of 72 files). Show all
Unified · Split
| @@ -10,13 +10,24 @@ · 9 unmodified lines | ||
| 10 | 10 | |
| 11 | 11 | (function() { // BEGIN LOCAL_SCOPE |
| 12 | 12 | |
| 13 | +//check if script already running. | |
| 14 | +var scriptData = ScriptDiscoveryService.getRunning(); | |
| 15 | +var scripts = scriptData.filter(function (datum) { return datum.name === 'debugWindow.js'; }); | |
| 16 | +if (scripts.length >= 2) { | |
| 17 | + //2nd instance of the script is too much | |
| 18 | + ScriptDiscoveryService.stopScript(scripts[1].url); | |
| 19 | + return; | |
| 20 | +} | |
| 21 | + | |
| 13 | 22 | // Set up the qml ui |
| 14 | 23 | var qml = Script.resolvePath('debugWindow.qml'); |
| 24 | + | |
| 15 | 25 | var window = new OverlayWindow({ |
| 16 | 26 | title: 'Debug Window', |
| 17 | 27 | source: qml, |
| 18 | 28 | width: 400, height: 900, |
| 19 | 29 | }); |
| 30 | + | |
| 20 | 31 | window.setPosition(25, 50); |
| 21 | 32 | window.closed.connect(function() { Script.stop(); }); |
| 22 | 33 | |
| @@ -0,0 +1,160 @@ | ||
| 1 | +// | |
| 2 | +// debugHighlight.js | |
| 3 | +// developer/utilities/render | |
| 4 | +// | |
| 5 | +// Olivier Prat, created on 08/08/2017. | |
| 6 | +// Copyright 2017 High Fidelity, Inc. | |
| 7 | +// | |
| 8 | +// Distributed under the Apache License, Version 2.0. | |
| 9 | +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | |
| 10 | +// | |
| 11 | + | |
| 12 | +// Set up the qml ui | |
| 13 | +var qml = Script.resolvePath('highlight.qml'); | |
| 14 | +var window = new OverlayWindow({ | |
| 15 | + title: 'Highlight', | |
| 16 | + source: qml, | |
| 17 | + width: 400, | |
| 18 | + height: 400, | |
| 19 | +}); | |
| 20 | +window.closed.connect(function() { Script.stop(); }); | |
| 21 | + | |
| 22 | +"use strict"; | |
| 23 | + | |
| 24 | +// Created by Sam Gondelman on 9/7/2017 | |
| 25 | +// Copyright 2017 High Fidelity, Inc. | |
| 26 | +// | |
| 27 | +// Distributed under the Apache License, Version 2.0. | |
| 28 | +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | |
| 29 | + | |
| 30 | +(function() { // BEGIN LOCAL_SCOPE | |
| 31 | + | |
| 32 | +var END_DIMENSIONS = { | |
| 33 | + x: 0.15, | |
| 34 | + y: 0.15, | |
| 35 | + z: 0.15 | |
| 36 | +}; | |
| 37 | +var COLOR = {red: 97, green: 247, blue: 255}; | |
| 38 | +var end = { | |
| 39 | + type: "sphere", | |
| 40 | + dimensions: END_DIMENSIONS, | |
| 41 | + color: COLOR, | |
| 42 | + ignoreRayIntersection: true, | |
| 43 | + alpha: 1.0, | |
| 44 | + visible: true | |
| 45 | +} | |
| 46 | + | |
| 47 | +var COLOR2 = {red: 247, green: 97, blue: 255}; | |
| 48 | +var end2 = { | |
| 49 | + type: "sphere", | |
| 50 | + dimensions: END_DIMENSIONS, | |
| 51 | + color: COLOR2, | |
| 52 | + ignoreRayIntersection: true, | |
| 53 | + alpha: 1.0, | |
| 54 | + visible: true | |
| 55 | +} | |
| 56 | + | |
| 57 | +var highlightGroupIndex = 0 | |
| 58 | +var isSelectionAddEnabled = false | |
| 59 | +var isSelectionEnabled = false | |
| 60 | +var renderStates = [{name: "test", end: end}]; | |
| 61 | +var defaultRenderStates = [{name: "test", distance: 20.0, end: end2}]; | |
| 62 | +var time = 0 | |
| 63 | + | |
| 64 | +var ray = LaserPointers.createLaserPointer({ | |
| 65 | + joint: "Mouse", | |
| 66 | + filter: RayPick.PICK_ENTITIES | RayPick.PICK_OVERLAYS | RayPick.PICK_AVATARS | RayPick.PICK_INVISIBLE | RayPick.PICK_NONCOLLIDABLE, | |
| 67 | + renderStates: renderStates, | |
| 68 | + defaultRenderStates: defaultRenderStates, | |
| 69 | + enabled: false | |
| 70 | +}); | |
| 71 | + | |
| 72 | +function getSelectionName() { | |
| 73 | + var selectionName = "contextOverlayHighlightList" | |
| 74 | + | |
| 75 | + if (highlightGroupIndex>0) { | |
| 76 | + selectionName += highlightGroupIndex | |
| 77 | + } | |
| 78 | + return selectionName | |
| 79 | +} | |
| 80 | + | |
| 81 | +function fromQml(message) { | |
| 82 | + tokens = message.split(' ') | |
| 83 | + print("Received '"+message+"' from hightlight.qml") | |
| 84 | + if (tokens[0]=="highlight") { | |
| 85 | + highlightGroupIndex = parseInt(tokens[1]) | |
| 86 | + print("Switching to highlight group "+highlightGroupIndex) | |
| 87 | + } else if (tokens[0]=="pick") { | |
| 88 | + isSelectionEnabled = tokens[1]=='true' | |
| 89 | + print("Ray picking set to "+isSelectionEnabled.toString()) | |
| 90 | + if (isSelectionEnabled) { | |
| 91 | + LaserPointers.enableLaserPointer(ray) | |
| 92 | + } else { | |
| 93 | + LaserPointers.disableLaserPointer(ray) | |
| 94 | + } | |
| 95 | + time = 0 | |
| 96 | + } else if (tokens[0]=="add") { | |
| 97 | + isSelectionAddEnabled = tokens[1]=='true' | |
| 98 | + print("Add to selection set to "+isSelectionAddEnabled.toString()) | |
| 99 | + if (!isSelectionAddEnabled) { | |
| 100 | + Selection.clearSelectedItemsList(getSelectionName()) | |
| 101 | + } | |
| 102 | + } | |
| 103 | +} | |
| 104 | + | |
| 105 | +window.fromQml.connect(fromQml); | |
| 106 | + | |
| 107 | +function cleanup() { | |
| 108 | + LaserPointers.removeLaserPointer(ray); | |
| 109 | +} | |
| 110 | +Script.scriptEnding.connect(cleanup); | |
| 111 | + | |
| 112 | +var prevID = 0 | |
| 113 | +var prevType = "" | |
| 114 | +var selectedID = 0 | |
| 115 | +var selectedType = "" | |
| 116 | +function update(deltaTime) { | |
| 117 | + | |
| 118 | + // you have to do this repeatedly because there's a bug but I'll fix it | |
| 119 | + LaserPointers.setRenderState(ray, "test"); | |
| 120 | + | |
| 121 | + var result = LaserPointers.getPrevRayPickResult(ray); | |
| 122 | + var selectionName = getSelectionName() | |
| 123 | + | |
| 124 | + if (isSelectionEnabled && result.type != RayPick.INTERSECTED_NONE) { | |
| 125 | + time += deltaTime | |
| 126 | + if (result.objectID != prevID) { | |
| 127 | + var typeName = "" | |
| 128 | + if (result.type == RayPick.INTERSECTED_ENTITY) { | |
| 129 | + typeName = "entity" | |
| 130 | + } else if (result.type == RayPick.INTERSECTED_OVERLAY) { | |
| 131 | + typeName = "overlay" | |
| 132 | + } else if (result.type == RayPick.INTERSECTED_AVATAR) { | |
| 133 | + typeName = "avatar" | |
| 134 | + } | |
| 135 | + | |
| 136 | + prevID = result.objectID; | |
| 137 | + prevType = typeName; | |
| 138 | + time = 0 | |
| 139 | + } else if (time>1.0 && prevID!=selectedID) { | |
| 140 | + if (prevID != 0 && !isSelectionAddEnabled) { | |
| 141 | + Selection.removeFromSelectedItemsList(selectionName, selectedType, selectedID) | |
| 142 | + } | |
| 143 | + selectedID = prevID | |
| 144 | + selectedType = prevType | |
| 145 | + Selection.addToSelectedItemsList(selectionName, selectedType, selectedID) | |
| 146 | + print("HIGHLIGHT " + highlightGroupIndex + " picked type: " + result.type + ", id: " + result.objectID); | |
| 147 | + } | |
| 148 | + } else { | |
| 149 | + if (prevID != 0 && !isSelectionAddEnabled) { | |
| 150 | + Selection.removeFromSelectedItemsList(selectionName, prevType, prevID) | |
| 151 | + } | |
| 152 | + prevID = 0 | |
| 153 | + selectedID = 0 | |
| 154 | + time = 0 | |
| 155 | + } | |
| 156 | +} | |
| 157 | + | |
| 158 | +Script.update.connect(update); | |
| 159 | + | |
| 160 | +}()); // END LOCAL_SCOPE | |
| @@ -1,20 +0,0 @@ | ||
| 1 | −// | |
| 2 | −// debugOutline.js | |
| 3 | −// developer/utilities/render | |
| 4 | −// | |
| 5 | −// Olivier Prat, created on 08/08/2017. | |
| 6 | −// Copyright 2017 High Fidelity, Inc. | |
| 7 | −// | |
| 8 | −// Distributed under the Apache License, Version 2.0. | |
| 9 | −// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html | |
| 10 | −// | |
| 11 | − | |
| 12 | −// Set up the qml ui | |
| 13 | −var qml = Script.resolvePath('outline.qml'); | |
| 14 | −var window = new OverlayWindow({ | |
| 15 | − title: 'Outline', | |
| 16 | − source: qml, | |
| 17 | − width: 285, | |
| 18 | − height: 370, | |
| 19 | −}); | |
| 20 | −window.closed.connect(function() { Script.stop(); }); | |
| @@ -0,0 +1,177 @@ | ||
| 1 | +// | |
| 2 | +// highlight.qml | |
| 3 | +// developer/utilities/render | |
| 4 | +// | |
| 5 | +// Olivier Prat, created on 08/08/2017. | |
| 6 | +// Copyright 2017 High Fidelity, Inc. | |
| 7 | +// | |
| 8 | +// Distributed under the Apache License, Version 2.0. | |
| 9 | +// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html | |
| 10 | +// | |
| 11 | +import QtQuick 2.7 | |
| 12 | +import QtQuick.Controls 1.4 | |
| 13 | +import QtQuick.Layouts 1.3 | |
| 14 | + | |
| 15 | +import "qrc:///qml/styles-uit" | |
| 16 | +import "qrc:///qml/controls-uit" as HifiControls | |
| 17 | +import "configSlider" | |
| 18 | + | |
| 19 | +Rectangle { | |
| 20 | + id: root | |
| 21 | + HifiConstants { id: hifi;} | |
| 22 | + color: hifi.colors.baseGray; | |
| 23 | + anchors.margins: hifi.dimensions.contentMargin.x | |
| 24 | + | |
| 25 | + property var debugConfig: Render.getConfig("RenderMainView.HighlightDebug") | |
| 26 | + property var highlightConfig: Render.getConfig("UpdateScene.HighlightStageSetup") | |
| 27 | + | |
| 28 | + signal sendToScript(var message); | |
| 29 | + | |
| 30 | + Column { | |
| 31 | + id: col | |
| 32 | + spacing: 10 | |
| 33 | + anchors.left: parent.left | |
| 34 | + anchors.right: parent.right | |
| 35 | + anchors.margins: hifi.dimensions.contentMargin.x | |
| 36 | + | |
| 37 | + Row { | |
| 38 | + spacing: 10 | |
| 39 | + anchors.left: parent.left | |
| 40 | + anchors.right: parent.right | |
| 41 | + | |
| 42 | + HifiControls.CheckBox { | |
| 43 | + id: debug | |
| 44 | + text: "View Mask" | |
| 45 | + checked: root.debugConfig["viewMask"] | |
| 46 | + onCheckedChanged: { | |
| 47 | + root.debugConfig["viewMask"] = checked; | |
| 48 | + } | |
| 49 | + } | |
| 50 | + HifiControls.CheckBox { | |
| 51 | + text: "Hover select" | |
| 52 | + checked: false | |
| 53 | + onCheckedChanged: { | |
| 54 | + sendToScript("pick "+checked.toString()) | |
| 55 | + } | |
| 56 | + } | |
| 57 | + HifiControls.CheckBox { | |
| 58 | + text: "Add to selection" | |
| 59 | + checked: false | |
| 60 | + onCheckedChanged: { | |
| 61 | + sendToScript("add "+checked.toString()) | |
| 62 | + } | |
| 63 | + } | |
| 64 | + } | |
| 65 | + | |
| 66 | + HifiControls.ComboBox { | |
| 67 | + id: box | |
| 68 | + width: 350 | |
| 69 | + z: 999 | |
| 70 | + editable: true | |
| 71 | + colorScheme: hifi.colorSchemes.dark | |
| 72 | + model: [ | |
| 73 | + "contextOverlayHighlightList", | |
| 74 | + "highlightList1", | |
| 75 | + "highlightList2", | |
| 76 | + "highlightList3", | |
| 77 | + "highlightList4"] | |
| 78 | + label: "" | |
| 79 | + | |
| 80 | + Timer { | |
| 81 | + id: postpone | |
| 82 | + interval: 100; running: false; repeat: false | |
| 83 | + onTriggered: { paramWidgetLoader.sourceComponent = paramWidgets } | |
| 84 | + } | |
| 85 | + onCurrentIndexChanged: { | |
| 86 | + root.highlightConfig["selectionName"] = model[currentIndex]; | |
| 87 | + sendToScript("highlight "+currentIndex) | |
| 88 | + // This is a hack to be sure the widgets below properly reflect the change of category: delete the Component | |
| 89 | + // by setting the loader source to Null and then recreate it 100ms later | |
| 90 | + paramWidgetLoader.sourceComponent = undefined; | |
| 91 | + postpone.interval = 100 | |
| 92 | + postpone.start() | |
| 93 | + } | |
| 94 | + } | |
| 95 | + | |
| 96 | + Loader { | |
| 97 | + id: paramWidgetLoader | |
| 98 | + sourceComponent: paramWidgets | |
| 99 | + width: 350 | |
| 100 | + } | |
| 101 | + | |
| 102 | + Component { | |
| 103 | + id: paramWidgets | |
| 104 | + | |
| 105 | + Column { | |
| 106 | + spacing: 10 | |
| 107 | + anchors.margins: hifi.dimensions.contentMargin.x | |
| 108 | + | |
| 109 | + HifiControls.Label { | |
| 110 | + text: "Outline" | |
| 111 | + } | |
| 112 | + Column { | |
| 113 | + spacing: 10 | |
| 114 | + anchors.left: parent.left | |
| 115 | + anchors.right: parent.right | |
| 116 | + HifiControls.CheckBox { | |
| 117 | + text: "Smooth" | |
| 118 | + checked: root.highlightConfig["isOutlineSmooth"] | |
| 119 | + onCheckedChanged: { | |
| 120 | + root.highlightConfig["isOutlineSmooth"] = checked; | |
| 121 | + } | |
| 122 | + } | |
| 123 | + Repeater { | |
| 124 | + model: ["Width:outlineWidth:5.0:0.0", | |
| 125 | + "Intensity:outlineIntensity:1.0:0.0" | |
| 126 | + ] | |
| 127 | + ConfigSlider { | |
| 128 | + label: qsTr(modelData.split(":")[0]) | |
| 129 | + integral: false | |
| 130 | + config: root.highlightConfig | |
| 131 | + property: modelData.split(":")[1] | |
| 132 | + max: modelData.split(":")[2] | |
| 133 | + min: modelData.split(":")[3] | |
| 134 | + } | |
| 135 | + } | |
| 136 | + } | |
| 137 | + | |
| 138 | + Separator {} | |
| 139 | + HifiControls.Label { | |
| 140 | + text: "Color" | |
| 141 | + } | |
| 142 | + Repeater { | |
| 143 | + model: ["Red:colorR:1.0:0.0", | |
| 144 | + "Green:colorG:1.0:0.0", | |
| 145 | + "Blue:colorB:1.0:0.0" | |
| 146 | + ] | |
| 147 | + ConfigSlider { | |
| 148 | + label: qsTr(modelData.split(":")[0]) | |
| 149 | + integral: false | |
| 150 | + config: root.highlightConfig | |
| 151 | + property: modelData.split(":")[1] | |
| 152 | + max: modelData.split(":")[2] | |
| 153 | + min: modelData.split(":")[3] | |
| 154 | + } | |
| 155 | + } | |
| 156 | + | |
| 157 | + Separator {} | |
| 158 | + HifiControls.Label { | |
| 159 | + text: "Fill Opacity" | |
| 160 | + } | |
| 161 | + Repeater { | |
| 162 | + model: ["Unoccluded:unoccludedFillOpacity:1.0:0.0", | |
| 163 | + "Occluded:occludedFillOpacity:1.0:0.0" | |
| 164 | + ] | |
| 165 | + ConfigSlider { | |
| 166 | + label: qsTr(modelData.split(":")[0]) | |
| 167 | + integral: false | |
| 168 | + config: root.highlightConfig | |
| 169 | + property: modelData.split(":")[1] | |
| 170 | + max: modelData.split(":")[2] | |
| 171 | + min: modelData.split(":")[3] | |
| 172 | + } | |
| 173 | + } | |
| 174 | + } | |
| 175 | + } | |
| 176 | + } | |
| 177 | +} | |
| @@ -0,0 +1,116 @@ | ||
| 1 | +// | |
| 2 | +// highlightPage.qml | |
| 3 | +// developer/utilities/render | |
| 4 | +// | |
| 5 | +// Olivier Prat, created on 08/08/2017. | |
| 6 | +// Copyright 2017 High Fidelity, Inc. | |
| 7 | +// | |
| 8 | +// Distributed under the Apache License, Version 2.0. | |
| 9 | +// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html | |
| 10 | +// | |
| 11 | +import QtQuick 2.7 | |
| 12 | +import QtQuick.Controls 1.4 | |
| 13 | +import QtQuick.Layouts 1.3 | |
| 14 | +import "../configSlider" | |
| 15 | +import "qrc:///qml/styles-uit" | |
| 16 | +import "qrc:///qml/controls-uit" as HifiControls | |
| 17 | + | |
| 18 | +Rectangle { | |
| 19 | + id: root | |
| 20 | + property var highlightIndex: 0 | |
| 21 | + property var drawConfig: Render.getConfig("RenderMainView.HighlightEffect"+highlightIndex) | |
| 22 | + | |
| 23 | + HifiConstants { id: hifi;} | |
| 24 | + anchors.margins: hifi.dimensions.contentMargin.x | |
| 25 | + | |
| 26 | + Column { | |
| 27 | + spacing: 5 | |
| 28 | + anchors.left: parent.left | |
| 29 | + anchors.right: parent.right | |
| 30 | + anchors.margins: hifi.dimensions.contentMargin.x | |
| 31 | + | |
| 32 | + HifiControls.CheckBox { | |
| 33 | + id: glow | |
| 34 | + text: "Glow" | |
| 35 | + checked: root.drawConfig["glow"] | |
| 36 | + onCheckedChanged: { | |
| 37 | + root.drawConfig["glow"] = checked; | |
| 38 | + } | |
| 39 | + } | |
| 40 | + Repeater { | |
| 41 | + model: ["Width:width:5.0:0.0", | |
| 42 | + "Intensity:intensity:1.0:0.0" | |
| 43 | + ] | |
| 44 | + ConfigSlider { | |
| 45 | + label: qsTr(modelData.split(":")[0]) | |
| 46 | + integral: false | |
| 47 | + config: root.drawConfig | |
| 48 | + property: modelData.split(":")[1] | |
| 49 | + max: modelData.split(":")[2] | |
| 50 | + min: modelData.split(":")[3] | |
| 51 | + | |
| 52 | + anchors.left: parent.left | |
| 53 | + anchors.right: parent.right | |
| 54 | + } | |
| 55 | + } | |
| 56 | + | |
| 57 | + GroupBox { | |
| 58 | + title: "Color" | |
| 59 | + anchors.left: parent.left | |
| 60 | + anchors.right: parent.right | |
| 61 | + Column { | |
| 62 | + spacing: 10 | |
| 63 | + anchors.left: parent.left | |
| 64 | + anchors.right: parent.right | |
| 65 | + anchors.margins: hifi.dimensions.contentMargin.x | |
| 66 | + | |
| 67 | + Repeater { | |
| 68 | + model: ["Red:colorR:1.0:0.0", | |
| 69 | + "Green:colorG:1.0:0.0", | |
| 70 | + "Blue:colorB:1.0:0.0" | |
| 71 | + ] | |
| 72 | + ConfigSlider { | |
| 73 | + label: qsTr(modelData.split(":")[0]) | |
| 74 | + integral: false | |
| 75 | + config: root.drawConfig | |
| 76 | + property: modelData.split(":")[1] | |
| 77 | + max: modelData.split(":")[2] | |
| 78 | + min: modelData.split(":")[3] | |
| 79 | + | |
| 80 | + anchors.left: parent.left | |
| 81 | + anchors.right: parent.right | |
| 82 | + } | |
| 83 | + } | |
| 84 | + } | |
| 85 | + } | |
| 86 | + | |
| 87 | + GroupBox { | |
| 88 | + title: "Fill Opacity" | |
| 89 | + anchors.left: parent.left | |
| 90 | + anchors.right: parent.right | |
| 91 | + Column { | |
| 92 | + spacing: 10 | |
| 93 | + anchors.left: parent.left | |
| 94 | + anchors.right: parent.right | |
| 95 | + anchors.margins: hifi.dimensions.contentMargin.x | |
| 96 | + | |
| 97 | + Repeater { | |
| 98 | + model: ["Unoccluded:unoccludedFillOpacity:1.0:0.0", | |
| 99 | + "Occluded:occludedFillOpacity:1.0:0.0" | |
| 100 | + ] | |
| 101 | + ConfigSlider { | |
| 102 | + label: qsTr(modelData.split(":")[0]) | |
| 103 | + integral: false | |
| 104 | + config: root.drawConfig | |
| 105 | + property: modelData.split(":")[1] | |
| 106 | + max: modelData.split(":")[2] | |
| 107 | + min: modelData.split(":")[3] | |
| 108 | + | |
| 109 | + anchors.left: parent.left | |
| 110 | + anchors.right: parent.right | |
| 111 | + } | |
| 112 | + } | |
| 113 | + } | |
| 114 | + } | |
| 115 | + } | |
| 116 | +} | |
| @@ -0,0 +1 @@ | ||
| 1 | +HighlightPage 1.0 HighlightPage.qml | |
| @@ -1,119 +0,0 @@ | ||
| 1 | −// | |
| 2 | −// outline.qml | |
| 3 | −// developer/utilities/render | |
| 4 | −// | |
| 5 | −// Olivier Prat, created on 08/08/2017. | |
| 6 | −// Copyright 2017 High Fidelity, Inc. | |
| 7 | −// | |
| 8 | −// Distributed under the Apache License, Version 2.0. | |
| 9 | −// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html | |
| 10 | −// | |
| 11 | −import QtQuick 2.5 | |
| 12 | −import QtQuick.Controls 1.4 | |
| 13 | −import "configSlider" | |
| 14 | − | |
| 15 | −Item { | |
| 16 | − id: root | |
| 17 | − property var debugConfig: Render.getConfig("RenderMainView.OutlineDebug") | |
| 18 | − property var drawConfig: Render.getConfig("RenderMainView.OutlineEffect") | |
| 19 | − | |
| 20 | − Column { | |
| 21 | − spacing: 8 | |
| 22 | − | |
| 23 | − CheckBox { | |
| 24 | − text: "View Outlined Depth" | |
| 25 | − checked: root.debugConfig["viewOutlinedDepth"] | |
| 26 | − onCheckedChanged: { | |
| 27 | − root.debugConfig["viewOutlinedDepth"] = checked; | |
| 28 | − } | |
| 29 | − } | |
| 30 | − CheckBox { | |
| 31 | − text: "Glow" | |
| 32 | − checked: root.drawConfig["glow"] | |
| 33 | − onCheckedChanged: { | |
| 34 | − root.drawConfig["glow"] = checked; | |
| 35 | − } | |
| 36 | − } | |
| 37 | − ConfigSlider { | |
| 38 | − label: "Width" | |
| 39 | − integral: false | |
| 40 | − config: root.drawConfig | |
| 41 | − property: "width" | |
| 42 | − max: 15.0 | |
| 43 | − min: 0.0 | |
| 44 | − width: 280 | |
| 45 | − } | |
| 46 | − ConfigSlider { | |
| 47 | − label: "Intensity" | |
| 48 | − integral: false | |
| 49 | − config: root.drawConfig | |
| 50 | − property: "intensity" | |
| 51 | − max: 1.0 | |
| 52 | − min: 0.0 | |
| 53 | − width: 280 | |
| 54 | − } | |
| 55 | − | |
| 56 | − GroupBox { | |
| 57 | − title: "Color" | |
| 58 | − width: 280 | |
| 59 | − Column { | |
| 60 | − spacing: 8 | |
| 61 | − | |
| 62 | − ConfigSlider { | |
| 63 | − label: "Red" | |
| 64 | − integral: false | |
| 65 | − config: root.drawConfig | |
| 66 | − property: "colorR" | |
| 67 | − max: 1.0 | |
| 68 | − min: 0.0 | |
| 69 | − width: 270 | |
| 70 | − } | |
| 71 | − ConfigSlider { | |
| 72 | − label: "Green" | |
| 73 | − integral: false | |
| 74 | − config: root.drawConfig | |
| 75 | − property: "colorG" | |
| 76 | − max: 1.0 | |
| 77 | − min: 0.0 | |
| 78 | − width: 270 | |
| 79 | − } | |
| 80 | − ConfigSlider { | |
| 81 | − label: "Blue" | |
| 82 | − integral: false | |
| 83 | − config: root.drawConfig | |
| 84 | − property: "colorB" | |
| 85 | − max: 1.0 | |
| 86 | − min: 0.0 | |
| 87 | − width: 270 | |
| 88 | − } | |
| 89 | − } | |
| 90 | − } | |
| 91 | − | |
| 92 | − GroupBox { | |
| 93 | − title: "Fill Opacity" | |
| 94 | − width: 280 | |
| 95 | − Column { | |
| 96 | − spacing: 8 | |
| 97 | − | |
| 98 | − ConfigSlider { | |
| 99 | − label: "Unoccluded" | |
| 100 | − integral: false | |
| 101 | − config: root.drawConfig | |
| 102 | − property: "fillOpacityUnoccluded" | |
| 103 | − max: 1.0 | |
| 104 | − min: 0.0 | |
| 105 | − width: 270 | |
| 106 | − } | |
| 107 | − ConfigSlider { | |
| 108 | − label: "Occluded" | |
| 109 | − integral: false | |
| 110 | − config: root.drawConfig | |
| 111 | − property: "fillOpacityOccluded" | |
| 112 | − max: 1.0 | |
| 113 | − min: 0.0 | |
| 114 | − width: 270 | |
| 115 | − } | |
| 116 | − } | |
| 117 | − } | |
| 118 | − } | |
| 119 | −} | |
| @@ -65,6 +65,13 @@ Item { · 64 unmodified lines | ||
| 65 | 65 | label: "tone and post", |
| 66 | 66 | color: "#FF0000" |
| 67 | 67 | } |
| 68 | + , | |
| 69 | + { | |
| 70 | + object: Render.getConfig("RenderMainView.OutlineRangeTimer"), | |
| 71 | + prop: "gpuRunTime", | |
| 72 | + label: "outline", | |
| 73 | + color: "#FFFF00" | |
| 74 | + } | |
| 68 | 75 | ] |
| 69 | 76 | } |
| 70 | 77 | PlotPerf { |
| @@ -105,6 +112,13 @@ Item { · 34 unmodified lines | ||
| 105 | 112 | label: "tone and post", |
| 106 | 113 | color: "#FF0000" |
| 107 | 114 | } |
| 115 | + , | |
| 116 | + { | |
| 117 | + object: Render.getConfig("RenderMainView.OutlineRangeTimer"), | |
| 118 | + prop: "batchRunTime", | |
| 119 | + label: "outline", | |
| 120 | + color: "#FFFF00" | |
| 121 | + } | |
| 108 | 122 | ] |
| 109 | 123 | } |
| 110 | 124 | } |