First more or less complete version of Revive tab.
This commit is contained in:
@@ -21,6 +21,7 @@ SOURCES += src/main.cpp\
|
|||||||
src/tabcontrollers/SettingsTabController.cpp \
|
src/tabcontrollers/SettingsTabController.cpp \
|
||||||
src/tabcontrollers/StatisticsTabController.cpp \
|
src/tabcontrollers/StatisticsTabController.cpp \
|
||||||
src/tabcontrollers/SteamVRTabController.cpp \
|
src/tabcontrollers/SteamVRTabController.cpp \
|
||||||
|
src/tabcontrollers/ReviveTabController.cpp \
|
||||||
src/tabcontrollers/audiomanager/AudioManagerWindows.cpp
|
src/tabcontrollers/audiomanager/AudioManagerWindows.cpp
|
||||||
|
|
||||||
HEADERS += src/overlaycontroller.h \
|
HEADERS += src/overlaycontroller.h \
|
||||||
@@ -32,6 +33,7 @@ HEADERS += src/overlaycontroller.h \
|
|||||||
src/tabcontrollers/SettingsTabController.h \
|
src/tabcontrollers/SettingsTabController.h \
|
||||||
src/tabcontrollers/StatisticsTabController.h \
|
src/tabcontrollers/StatisticsTabController.h \
|
||||||
src/tabcontrollers/SteamVRTabController.h \
|
src/tabcontrollers/SteamVRTabController.h \
|
||||||
|
src/tabcontrollers/ReviveTabController.h \
|
||||||
src/tabcontrollers/AudioManager.h \
|
src/tabcontrollers/AudioManager.h \
|
||||||
src/tabcontrollers/audiomanager/AudioManagerWindows.h
|
src/tabcontrollers/audiomanager/AudioManagerWindows.h
|
||||||
|
|
||||||
|
|||||||
+366
-200
@@ -12,8 +12,12 @@ MyStackViewPage {
|
|||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
MyToggleButton {
|
MyToggleButton {
|
||||||
|
id: pixelsPerDisplayPixelToggle
|
||||||
text: "Render Target Override:"
|
text: "Render Target Override:"
|
||||||
Layout.rightMargin: 12
|
Layout.preferredWidth: 350
|
||||||
|
onCheckedChanged: {
|
||||||
|
ReviveTabController.setPixelsPerDisplayPixelOverrideEnabled(checked, false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyPushButton2 {
|
MyPushButton2 {
|
||||||
@@ -36,6 +40,7 @@ MyStackViewPage {
|
|||||||
pixelsPerDisplayPixelText.text = val.toFixed(1)
|
pixelsPerDisplayPixelText.text = val.toFixed(1)
|
||||||
}
|
}
|
||||||
onValueChanged: {
|
onValueChanged: {
|
||||||
|
ReviveTabController.setPixelsPerDisplayPixelOverride(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,11 +52,27 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyText {
|
MyTextField {
|
||||||
id: pixelsPerDisplayPixelText
|
id: pixelsPerDisplayPixelText
|
||||||
text: "1.0"
|
text: "0.00"
|
||||||
horizontalAlignment: Text.AlignRight
|
keyBoardUID: 221
|
||||||
Layout.minimumWidth: 85
|
Layout.preferredWidth: 100
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
function onInputEvent(input) {
|
||||||
|
var val = parseFloat(input)
|
||||||
|
if (!isNaN(val)) {
|
||||||
|
if (val < 0.1) {
|
||||||
|
val = 0.1
|
||||||
|
}
|
||||||
|
var v = val.toFixed(1)
|
||||||
|
pixelsPerDisplayPixelSlider.value = v
|
||||||
|
ReviveTabController.setPixelsPerDisplayPixelOverride(v, false)
|
||||||
|
text = v
|
||||||
|
} else {
|
||||||
|
text = ReviveTabController.pixelsPerDisplayPixelOverride.toFixed(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,17 +80,15 @@ MyStackViewPage {
|
|||||||
RowLayout {
|
RowLayout {
|
||||||
MyText {
|
MyText {
|
||||||
text: "Grip Button Mode:"
|
text: "Grip Button Mode:"
|
||||||
Layout.rightMargin: 12
|
Layout.preferredWidth: 350
|
||||||
}
|
}
|
||||||
|
|
||||||
MyComboBox {
|
MyComboBox {
|
||||||
id: gripButtonModeComboBox
|
id: gripButtonModeComboBox
|
||||||
Layout.maximumWidth: 300
|
|
||||||
Layout.minimumWidth: 300
|
|
||||||
Layout.preferredWidth: 300
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
model: ["Normal Mode", "Toggle Mode", "Hybrid Mode"]
|
model: ["Normal Mode", "Toggle Mode", "Hybrid Mode"]
|
||||||
onCurrentIndexChanged: {
|
onCurrentIndexChanged: {
|
||||||
|
ReviveTabController.setGripButtonMode(currentIndex, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,12 +137,15 @@ MyStackViewPage {
|
|||||||
id: thumbDeadzoneSlider
|
id: thumbDeadzoneSlider
|
||||||
from: 0.0
|
from: 0.0
|
||||||
to: 1.0
|
to: 1.0
|
||||||
stepSize: 0.1
|
stepSize: 0.01
|
||||||
value: 0.5
|
value: 0.5
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
onPositionChanged: {
|
onPositionChanged: {
|
||||||
var val = this.from + ( this.position * (this.to - this.from))
|
var val = this.from + ( this.position * (this.to - this.from))
|
||||||
thumbDeadzoneText.text = val.toFixed(1)
|
thumbDeadzoneText.text = val.toFixed(2)
|
||||||
|
}
|
||||||
|
onValueChanged: {
|
||||||
|
ReviveTabController.setThumbDeadzone(value.toFixed(2))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,11 +158,29 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyText {
|
MyTextField {
|
||||||
id: thumbDeadzoneText
|
id: thumbDeadzoneText
|
||||||
Layout.preferredWidth: 85
|
text: "0.00"
|
||||||
horizontalAlignment: Text.AlignRight
|
keyBoardUID: 222
|
||||||
text: "1.0"
|
Layout.preferredWidth: 100
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
function onInputEvent(input) {
|
||||||
|
var val = parseFloat(input)
|
||||||
|
if (!isNaN(val)) {
|
||||||
|
if (val < 0.0) {
|
||||||
|
val = 0.0
|
||||||
|
} else if (val > 1.0) {
|
||||||
|
val = 1.0
|
||||||
|
}
|
||||||
|
var v = val.toFixed(2)
|
||||||
|
thumbDeadzoneSlider.value = v
|
||||||
|
ReviveTabController.setThumbDeadzone(v, false)
|
||||||
|
text = v
|
||||||
|
} else {
|
||||||
|
text = ReviveTabController.thumbDeadzone.toFixed(2)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,14 +201,17 @@ MyStackViewPage {
|
|||||||
|
|
||||||
MySlider {
|
MySlider {
|
||||||
id: thumbRangeSlider
|
id: thumbRangeSlider
|
||||||
from: 0.0
|
from: 1.0
|
||||||
to: 1.0
|
to: 5.0
|
||||||
stepSize: 0.1
|
stepSize: 0.01
|
||||||
value: 0.5
|
value: 2.0
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
onPositionChanged: {
|
onPositionChanged: {
|
||||||
var val = this.from + ( this.position * (this.to - this.from))
|
var val = this.from + ( this.position * (this.to - this.from))
|
||||||
thumbRangeText.text = val.toFixed(1)
|
thumbRangeText.text = val.toFixed(2)
|
||||||
|
}
|
||||||
|
onValueChanged: {
|
||||||
|
ReviveTabController.setThumbRange(value.toFixed(2))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -181,11 +224,27 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyText {
|
MyTextField {
|
||||||
id: thumbRangeText
|
id: thumbRangeText
|
||||||
Layout.preferredWidth: 85
|
text: "0.00"
|
||||||
horizontalAlignment: Text.AlignRight
|
keyBoardUID: 223
|
||||||
text: "1.0"
|
Layout.preferredWidth: 100
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
function onInputEvent(input) {
|
||||||
|
var val = parseFloat(input)
|
||||||
|
if (!isNaN(val)) {
|
||||||
|
if (val < 0.01) {
|
||||||
|
val = 0.01
|
||||||
|
}
|
||||||
|
var v = val.toFixed(2)
|
||||||
|
thumbRangeSlider.value = v
|
||||||
|
ReviveTabController.setThumbRange(v, false)
|
||||||
|
text = v
|
||||||
|
} else {
|
||||||
|
text = ReviveTabController.thumbRange.toFixed(2)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -230,27 +289,35 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
var val = ReviveTabController.touchPitch - 0.1
|
||||||
|
if (val < -180.0) {
|
||||||
|
val = -180.0
|
||||||
|
}
|
||||||
|
ReviveTabController.setTouchPitch(val.toFixed(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
MyTextField {
|
||||||
id: touchPitchInputField
|
id: touchPitchInputField
|
||||||
|
text: "0.00"
|
||||||
|
keyBoardUID: 201
|
||||||
|
Layout.preferredWidth: 140
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
Layout.rightMargin: 10
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
color: "#cccccc"
|
function onInputEvent(input) {
|
||||||
text: "0.0"
|
var val = parseFloat(input)
|
||||||
Layout.preferredWidth: 120
|
if (!isNaN(val)) {
|
||||||
font.pointSize: 20
|
if (val < -180.0) {
|
||||||
onActiveFocusChanged: {
|
val = -180.0
|
||||||
if (activeFocus) {
|
} else if (val > 180.0) {
|
||||||
OverlayController.showKeyboard(text, 201)
|
val = 180.0
|
||||||
}
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 201) {
|
|
||||||
touchPitchInputField.text = input
|
|
||||||
}
|
}
|
||||||
|
var v = val.toFixed(1)
|
||||||
|
ReviveTabController.setTouchPitch(v, false)
|
||||||
|
text = v + "°"
|
||||||
|
} else {
|
||||||
|
text = ReviveTabController.touchPitch.toFixed(1) + "°"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,6 +327,11 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
var val = ReviveTabController.touchPitch + 0.1
|
||||||
|
if (val > 180.0) {
|
||||||
|
val = 180.0
|
||||||
|
}
|
||||||
|
ReviveTabController.setTouchPitch(val.toFixed(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,27 +348,35 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
var val = ReviveTabController.touchYaw - 0.1
|
||||||
|
if (val < -180.0) {
|
||||||
|
val = -180.0
|
||||||
|
}
|
||||||
|
ReviveTabController.setTouchYaw(val.toFixed(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
MyTextField {
|
||||||
id: touchYawInputField
|
id: touchYawInputField
|
||||||
|
text: "0.00"
|
||||||
|
keyBoardUID: 202
|
||||||
|
Layout.preferredWidth: 140
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
Layout.rightMargin: 10
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
color: "#cccccc"
|
function onInputEvent(input) {
|
||||||
text: "0.0"
|
var val = parseFloat(input)
|
||||||
Layout.preferredWidth: 120
|
if (!isNaN(val)) {
|
||||||
font.pointSize: 20
|
if (val < -180.0) {
|
||||||
onActiveFocusChanged: {
|
val = -180.0
|
||||||
if (activeFocus) {
|
} else if (val > 180.0) {
|
||||||
OverlayController.showKeyboard(text, 202)
|
val = 180.0
|
||||||
}
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 202) {
|
|
||||||
touchYawInputField.text = input
|
|
||||||
}
|
}
|
||||||
|
var v = val.toFixed(1)
|
||||||
|
ReviveTabController.setTouchYaw(v, false)
|
||||||
|
text = v + "°"
|
||||||
|
} else {
|
||||||
|
text = ReviveTabController.touchYaw.toFixed(1) + "°"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -306,6 +386,11 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
var val = ReviveTabController.touchYaw + 0.1
|
||||||
|
if (val > 180.0) {
|
||||||
|
val = 180.0
|
||||||
|
}
|
||||||
|
ReviveTabController.setTouchYaw(val.toFixed(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,27 +407,35 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
var val = ReviveTabController.touchRoll - 0.1
|
||||||
|
if (val < -180.0) {
|
||||||
|
val = -180.0
|
||||||
|
}
|
||||||
|
ReviveTabController.setTouchRoll(val.toFixed(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
MyTextField {
|
||||||
id: touchRollInputField
|
id: touchRollInputField
|
||||||
|
text: "0.00"
|
||||||
|
keyBoardUID: 203
|
||||||
|
Layout.preferredWidth: 140
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
Layout.rightMargin: 10
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
color: "#cccccc"
|
function onInputEvent(input) {
|
||||||
text: "0.0"
|
var val = parseFloat(input)
|
||||||
Layout.preferredWidth: 120
|
if (!isNaN(val)) {
|
||||||
font.pointSize: 20
|
if (val < -180.0) {
|
||||||
onActiveFocusChanged: {
|
val = -180.0
|
||||||
if (activeFocus) {
|
} else if (val > 180.0) {
|
||||||
OverlayController.showKeyboard(text, 203)
|
val = 180.0
|
||||||
}
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 203) {
|
|
||||||
touchRollInputField.text = input
|
|
||||||
}
|
}
|
||||||
|
var v = val.toFixed(1)
|
||||||
|
ReviveTabController.setTouchRoll(v, false)
|
||||||
|
text = v + "°"
|
||||||
|
} else {
|
||||||
|
text = ReviveTabController.touchRoll.toFixed(1) + "°"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -352,6 +445,11 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
var val = ReviveTabController.touchRoll + 0.1
|
||||||
|
if (val > 180.0) {
|
||||||
|
val = 180.0
|
||||||
|
}
|
||||||
|
ReviveTabController.setTouchRoll(val.toFixed(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -367,27 +465,26 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
ReviveTabController.setTouchX((ReviveTabController.touchX - 0.001).toFixed(3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
MyTextField {
|
||||||
id: touchXInputField
|
id: touchXInputField
|
||||||
|
text: "0.00"
|
||||||
|
keyBoardUID: 204
|
||||||
|
Layout.preferredWidth: 140
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
Layout.rightMargin: 10
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
color: "#cccccc"
|
function onInputEvent(input) {
|
||||||
text: "0.0"
|
var val = parseFloat(input)
|
||||||
Layout.preferredWidth: 120
|
if (!isNaN(val)) {
|
||||||
font.pointSize: 20
|
var v = val.toFixed(3)
|
||||||
onActiveFocusChanged: {
|
ReviveTabController.setTouchX(v, false)
|
||||||
if (activeFocus) {
|
text = v
|
||||||
OverlayController.showKeyboard(text, 204)
|
} else {
|
||||||
}
|
text = ReviveTabController.touchX.toFixed(3)
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 204) {
|
|
||||||
touchXInputField.text = input
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -397,6 +494,7 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
ReviveTabController.setTouchX((ReviveTabController.touchX + 0.001).toFixed(3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -413,27 +511,26 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
ReviveTabController.setTouchY((ReviveTabController.touchY - 0.001).toFixed(3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
MyTextField {
|
||||||
id: touchYInputField
|
id: touchYInputField
|
||||||
|
text: "0.00"
|
||||||
|
keyBoardUID: 205
|
||||||
|
Layout.preferredWidth: 140
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
Layout.rightMargin: 10
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
color: "#cccccc"
|
function onInputEvent(input) {
|
||||||
text: "0.0"
|
var val = parseFloat(input)
|
||||||
Layout.preferredWidth: 120
|
if (!isNaN(val)) {
|
||||||
font.pointSize: 20
|
var v = val.toFixed(3)
|
||||||
onActiveFocusChanged: {
|
ReviveTabController.setTouchY(v, false)
|
||||||
if (activeFocus) {
|
text = v
|
||||||
OverlayController.showKeyboard(text, 205)
|
} else {
|
||||||
}
|
text = ReviveTabController.touchY.toFixed(3)
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 205) {
|
|
||||||
touchYInputField.text = input
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -443,6 +540,7 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
ReviveTabController.setTouchY((ReviveTabController.touchY + 0.001).toFixed(3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -459,27 +557,26 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
ReviveTabController.setTouchZ((ReviveTabController.touchZ - 0.001).toFixed(3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
MyTextField {
|
||||||
id: touchZInputField
|
id: touchZInputField
|
||||||
|
text: "0.00"
|
||||||
|
keyBoardUID: 206
|
||||||
|
Layout.preferredWidth: 140
|
||||||
|
Layout.leftMargin: 10
|
||||||
|
Layout.rightMargin: 10
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
color: "#cccccc"
|
function onInputEvent(input) {
|
||||||
text: "0.0"
|
var val = parseFloat(input)
|
||||||
Layout.preferredWidth: 120
|
if (!isNaN(val)) {
|
||||||
font.pointSize: 20
|
var v = val.toFixed(3)
|
||||||
onActiveFocusChanged: {
|
ReviveTabController.setTouchZ(v, false)
|
||||||
if (activeFocus) {
|
text = v
|
||||||
OverlayController.showKeyboard(text, 206)
|
} else {
|
||||||
}
|
text = ReviveTabController.touchZ.toFixed(3)
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 206) {
|
|
||||||
touchZInputField.text = input
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -489,6 +586,7 @@ MyStackViewPage {
|
|||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
ReviveTabController.setTouchZ((ReviveTabController.touchZ + 0.001).toFixed(3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -498,164 +596,171 @@ MyStackViewPage {
|
|||||||
|
|
||||||
MyDialogOkCancelPopup {
|
MyDialogOkCancelPopup {
|
||||||
id: revivePersonalInfoDialog
|
id: revivePersonalInfoDialog
|
||||||
|
property double playerHeight: 0.0
|
||||||
|
property double eyeHeight: 0.0
|
||||||
dialogWidth: 600
|
dialogWidth: 600
|
||||||
dialogHeight: 400
|
dialogHeight: 440
|
||||||
dialogTitle: "Personal Information"
|
dialogTitle: "Personal Information"
|
||||||
dialogContentItem: GridLayout {
|
dialogContentItem: GridLayout {
|
||||||
|
rowSpacing: 6
|
||||||
|
columnSpacing: 18
|
||||||
columns: 2
|
columns: 2
|
||||||
MyText {
|
MyText {
|
||||||
text: "Username:"
|
text: "Username:"
|
||||||
}
|
}
|
||||||
TextField {
|
MyTextField {
|
||||||
id: rpidUsername
|
id: rpidUsername
|
||||||
horizontalAlignment: Text.AlignHCenter
|
text: "0.00"
|
||||||
color: "#cccccc"
|
keyBoardUID: 211
|
||||||
text: "Username"
|
Layout.fillWidth: true
|
||||||
Layout.preferredWidth: 250
|
function onInputEvent(input) {
|
||||||
font.pointSize: 20
|
rpidUsername.text = input
|
||||||
onActiveFocusChanged: {
|
|
||||||
if (activeFocus) {
|
|
||||||
OverlayController.showKeyboard(text, 211)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 211) {
|
|
||||||
rpidUsername.text = input
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MyText {
|
MyText {
|
||||||
text: "Name:"
|
text: "Name:"
|
||||||
}
|
}
|
||||||
|
MyTextField {
|
||||||
TextField {
|
|
||||||
id: rpidName
|
id: rpidName
|
||||||
horizontalAlignment: Text.AlignHCenter
|
text: "0.00"
|
||||||
color: "#cccccc"
|
keyBoardUID: 212
|
||||||
text: "Name"
|
Layout.fillWidth: true
|
||||||
Layout.preferredWidth: 250
|
function onInputEvent(input) {
|
||||||
font.pointSize: 20
|
rpidName.text = input
|
||||||
onActiveFocusChanged: {
|
|
||||||
if (activeFocus) {
|
|
||||||
OverlayController.showKeyboard(text, 212)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Connections {
|
|
||||||
target: OverlayController
|
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 212) {
|
|
||||||
rpidName.text = input
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MyText {
|
MyText {
|
||||||
text: "Gender:"
|
text: "Gender:"
|
||||||
}
|
}
|
||||||
|
|
||||||
MyComboBox {
|
MyComboBox {
|
||||||
id: rpidGender
|
id: rpidGender
|
||||||
Layout.maximumWidth: 300
|
|
||||||
Layout.minimumWidth: 300
|
|
||||||
Layout.preferredWidth: 300
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
currentIndex: 2
|
currentIndex: 2
|
||||||
model: ["Male", "Female", "Unknown"]
|
model: ["Unknown", "Male", "Female"]
|
||||||
onCurrentIndexChanged: {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
MyText {
|
MyText {
|
||||||
text: "Player Height:"
|
text: "Player Height:"
|
||||||
}
|
}
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
MyPushButton2 {
|
MyPushButton2 {
|
||||||
id: pridPlayerHeighMinusButton
|
id: pridPlayerHeighMinusButton
|
||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
if (revivePersonalInfoDialog.playerHeight > 0.01) {
|
||||||
|
revivePersonalInfoDialog.playerHeight = (revivePersonalInfoDialog.playerHeight - 0.01).toFixed(2)
|
||||||
|
}
|
||||||
|
pridPlayerHeighInputField.text = revivePersonalInfoDialog.playerHeight.toFixed(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
MyTextField {
|
||||||
TextField {
|
|
||||||
id: pridPlayerHeighInputField
|
id: pridPlayerHeighInputField
|
||||||
horizontalAlignment: Text.AlignHCenter
|
text: "0.00"
|
||||||
color: "#cccccc"
|
keyBoardUID: 213
|
||||||
text: "0.0"
|
|
||||||
Layout.preferredWidth: 120
|
Layout.preferredWidth: 120
|
||||||
font.pointSize: 20
|
Layout.leftMargin: 10
|
||||||
onActiveFocusChanged: {
|
Layout.rightMargin: 10
|
||||||
if (activeFocus) {
|
horizontalAlignment: Text.AlignHCenter
|
||||||
OverlayController.showKeyboard(text, 213)
|
function onInputEvent(input) {
|
||||||
}
|
var val = parseFloat(input)
|
||||||
}
|
if (!isNaN(val)) {
|
||||||
Connections {
|
if (val < 0.01) {
|
||||||
target: OverlayController
|
val = 0.01
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 213) {
|
|
||||||
pridPlayerHeighInputField.text = input
|
|
||||||
}
|
}
|
||||||
|
revivePersonalInfoDialog.playerHeight = val.toFixed(2)
|
||||||
|
text = val.toFixed(2)
|
||||||
|
} else {
|
||||||
|
text = val.toFixed(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyPushButton2 {
|
MyPushButton2 {
|
||||||
id: pridPlayerHeighPlusButton
|
id: pridPlayerHeighPlusButton
|
||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
revivePersonalInfoDialog.playerHeight = (revivePersonalInfoDialog.playerHeight + 0.01).toFixed(2)
|
||||||
|
pridPlayerHeighInputField.text = revivePersonalInfoDialog.playerHeight.toFixed(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
MyText {
|
MyText {
|
||||||
text: "Eye Height:"
|
text: "Eye Height:"
|
||||||
}
|
}
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
MyPushButton2 {
|
MyPushButton2 {
|
||||||
id: pridEyeHeighMinusButton
|
id: pridEyeHeighMinusButton
|
||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "-"
|
text: "-"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
if (revivePersonalInfoDialog.eyeHeight > 0.01) {
|
||||||
|
revivePersonalInfoDialog.eyeHeight = (revivePersonalInfoDialog.eyeHeight - 0.01).toFixed(2)
|
||||||
|
}
|
||||||
|
pridEyeHeighInputField.text = revivePersonalInfoDialog.eyeHeight.toFixed(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
MyTextField {
|
||||||
TextField {
|
|
||||||
id: pridEyeHeighInputField
|
id: pridEyeHeighInputField
|
||||||
horizontalAlignment: Text.AlignHCenter
|
text: "0.00"
|
||||||
color: "#cccccc"
|
keyBoardUID: 214
|
||||||
text: "0.0"
|
|
||||||
Layout.preferredWidth: 120
|
Layout.preferredWidth: 120
|
||||||
font.pointSize: 20
|
Layout.leftMargin: 10
|
||||||
onActiveFocusChanged: {
|
Layout.rightMargin: 10
|
||||||
if (activeFocus) {
|
horizontalAlignment: Text.AlignHCenter
|
||||||
OverlayController.showKeyboard(text, 214)
|
function onInputEvent(input) {
|
||||||
}
|
var val = parseFloat(input)
|
||||||
}
|
if (!isNaN(val)) {
|
||||||
Connections {
|
if (val < 0.01) {
|
||||||
target: OverlayController
|
val = 0.01
|
||||||
onKeyBoardInputSignal: {
|
|
||||||
if (userValue == 214) {
|
|
||||||
pridEyeHeighInputField.text = input
|
|
||||||
}
|
}
|
||||||
|
revivePersonalInfoDialog.eyeHeight = val.toFixed(2)
|
||||||
|
text = val.toFixed(2)
|
||||||
|
} else {
|
||||||
|
text = val.toFixed(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyPushButton2 {
|
MyPushButton2 {
|
||||||
id: pridEyeHeighPlusButton
|
id: pridEyeHeighPlusButton
|
||||||
Layout.preferredWidth: 40
|
Layout.preferredWidth: 40
|
||||||
text: "+"
|
text: "+"
|
||||||
onClicked: {
|
onClicked: {
|
||||||
|
revivePersonalInfoDialog.eyeHeight = (revivePersonalInfoDialog.eyeHeight + 0.01).toFixed(2)
|
||||||
|
pridEyeHeighInputField.text = revivePersonalInfoDialog.eyeHeight.toFixed(2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function openPopup() {
|
function openPopup() {
|
||||||
|
rpidUsername.text = ReviveTabController.piUsername
|
||||||
|
rpidName.text = ReviveTabController.piName
|
||||||
|
rpidGender.currentIndex = ReviveTabController.piGender
|
||||||
|
playerHeight = ReviveTabController.piPlayerHeight
|
||||||
|
pridPlayerHeighInputField.text = playerHeight.toFixed(2)
|
||||||
|
eyeHeight = ReviveTabController.piEyeHeight
|
||||||
|
pridEyeHeighInputField.text = eyeHeight.toFixed(2)
|
||||||
open()
|
open()
|
||||||
}
|
}
|
||||||
onClosed: {
|
onClosed: {
|
||||||
|
if (okClicked) {
|
||||||
|
ReviveTabController.setPiUsername(rpidUsername.text, false)
|
||||||
|
ReviveTabController.setPiName(rpidName.text, false)
|
||||||
|
ReviveTabController.setPiGender(rpidGender.currentIndex, false)
|
||||||
|
ReviveTabController.setPiPlayerHeight(playerHeight, false)
|
||||||
|
ReviveTabController.setPiEyeHeight(eyeHeight, false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -672,10 +777,71 @@ MyStackViewPage {
|
|||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
}*/
|
pixelsPerDisplayPixelToggle.checked = ReviveTabController.pixelsPerDisplayPixelOverrideEnabled
|
||||||
|
var v = ReviveTabController.pixelsPerDisplayPixelOverride.toFixed(1)
|
||||||
|
pixelsPerDisplayPixelSlider.value = v
|
||||||
|
pixelsPerDisplayPixelText.text = v
|
||||||
|
|
||||||
/*Connections {
|
gripButtonModeComboBox.currentIndex = ReviveTabController.gripButtonMode
|
||||||
}*/
|
|
||||||
|
v = ReviveTabController.thumbDeadzone.toFixed(2)
|
||||||
|
thumbDeadzoneSlider.value = v
|
||||||
|
thumbDeadzoneText.text = v
|
||||||
|
|
||||||
|
v = ReviveTabController.thumbRange.toFixed(2)
|
||||||
|
thumbRangeSlider.value = v
|
||||||
|
thumbRangeText.text = v
|
||||||
|
|
||||||
|
touchPitchInputField.text = ReviveTabController.touchPitch.toFixed(1) + "°"
|
||||||
|
touchYawInputField.text = ReviveTabController.touchYaw.toFixed(1) + "°"
|
||||||
|
touchRollInputField.text = ReviveTabController.touchRoll.toFixed(1) + "°"
|
||||||
|
touchXInputField.text = ReviveTabController.touchX.toFixed(3)
|
||||||
|
touchYInputField.text = ReviveTabController.touchY.toFixed(3)
|
||||||
|
touchZInputField.text = ReviveTabController.touchZ.toFixed(3)
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: ReviveTabController
|
||||||
|
onGripButtonModeChanged : {
|
||||||
|
gripButtonModeComboBox.currentIndex = ReviveTabController.gripButtonMode
|
||||||
|
}
|
||||||
|
onPixelsPerDisplayPixelOverrideEnabledChanged : {
|
||||||
|
pixelsPerDisplayPixelToggle.checked = ReviveTabController.pixelsPerDisplayPixelOverrideEnabled
|
||||||
|
}
|
||||||
|
onPixelsPerDisplayPixelOverrideChanged : {
|
||||||
|
var v = ReviveTabController.pixelsPerDisplayPixelOverride.toFixed(1)
|
||||||
|
pixelsPerDisplayPixelSlider.value = v
|
||||||
|
pixelsPerDisplayPixelText.text = v
|
||||||
|
}
|
||||||
|
onThumbDeadzoneChanged : {
|
||||||
|
var v = ReviveTabController.thumbDeadzone.toFixed(2)
|
||||||
|
thumbDeadzoneSlider.value = v
|
||||||
|
thumbDeadzoneText.text = v
|
||||||
|
}
|
||||||
|
onThumbRangeChanged : {
|
||||||
|
var v = ReviveTabController.thumbRange.toFixed(2)
|
||||||
|
thumbRangeSlider.value = v
|
||||||
|
thumbRangeText.text = v
|
||||||
|
}
|
||||||
|
onTouchPitchChanged : {
|
||||||
|
touchPitchInputField.text = ReviveTabController.touchPitch.toFixed(1) + "°"
|
||||||
|
}
|
||||||
|
onTouchYawChanged : {
|
||||||
|
touchYawInputField.text = ReviveTabController.touchYaw.toFixed(1) + "°"
|
||||||
|
}
|
||||||
|
onTouchRollChanged : {
|
||||||
|
touchRollInputField.text = ReviveTabController.touchRoll.toFixed(1) + "°"
|
||||||
|
}
|
||||||
|
onTouchXChanged : {
|
||||||
|
touchXInputField.text = ReviveTabController.touchX.toFixed(3)
|
||||||
|
}
|
||||||
|
onTouchYChanged : {
|
||||||
|
touchYInputField.text = ReviveTabController.touchY.toFixed(3)
|
||||||
|
}
|
||||||
|
onTouchZChanged : {
|
||||||
|
touchZInputField.text = ReviveTabController.touchZ.toFixed(3)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ MyStackViewPage {
|
|||||||
activationSoundEnabled: false
|
activationSoundEnabled: false
|
||||||
text: "Revive"
|
text: "Revive"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
visible: ReviveTabController.isOverlayInstalled
|
||||||
onClicked: {
|
onClicked: {
|
||||||
MyResources.playFocusChangedSound()
|
MyResources.playFocusChangedSound()
|
||||||
mainView.push(revivePage)
|
mainView.push(revivePage)
|
||||||
|
|||||||
@@ -84,6 +84,7 @@ void OverlayController::Init(QQmlEngine* qmlEngine) {
|
|||||||
audioTabController.initStage1();
|
audioTabController.initStage1();
|
||||||
statisticsTabController.initStage1();
|
statisticsTabController.initStage1();
|
||||||
settingsTabController.initStage1();
|
settingsTabController.initStage1();
|
||||||
|
reviveTabController.initStage1();
|
||||||
|
|
||||||
// Set qml context
|
// Set qml context
|
||||||
qmlEngine->rootContext()->setContextProperty("applicationVersion", getVersionString());
|
qmlEngine->rootContext()->setContextProperty("applicationVersion", getVersionString());
|
||||||
@@ -130,6 +131,11 @@ void OverlayController::Init(QQmlEngine* qmlEngine) {
|
|||||||
QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership);
|
QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership);
|
||||||
return obj;
|
return obj;
|
||||||
});
|
});
|
||||||
|
qmlRegisterSingletonType<SteamVRTabController>("matzman666.advsettings", 1, 0, "ReviveTabController", [](QQmlEngine*, QJSEngine*) {
|
||||||
|
QObject* obj = &getInstance()->reviveTabController;
|
||||||
|
QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership);
|
||||||
|
return obj;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayController::Shutdown() {
|
void OverlayController::Shutdown() {
|
||||||
@@ -213,6 +219,7 @@ void OverlayController::SetWidget(QQuickItem* quickItem, const std::string& name
|
|||||||
audioTabController.initStage2(this, m_pWindow.get());
|
audioTabController.initStage2(this, m_pWindow.get());
|
||||||
statisticsTabController.initStage2(this, m_pWindow.get());
|
statisticsTabController.initStage2(this, m_pWindow.get());
|
||||||
settingsTabController.initStage2(this, m_pWindow.get());
|
settingsTabController.initStage2(this, m_pWindow.get());
|
||||||
|
reviveTabController.initStage2(this, m_pWindow.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -265,6 +272,7 @@ void OverlayController::OnTimeoutPumpEvents() {
|
|||||||
steamVRTabController.eventLoopTick();
|
steamVRTabController.eventLoopTick();
|
||||||
chaperoneTabController.eventLoopTick();
|
chaperoneTabController.eventLoopTick();
|
||||||
settingsTabController.eventLoopTick();
|
settingsTabController.eventLoopTick();
|
||||||
|
reviveTabController.eventLoopTick();
|
||||||
audioTabController.eventLoopTick();
|
audioTabController.eventLoopTick();
|
||||||
|
|
||||||
vr::VREvent_t vrEvent;
|
vr::VREvent_t vrEvent;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
#include "tabcontrollers/AudioTabController.h"
|
#include "tabcontrollers/AudioTabController.h"
|
||||||
#include "tabcontrollers/StatisticsTabController.h"
|
#include "tabcontrollers/StatisticsTabController.h"
|
||||||
#include "tabcontrollers/SettingsTabController.h"
|
#include "tabcontrollers/SettingsTabController.h"
|
||||||
|
#include "tabcontrollers/ReviveTabController.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ class OverlayController : public QObject {
|
|||||||
public:
|
public:
|
||||||
static constexpr const char* applicationKey = "matzman666.AdvancedSettings";
|
static constexpr const char* applicationKey = "matzman666.AdvancedSettings";
|
||||||
static constexpr const char* applicationName = "Advanced Settings";
|
static constexpr const char* applicationName = "Advanced Settings";
|
||||||
static constexpr const char* applicationVersionString = "v2.1";
|
static constexpr const char* applicationVersionString = "v2.2a";
|
||||||
|
|
||||||
private:
|
private:
|
||||||
vr::VROverlayHandle_t m_ulOverlayHandle = vr::k_ulOverlayHandleInvalid;
|
vr::VROverlayHandle_t m_ulOverlayHandle = vr::k_ulOverlayHandleInvalid;
|
||||||
@@ -73,6 +74,7 @@ private:
|
|||||||
AudioTabController audioTabController;
|
AudioTabController audioTabController;
|
||||||
StatisticsTabController statisticsTabController;
|
StatisticsTabController statisticsTabController;
|
||||||
SettingsTabController settingsTabController;
|
SettingsTabController settingsTabController;
|
||||||
|
ReviveTabController reviveTabController;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OverlayController(bool desktopMode, bool noSound) : QObject(), desktopMode(desktopMode), noSound(noSound) {}
|
OverlayController(bool desktopMode, bool noSound) : QObject(), desktopMode(desktopMode), noSound(noSound) {}
|
||||||
|
|||||||
@@ -0,0 +1,585 @@
|
|||||||
|
#include "ReviveTabController.h"
|
||||||
|
#include <QQuickWindow>
|
||||||
|
#include "../overlaycontroller.h"
|
||||||
|
|
||||||
|
// application namespace
|
||||||
|
namespace advsettings {
|
||||||
|
|
||||||
|
const char* appkey_overlay = "revive.dashboard.overlay";
|
||||||
|
const char* section_revive = "revive";
|
||||||
|
const char* key_pixelsPerDisplayPixel = "pixelsPerDisplayPixel";
|
||||||
|
const char* key_toggleGrip = "ToggleGrip";
|
||||||
|
const char* key_thumbDeadzone = "ThumbDeadzone";
|
||||||
|
const char* key_thumbSensitivity = "ThumbSensitivity";
|
||||||
|
const char* key_touchPitch = "TouchPitch";
|
||||||
|
const char* key_touchYaw = "TouchYaw";
|
||||||
|
const char* key_touchRoll = "TouchRoll";
|
||||||
|
const char* key_touchX = "TouchX";
|
||||||
|
const char* key_touchY = "TouchY";
|
||||||
|
const char* key_touchZ = "TouchZ";
|
||||||
|
const char* key_playerHeight = "PlayerHeight";
|
||||||
|
const char* key_eyeHeight = "EyeHeight";
|
||||||
|
const char* key_piUser = "User";
|
||||||
|
const char* key_piName = "Name";
|
||||||
|
const char* key_piGender = "Gender";
|
||||||
|
|
||||||
|
|
||||||
|
void ReviveTabController::initStage1() {
|
||||||
|
m_isOverlayInstalled = vr::VRApplications()->IsApplicationInstalled(appkey_overlay);
|
||||||
|
if (m_isOverlayInstalled) {
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
|
||||||
|
float valuef = vr::VRSettings()->GetFloat(section_revive, key_pixelsPerDisplayPixel, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_pixelsPerDisplayPixel << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
if (m_pixelsPerDisplayPixelOverride == 0.0) {
|
||||||
|
m_pixelsPerDisplayPixelOverrideEnabled = false;
|
||||||
|
m_pixelsPerDisplayPixelOverride = 1.0;
|
||||||
|
} else {
|
||||||
|
m_pixelsPerDisplayPixelOverrideEnabled = true;
|
||||||
|
m_pixelsPerDisplayPixelOverride = valuef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int valuei = vr::VRSettings()->GetInt32(section_revive, key_toggleGrip, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_toggleGrip << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_gripButtonMode = valuei;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_thumbDeadzone, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_thumbDeadzone << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_thumbDeadzone = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_thumbSensitivity, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_thumbSensitivity << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_thumbRange = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchPitch, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_touchPitch << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_touchPitch = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchYaw, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_touchYaw << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_touchYaw = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchRoll, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_touchRoll << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_touchRoll = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchX, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_touchX << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_touchX = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchY, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_touchY << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_touchY = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchZ, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_touchZ << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_touchZ = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_playerHeight, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_playerHeight << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_piPlayerHeight = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_eyeHeight, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_eyeHeight << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_piEyeHeight = valuef;
|
||||||
|
}
|
||||||
|
|
||||||
|
char buffer[1024];
|
||||||
|
vr::VRSettings()->GetString(section_revive, key_piUser, buffer, 1024, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_piUser << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_piUsername = buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
vr::VRSettings()->GetString(section_revive, key_piName, buffer, 1024, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_piName << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
m_piName = buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
vr::VRSettings()->GetString(section_revive, key_piGender, buffer, 1024, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not read \"revive::" << key_piGender << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
} else {
|
||||||
|
if (QString(buffer).compare("male", Qt::CaseInsensitive) == 0) {
|
||||||
|
m_piGender = 1;
|
||||||
|
} else if (QString(buffer).compare("female", Qt::CaseInsensitive) == 0) {
|
||||||
|
m_piGender = 2;
|
||||||
|
} else {
|
||||||
|
m_piGender = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::initStage2(OverlayController * parent, QQuickWindow * widget) {
|
||||||
|
this->parent = parent;
|
||||||
|
this->widget = widget;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::eventLoopTick() {
|
||||||
|
if (m_isOverlayInstalled) {
|
||||||
|
if (settingsUpdateCounter >= 50) {
|
||||||
|
settingsUpdateCounter = 0;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
|
||||||
|
float valuef = vr::VRSettings()->GetFloat(section_revive, key_pixelsPerDisplayPixel, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
if (valuef == 0.0) {
|
||||||
|
setPixelsPerDisplayPixelOverrideEnabled(false);
|
||||||
|
} else {
|
||||||
|
setPixelsPerDisplayPixelOverride(valuef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int valuei = vr::VRSettings()->GetInt32(section_revive, key_toggleGrip, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setGripButtonMode(valuei);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_thumbDeadzone, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setThumbDeadzone(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_thumbSensitivity, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setThumbRange(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchPitch, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setTouchPitch(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchYaw, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setTouchYaw(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchRoll, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setTouchRoll(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchX, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setTouchX(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchY, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setTouchY(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_touchZ, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setTouchZ(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_playerHeight, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setPiPlayerHeight(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
valuef = vr::VRSettings()->GetFloat(section_revive, key_eyeHeight, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setPiEyeHeight(valuef);
|
||||||
|
}
|
||||||
|
|
||||||
|
char buffer[1024];
|
||||||
|
vr::VRSettings()->GetString(section_revive, key_piUser, buffer, 1024, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setPiUsername(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
vr::VRSettings()->GetString(section_revive, key_piName, buffer, 1024, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
setPiName(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
vr::VRSettings()->GetString(section_revive, key_piGender, buffer, 1024, &vrSettingsError);
|
||||||
|
if (vrSettingsError == vr::VRSettingsError_None) {
|
||||||
|
if (QString(buffer).compare("male", Qt::CaseInsensitive) == 0) {
|
||||||
|
valuei = 1;
|
||||||
|
} else if (QString(buffer).compare("female", Qt::CaseInsensitive) == 0) {
|
||||||
|
valuei = 2;
|
||||||
|
} else {
|
||||||
|
valuei = 0;
|
||||||
|
}
|
||||||
|
setPiGender(valuei);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
settingsUpdateCounter++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ReviveTabController::isOverlayInstalled() const {
|
||||||
|
return m_isOverlayInstalled;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ReviveTabController::gripButtonMode() const {
|
||||||
|
return m_gripButtonMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ReviveTabController::isPixelsPerDisplayPixelOverrideEnabled() const {
|
||||||
|
return m_pixelsPerDisplayPixelOverrideEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::pixelsPerDisplayPixelOverride() const {
|
||||||
|
return m_pixelsPerDisplayPixelOverride;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::thumbDeadzone() const {
|
||||||
|
return m_thumbDeadzone;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::thumbRange() const {
|
||||||
|
return m_thumbRange;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::touchPitch() const {
|
||||||
|
return m_touchPitch;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::touchYaw() const {
|
||||||
|
return m_touchYaw;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::touchRoll() const {
|
||||||
|
return m_touchRoll;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::touchX() const {
|
||||||
|
return m_touchX;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::touchY() const {
|
||||||
|
return m_touchY;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::touchZ() const {
|
||||||
|
return m_touchZ;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::piPlayerHeight() const {
|
||||||
|
return m_piPlayerHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ReviveTabController::piEyeHeight() const {
|
||||||
|
return m_piEyeHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString& ReviveTabController::piUsername() const {
|
||||||
|
return m_piUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString& ReviveTabController::piName() const {
|
||||||
|
return m_piName;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ReviveTabController::piGender() const {
|
||||||
|
return m_piGender;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setGripButtonMode(int value, bool notify) {
|
||||||
|
if (m_gripButtonMode != value) {
|
||||||
|
m_gripButtonMode = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetInt32(section_revive, key_toggleGrip, m_gripButtonMode, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_toggleGrip << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit gripButtonModeChanged(m_gripButtonMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setPixelsPerDisplayPixelOverrideEnabled(bool value, bool notify) {
|
||||||
|
if (m_pixelsPerDisplayPixelOverrideEnabled != value) {
|
||||||
|
m_pixelsPerDisplayPixelOverrideEnabled = value;
|
||||||
|
if (m_pixelsPerDisplayPixelOverrideEnabled) {
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_pixelsPerDisplayPixel, m_pixelsPerDisplayPixelOverride, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_pixelsPerDisplayPixel << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->RemoveKeyInSection(section_revive, key_pixelsPerDisplayPixel, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not remove \"revive::" << key_pixelsPerDisplayPixel << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit pixelsPerDisplayPixelOverrideEnabledChanged(m_pixelsPerDisplayPixelOverrideEnabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setPixelsPerDisplayPixelOverride(float value, bool notify) {
|
||||||
|
if (m_pixelsPerDisplayPixelOverride != value) {
|
||||||
|
m_pixelsPerDisplayPixelOverride = value;
|
||||||
|
if (m_pixelsPerDisplayPixelOverrideEnabled) {
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_pixelsPerDisplayPixel, m_pixelsPerDisplayPixelOverride, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_pixelsPerDisplayPixel << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
}
|
||||||
|
if (notify) {
|
||||||
|
emit pixelsPerDisplayPixelOverrideChanged(m_pixelsPerDisplayPixelOverride);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setThumbDeadzone(float value, bool notify) {
|
||||||
|
if (m_thumbDeadzone != value) {
|
||||||
|
m_thumbDeadzone = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_thumbDeadzone, m_thumbDeadzone, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_thumbDeadzone << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit thumbDeadzoneChanged(m_thumbDeadzone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setThumbRange(float value, bool notify) {
|
||||||
|
if (m_thumbRange != value) {
|
||||||
|
m_thumbRange = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_thumbSensitivity, m_thumbRange, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_thumbSensitivity << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit thumbRangeChanged(m_thumbRange);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setTouchPitch(float value, bool notify) {
|
||||||
|
if (m_touchPitch != value) {
|
||||||
|
m_touchPitch = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_touchPitch, m_touchPitch, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_touchPitch << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit touchPitchChanged(m_touchPitch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setTouchYaw(float value, bool notify) {
|
||||||
|
if (m_touchYaw != value) {
|
||||||
|
m_touchYaw = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_touchYaw, m_touchYaw, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_touchYaw << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit touchYawChanged(m_touchYaw);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setTouchRoll(float value, bool notify) {
|
||||||
|
if (m_touchRoll != value) {
|
||||||
|
m_touchRoll = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_touchRoll, m_touchRoll, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_touchRoll << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit touchRollChanged(m_touchRoll);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setTouchX(float value, bool notify) {
|
||||||
|
if (m_touchX != value) {
|
||||||
|
m_touchX = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_touchX, m_touchX, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_touchX << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit touchXChanged(m_touchX);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setTouchY(float value, bool notify) {
|
||||||
|
if (m_touchY != value) {
|
||||||
|
m_touchY = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_touchY, m_touchY, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_touchY << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit touchYChanged(m_touchY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setTouchZ(float value, bool notify) {
|
||||||
|
if (m_touchZ != value) {
|
||||||
|
m_touchZ = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_touchZ, m_touchZ, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_touchZ << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit touchZChanged(m_touchZ);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setPiPlayerHeight(float value, bool notify) {
|
||||||
|
if (m_piPlayerHeight != value) {
|
||||||
|
m_piPlayerHeight = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_playerHeight, m_piPlayerHeight, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_playerHeight << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit piPlayerHeightChanged(m_piPlayerHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setPiEyeHeight(float value, bool notify) {
|
||||||
|
if (m_piEyeHeight != value) {
|
||||||
|
m_piEyeHeight = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetFloat(section_revive, key_eyeHeight, m_piEyeHeight, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_eyeHeight << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit piEyeHeightChanged(m_piEyeHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setPiUsername(const QString& value, bool notify) {
|
||||||
|
if (m_piUsername.compare(value) != 0) {
|
||||||
|
m_piUsername = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetString(section_revive, key_piUser, m_piUsername.toStdString().c_str(), &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_piUser << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit piUsernameChanged(m_piUsername);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setPiName(const QString& value, bool notify) {
|
||||||
|
if (m_piName.compare(value) != 0) {
|
||||||
|
m_piName = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
vr::VRSettings()->SetString(section_revive, key_piName, m_piName.toStdString().c_str(), &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_piName << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit piNameChanged(m_piName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReviveTabController::setPiGender(int value, bool notify) {
|
||||||
|
if (m_piGender != value) {
|
||||||
|
m_piGender = value;
|
||||||
|
vr::EVRSettingsError vrSettingsError;
|
||||||
|
char* txt;
|
||||||
|
switch (value) {
|
||||||
|
case 1:
|
||||||
|
txt = (char*)"Male";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
txt = (char*)"Female";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
txt = (char*)"Unknown";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
vr::VRSettings()->SetString(section_revive, key_piGender, txt, &vrSettingsError);
|
||||||
|
if (vrSettingsError != vr::VRSettingsError_None) {
|
||||||
|
LOG(WARNING) << "Could not set \"revive::" << key_piGender << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
|
||||||
|
}
|
||||||
|
vr::VRSettings()->Sync();
|
||||||
|
if (notify) {
|
||||||
|
emit piGenderChanged(m_piGender);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace advconfig
|
||||||
@@ -0,0 +1,135 @@
|
|||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class QQuickWindow;
|
||||||
|
// application namespace
|
||||||
|
namespace advsettings {
|
||||||
|
|
||||||
|
|
||||||
|
// forward declaration
|
||||||
|
class OverlayController;
|
||||||
|
|
||||||
|
|
||||||
|
class ReviveTabController : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(int isOverlayInstalled READ isOverlayInstalled NOTIFY isOverlayInstalledChanged)
|
||||||
|
Q_PROPERTY(int gripButtonMode READ gripButtonMode WRITE setGripButtonMode NOTIFY gripButtonModeChanged)
|
||||||
|
Q_PROPERTY(bool pixelsPerDisplayPixelOverrideEnabled READ isPixelsPerDisplayPixelOverrideEnabled WRITE setPixelsPerDisplayPixelOverrideEnabled NOTIFY pixelsPerDisplayPixelOverrideEnabledChanged)
|
||||||
|
Q_PROPERTY(float pixelsPerDisplayPixelOverride READ pixelsPerDisplayPixelOverride WRITE setPixelsPerDisplayPixelOverride NOTIFY pixelsPerDisplayPixelOverrideChanged)
|
||||||
|
Q_PROPERTY(float thumbDeadzone READ thumbDeadzone WRITE setThumbDeadzone NOTIFY thumbDeadzoneChanged)
|
||||||
|
Q_PROPERTY(float thumbRange READ thumbRange WRITE setThumbRange NOTIFY thumbRangeChanged)
|
||||||
|
Q_PROPERTY(float touchPitch READ touchPitch WRITE setTouchPitch NOTIFY touchPitchChanged)
|
||||||
|
Q_PROPERTY(float touchYaw READ touchYaw WRITE setTouchYaw NOTIFY touchYawChanged)
|
||||||
|
Q_PROPERTY(float touchRoll READ touchRoll WRITE setTouchRoll NOTIFY touchRollChanged)
|
||||||
|
Q_PROPERTY(float touchX READ touchX WRITE setTouchX NOTIFY touchXChanged)
|
||||||
|
Q_PROPERTY(float touchY READ touchY WRITE setTouchY NOTIFY touchYChanged)
|
||||||
|
Q_PROPERTY(float touchZ READ touchZ WRITE setTouchZ NOTIFY touchZChanged)
|
||||||
|
Q_PROPERTY(float piPlayerHeight READ piPlayerHeight WRITE setPiPlayerHeight NOTIFY piPlayerHeightChanged)
|
||||||
|
Q_PROPERTY(float piEyeHeight READ piEyeHeight WRITE setPiEyeHeight NOTIFY piEyeHeightChanged)
|
||||||
|
Q_PROPERTY(QString piUsername READ piUsername WRITE setPiUsername NOTIFY piUsernameChanged)
|
||||||
|
Q_PROPERTY(QString piName READ piName WRITE setPiName NOTIFY piNameChanged)
|
||||||
|
Q_PROPERTY(int piGender READ piGender WRITE setPiGender NOTIFY piGenderChanged)
|
||||||
|
|
||||||
|
private:
|
||||||
|
OverlayController* parent;
|
||||||
|
QQuickWindow* widget;
|
||||||
|
|
||||||
|
bool m_isOverlayInstalled = false;
|
||||||
|
int m_gripButtonMode = 0;
|
||||||
|
bool m_pixelsPerDisplayPixelOverrideEnabled = false;
|
||||||
|
float m_pixelsPerDisplayPixelOverride = 1.0;
|
||||||
|
float m_thumbDeadzone = 0.3f;
|
||||||
|
float m_thumbRange = 2.0f;
|
||||||
|
float m_touchPitch = -28.0f;
|
||||||
|
float m_touchYaw = 0.0f;
|
||||||
|
float m_touchRoll = -14.0f;
|
||||||
|
float m_touchX = 0.016f;
|
||||||
|
float m_touchY = 0.0f;
|
||||||
|
float m_touchZ = 0.016f;
|
||||||
|
float m_piPlayerHeight = 1.778f;
|
||||||
|
float m_piEyeHeight = 1.675f;
|
||||||
|
QString m_piUsername = "";
|
||||||
|
QString m_piName = "";
|
||||||
|
int m_piGender = 0; // 0 .. Unknown, 1 .. Male, 2 .. Female
|
||||||
|
|
||||||
|
unsigned settingsUpdateCounter = 0;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void initStage1();
|
||||||
|
void initStage2(OverlayController* parent, QQuickWindow* widget);
|
||||||
|
|
||||||
|
void eventLoopTick();
|
||||||
|
|
||||||
|
bool isOverlayInstalled() const;
|
||||||
|
|
||||||
|
int gripButtonMode() const;
|
||||||
|
|
||||||
|
bool isPixelsPerDisplayPixelOverrideEnabled() const;
|
||||||
|
float pixelsPerDisplayPixelOverride() const;
|
||||||
|
|
||||||
|
float thumbDeadzone() const;
|
||||||
|
float thumbRange() const;
|
||||||
|
|
||||||
|
float touchPitch() const;
|
||||||
|
float touchYaw() const;
|
||||||
|
float touchRoll() const;
|
||||||
|
float touchX() const;
|
||||||
|
float touchY() const;
|
||||||
|
float touchZ() const;
|
||||||
|
|
||||||
|
float piPlayerHeight() const;
|
||||||
|
float piEyeHeight() const;
|
||||||
|
const QString& piUsername() const;
|
||||||
|
const QString& piName() const;
|
||||||
|
int piGender() const; // 0 .. Unknown, 1 .. Male, 2 .. Female
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setGripButtonMode(int value, bool notify = true);
|
||||||
|
|
||||||
|
void setPixelsPerDisplayPixelOverrideEnabled(bool value, bool notify = true);
|
||||||
|
void setPixelsPerDisplayPixelOverride(float value, bool notify = true);
|
||||||
|
|
||||||
|
void setThumbDeadzone(float value, bool notify = true);
|
||||||
|
void setThumbRange(float value, bool notify = true);
|
||||||
|
|
||||||
|
void setTouchPitch(float value, bool notify = true);
|
||||||
|
void setTouchYaw(float value, bool notify = true);
|
||||||
|
void setTouchRoll(float value, bool notify = true);
|
||||||
|
void setTouchX(float value, bool notify = true);
|
||||||
|
void setTouchY(float value, bool notify = true);
|
||||||
|
void setTouchZ(float value, bool notify = true);
|
||||||
|
|
||||||
|
void setPiPlayerHeight(float value, bool notify = true);
|
||||||
|
void setPiEyeHeight(float value, bool notify = true);
|
||||||
|
void setPiUsername(const QString& value, bool notify = true);
|
||||||
|
void setPiName(const QString& value, bool notify = true);
|
||||||
|
void setPiGender(int value, bool notify = true); // 0 .. Unknown, 1 .. Male, 2 .. Female
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void isOverlayInstalledChanged(bool value);
|
||||||
|
|
||||||
|
void gripButtonModeChanged(int value);
|
||||||
|
|
||||||
|
void pixelsPerDisplayPixelOverrideEnabledChanged(bool value);
|
||||||
|
void pixelsPerDisplayPixelOverrideChanged(float value);
|
||||||
|
|
||||||
|
void thumbDeadzoneChanged(float value);
|
||||||
|
void thumbRangeChanged(float value);
|
||||||
|
|
||||||
|
void touchPitchChanged(float value);
|
||||||
|
void touchYawChanged(float value);
|
||||||
|
void touchRollChanged(float value);
|
||||||
|
void touchXChanged(float value);
|
||||||
|
void touchYChanged(float value);
|
||||||
|
void touchZChanged(float value);
|
||||||
|
|
||||||
|
void piPlayerHeightChanged(float value);
|
||||||
|
void piEyeHeightChanged(float value);
|
||||||
|
void piUsernameChanged(const QString& value);
|
||||||
|
void piNameChanged(const QString& value);
|
||||||
|
void piGenderChanged(int value);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace advsettings
|
||||||
Reference in New Issue
Block a user