overte/scripts/developer/utilities/workload/workloadInspector.qml

425 lines
14 KiB
QML

//
// _workload.qml
//
// Created by Sam Gateau on 3/1/2018
// Copyright 2018 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or https://www.apache.org/licenses/LICENSE-2.0.html
//
import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.3
import stylesUit 1.0
import controlsUit 1.0 as HifiControls
import "../render/configSlider"
import "../lib/jet/qml" as Jet
import "../lib/plotperf"
Rectangle {
HifiConstants { id: hifi;}
id: _workload;
width: parent ? parent.width : 400
height: parent ? parent.height : 600
anchors.margins: hifi.dimensions.contentMargin.x
color: hifi.colors.baseGray;
function broadcastCreateScene() {
sendToScript({method: "createScene", params: { count:2 }});
}
function broadcastClearScene() {
sendToScript({method: "clearScene", params: { count:2 }});
}
function broadcastChangeSize(value) {
sendToScript({method: "changeSize", params: { count:value }});
}
function broadcastChangeResolution(value) {
sendToScript({method: "changeResolution", params: { count:value }});
}
function broadcastBumpUpFloor(value) {
sendToScript({method: "bumpUpFloor", params: { count:0 }});
}
function fromScript(message) {
switch (message.method) {
case "gridSize":
print("assigned value! " + message.params.v)
gridSizeLabel.text = ("Grid size [m] = " + message.params.v)
gridSize.setValue(message.params.v)
break;
case "resolution":
print("assigned value! " + message.params.v)
resolution.setValue(message.params.v)
break;
case "objectCount":
print("assigned objectCount! " + message.params.v)
objectCount.text = ("Num objects = " + message.params.v)
break;
}
}
Column {
id: stats
spacing: 5
anchors.left: parent.left
anchors.right: parent.right
anchors.margins: hifi.dimensions.contentMargin.x
//padding: hifi.dimensions.contentMargin.x
HifiControls.Label {
text: "Workload"
}
RowLayout {
anchors.left: parent.left
anchors.right: parent.right
HifiControls.CheckBox {
boxSize: 20
text: "Freeze Views"
checked: Workload.getConfig("setupViews")["freezeViews"]
onCheckedChanged: { Workload.getConfig("SpaceToRender")["freezeViews"] = checked, Workload.getConfig("setupViews")["freezeViews"] = checked; }
}
HifiControls.CheckBox {
boxSize: 20
text: "Use Avatar View"
checked: Workload.getConfig("setupViews")["useAvatarView"]
onCheckedChanged: { Workload.getConfig("setupViews")["useAvatarView"] = checked; }
}
HifiControls.CheckBox {
boxSize: 20
text: "force View Horizontal"
checked: Workload.getConfig("setupViews")["forceViewHorizontal"]
onCheckedChanged: { Workload.getConfig("setupViews")["forceViewHorizontal"] = checked; }
}
}
RowLayout {
anchors.left: parent.left
anchors.right: parent.right
HifiControls.CheckBox {
boxSize: 20
text: "Simulate Secondary"
checked: Workload.getConfig("setupViews")["simulateSecondaryCamera"]
onCheckedChanged: { Workload.getConfig("setupViews")["simulateSecondaryCamera"] = checked; }
}
}
Separator {}
HifiControls.CheckBox {
boxSize: 20
text: "Regulate View Ranges"
checked: Workload.getConfig("controlViews")["regulateViewRanges"]
onCheckedChanged: { Workload.getConfig("controlViews")["regulateViewRanges"] = checked; }
}
RowLayout {
visible: !Workload.getConfig("controlViews")["regulateViewRanges"]
anchors.left: parent.left
anchors.right: parent.right
Column {
anchors.left: parent.left
anchors.right: parent.horizontalCenter
HifiControls.Label {
text: "Back [m]"
anchors.horizontalCenter: parent.horizontalCenter
}
Repeater {
model: [
"R1:r1Back:250.0:0.0",
"R2:r2Back:250.0:0.0",
"R3:r3Back:250.0:0.0"
]
ConfigSlider {
label: qsTr(modelData.split(":")[0])
config: Workload.getConfig("setupViews")
property: modelData.split(":")[1]
max: modelData.split(":")[2]
min: modelData.split(":")[3]
integral: true
labelAreaWidthScale: 0.4
anchors.left: parent.left
anchors.right: parent.right
}
}
}
Column {
anchors.left: parent.horizontalCenter
anchors.right: parent.right
HifiControls.Label {
text: "Front [m]"
anchors.horizontalCenter: parent.horizontalCenter
}
Repeater {
model: [
"r1Front:16000:1.0",
"r2Front:16000:1.0",
"r3Front:16000:1.0"
]
ConfigSlider {
showLabel: false
config: Workload.getConfig("setupViews")
property: modelData.split(":")[0]
max: modelData.split(":")[1]
min: modelData.split(":")[2]
integral: true
labelAreaWidthScale: 0.3
anchors.left: parent.left
anchors.right: parent.right
}
}
}
}
/*RowLayout {
visible: Workload.getConfig("controlViews")["regulateViewRanges"]
anchors.left: parent.left
anchors.right: parent.right
Column {
anchors.left: parent.left
anchors.right: parent.horizontalCenter
HifiControls.Label {
text: "Back [m]"
anchors.horizontalCenter: parent.horizontalCenter
}
Repeater {
model: [
"R1:r1RangeBack:50.0:0.0",
"R2:r2RangeBack:50.0:0.0",
"R3:r3RangeBack:50.0:0.0"
]
ConfigSlider {
label: qsTr(modelData.split(":")[0])
config: Workload.getConfig("controlViews")
property: modelData.split(":")[1]
max: modelData.split(":")[2]
min: modelData.split(":")[3]
integral: true
labelAreaWidthScale: 0.4
anchors.left: parent.left
anchors.right: parent.right
}
}
}
Column {
anchors.left: parent.horizontalCenter
anchors.right: parent.right
HifiControls.Label {
text: "Front [m]"
anchors.horizontalCenter: parent.horizontalCenter
}
Repeater {
model: [
"r1RangeFront:300:1.0",
"r2RangeFront:300:1.0",
"r3RangeFront:300:1.0"
]
ConfigSlider {
showLabel: false
config: Workload.getConfig("controlViews")
property: modelData.split(":")[0]
max: modelData.split(":")[1]
min: modelData.split(":")[2]
integral: true
labelAreaWidthScale: 0.3
anchors.left: parent.left
anchors.right: parent.right
}
}
}
}*/
property var controlViews: Workload.getConfig("controlViews")
PlotPerf {
title: "Timings"
height: 100
object: stats.controlViews
valueScale: 1.0
valueUnit: "ms"
plots: [
{
prop: "r2Timing",
label: "Physics + Collisions",
color: "#1AC567"
},
{
prop: "r3Timing",
label: "Kinematic + Update",
color: "#1A67C5"
}
]
}
/* PlotPerf {
title: "Ranges"
height: 100
object: stats.controlViews
valueScale: 1.0
valueUnit: "m"
plots: [
{
prop: "r3RangeFront",
label: "R3 F",
color: "#FF0000"
},
{
prop: "r3RangeBack",
label: "R3 B",
color: "#EF0000"
},
{
prop: "r2RangeFront",
label: "R2 F",
color: "orange"
},
{
prop: "r2RangeBack",
label: "R2 B",
color: "magenta"
},
{
prop: "r1RangeFront",
label: "R1 F",
color: "#00FF00"
},
{
prop: "r1RangeBack",
label: "R1 B",
color: "#00EF00"
},
]
}*/
Separator {}
HifiControls.Label {
text: "Ranges & Numbers:";
}
Repeater {
model: [
"green:R1:numR1:r1RangeBack:r1RangeFront",
"orange:R2:numR2:r2RangeBack:r2RangeFront",
"red:R3:numR3:r3RangeBack:r3RangeFront"
]
RowLayout {
anchors.left: parent.left
anchors.right: parent.right
HifiControls.Label {
text: modelData.split(":")[1] + " : " + Workload.getConfig("regionState")[modelData.split(":")[2]] ;
color: modelData.split(":")[0]
}
HifiControls.Label {
text: Workload.getConfig("controlViews")[modelData.split(":")[3]].toFixed(0) ;
color: modelData.split(":")[0]
}
HifiControls.Label {
text: Workload.getConfig("controlViews")[modelData.split(":")[4]].toFixed(0) ;
color: modelData.split(":")[0]
}
}
}
Separator {}
HifiControls.Label {
text: "Display"
}
HifiControls.CheckBox {
boxSize: 20
text: "Show Proxies"
checked: Workload.getConfig("SpaceToRender")["showProxies"]
onCheckedChanged: { Workload.getConfig("SpaceToRender")["showProxies"] = checked }
}
HifiControls.CheckBox {
boxSize: 20
text: "Show Views"
checked: Workload.getConfig("SpaceToRender")["showViews"]
onCheckedChanged: { Workload.getConfig("SpaceToRender")["showViews"] = checked }
}
Separator {}
HifiControls.Label {
text: "Test"
}
Row {
spacing: 5
anchors.left: parent.left
anchors.right: parent.right
HifiControls.Button {
text: "create scene"
onClicked: {
print("pressed")
_workload.broadcastCreateScene()
}
}
HifiControls.Button {
text: "clear scene"
onClicked: {
print("pressed")
_workload.broadcastClearScene()
}
}
/*HifiControls.Button {
text: "bump floor"
onClicked: {
print("pressed")
_workload.broadcastBumpUpFloor()
}
}*/
}
HifiControls.Label {
id: gridSizeLabel
anchors.left: parent.left
anchors.right: parent.right
text: "Grid side size [m]"
}
HifiControls.Slider {
id: gridSize
stepSize: 1.0
anchors.left: parent.left
anchors.right: parent.right
anchors.rightMargin: 0
anchors.topMargin: 0
minimumValue: 1
maximumValue: 200
value: 100
onValueChanged: { _workload.broadcastChangeSize(value) }
}
HifiControls.Label {
id: objectCount
anchors.left: parent.left
anchors.right: parent.right
text: "Num objects"
}
HifiControls.Slider {
id: resolution
stepSize: 1.0
anchors.left: parent.left
anchors.right: parent.right
anchors.rightMargin: 0
anchors.topMargin: 0
minimumValue: 5
maximumValue: 75
value: 5
onValueChanged: { _workload.broadcastChangeResolution(value) }
}
Separator {}
/*Jet.TaskList {
rootConfig: Workload
anchors.left: parent.left
anchors.right: parent.right
height: 300
}*/
}
}