mirror of
https://github.com/AleziaKurdis/overte.git
synced 2025-04-06 11:33:30 +02:00
160 lines
4.2 KiB
QML
160 lines
4.2 KiB
QML
import QtQuick 2.3
|
|
import QtQuick.Controls 1.2
|
|
import QtQuick.Layouts 1.0
|
|
import QtQuick.Dialogs 1.0
|
|
|
|
import "controller"
|
|
import "controls" as HifiControls
|
|
import "styles"
|
|
|
|
HifiControls.VrDialog {
|
|
id: root
|
|
HifiConstants { id: hifi }
|
|
title: "Controller Test"
|
|
resizable: true
|
|
contentImplicitWidth: clientArea.implicitWidth
|
|
contentImplicitHeight: clientArea.implicitHeight
|
|
backgroundColor: "beige"
|
|
|
|
property var actions: Controller.Actions
|
|
property var standard: Controller.Standard
|
|
property var hydra: null
|
|
property var testMapping: null
|
|
property bool testMappingEnabled: false
|
|
property var xbox: null
|
|
|
|
function buildMapping() {
|
|
testMapping = Controller.newMapping();
|
|
testMapping.fromQml(standard.RY).invert().toQml(actions.Pitch);
|
|
testMapping.fromQml(function(){
|
|
return Math.sin(Date.now() / 250);
|
|
}).toQml(actions.Yaw);
|
|
//testMapping.makeAxis(standard.LB, standard.RB).to(actions.Yaw);
|
|
// Step yaw takes a number of degrees
|
|
testMapping.fromQml(standard.LB).pulse(0.10).invert().scale(40.0).toQml(actions.StepYaw);
|
|
testMapping.fromQml(standard.RB).pulse(0.10).scale(15.0).toQml(actions.StepYaw);
|
|
testMapping.fromQml(standard.RX).scale(15.0).toQml(actions.StepYaw);
|
|
}
|
|
|
|
function toggleMapping() {
|
|
testMapping.enable(!testMappingEnabled);
|
|
testMappingEnabled = !testMappingEnabled;
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
var xboxRegex = /^GamePad/;
|
|
var hydraRegex = /^Hydra/;
|
|
for (var prop in Controller.Hardware) {
|
|
if(xboxRegex.test(prop)) {
|
|
root.xbox = Controller.Hardware[prop]
|
|
print("found xbox")
|
|
continue
|
|
}
|
|
if (hydraRegex.test(prop)) {
|
|
root.hydra = Controller.Hardware[prop]
|
|
print("found hydra")
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
|
|
Column {
|
|
id: clientArea
|
|
spacing: 12
|
|
x: root.clientX
|
|
y: root.clientY
|
|
|
|
Row {
|
|
spacing: 8
|
|
|
|
Button {
|
|
text: !root.testMapping ? "Build Mapping" : (root.testMappingEnabled ? "Disable Mapping" : "Enable Mapping")
|
|
onClicked: {
|
|
|
|
if (!root.testMapping) {
|
|
root.buildMapping()
|
|
} else {
|
|
root.toggleMapping();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Row {
|
|
Standard { device: root.standard; label: "Standard"; width: 180 }
|
|
}
|
|
|
|
Row {
|
|
spacing: 8
|
|
Xbox { device: root.xbox; label: "XBox"; width: 180 }
|
|
Hydra { device: root.hydra; width: 180 }
|
|
}
|
|
|
|
Row {
|
|
spacing: 4
|
|
ScrollingGraph {
|
|
controlId: Controller.Actions.Yaw
|
|
label: "Yaw"
|
|
min: -2.0
|
|
max: 2.0
|
|
size: 64
|
|
}
|
|
|
|
ScrollingGraph {
|
|
controlId: Controller.Actions.YawLeft
|
|
label: "Yaw Left"
|
|
min: -2.0
|
|
max: 2.0
|
|
size: 64
|
|
}
|
|
|
|
ScrollingGraph {
|
|
controlId: Controller.Actions.YawRight
|
|
label: "Yaw Right"
|
|
min: -2.0
|
|
max: 2.0
|
|
size: 64
|
|
}
|
|
|
|
ScrollingGraph {
|
|
controlId: Controller.Actions.StepYaw
|
|
label: "StepYaw"
|
|
min: -20.0
|
|
max: 20.0
|
|
size: 64
|
|
}
|
|
}
|
|
|
|
Row {
|
|
ScrollingGraph {
|
|
controlId: Controller.Actions.TranslateZ
|
|
label: "TranslateZ"
|
|
min: -2.0
|
|
max: 2.0
|
|
size: 64
|
|
}
|
|
|
|
ScrollingGraph {
|
|
controlId: Controller.Actions.Forward
|
|
label: "Forward"
|
|
min: -2.0
|
|
max: 2.0
|
|
size: 64
|
|
}
|
|
|
|
ScrollingGraph {
|
|
controlId: Controller.Actions.Backward
|
|
label: "Backward"
|
|
min: -2.0
|
|
max: 2.0
|
|
size: 64
|
|
}
|
|
|
|
}
|
|
}
|
|
} // dialog
|
|
|
|
|
|
|
|
|
|
|