Reimplemented sound effects.

Added chaperone proximity warnings.
Other bugfixes and improvements.
This commit is contained in:
2017-08-15 21:44:29 +02:00
parent 0bc693c76b
commit f48b583aca
17 changed files with 1523 additions and 54 deletions
+23 -2
View File
@@ -3,6 +3,7 @@ import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Dialogs 1.2
import matzman666.advsettings 1.0
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
MyStackViewPage {
headerText: "Chaperone Settings"
@@ -102,6 +103,11 @@ MyStackViewPage {
Layout.leftMargin: 32
text: "Force Bounds Setting"
}
MyToggleButton {
id: chaperoneNewProfileIncludeProximityWarnings
Layout.leftMargin: 32
text: "Proximity Warning Settings"
}
}
onClosed: {
if (okClicked) {
@@ -115,7 +121,8 @@ MyStackViewPage {
&& !chaperoneNewProfileIncludeFloorBoundsMarker.checked
&& !chaperoneNewProfileIncludeBoundsColor.checked
&& !chaperoneNewProfileIncludeStyle.checked
&& !chaperoneNewProfileIncludeForceBounds.checked) {
&& !chaperoneNewProfileIncludeForceBounds.checked
&& !chaperoneNewProfileIncludeProximityWarnings.checked) {
chaperoneMessageDialog.showMessage("Create New Profile", "ERROR: Nothing included.")
} else {
ChaperoneTabController.addChaperoneProfile(chaperoneNewProfileName.text,
@@ -127,7 +134,8 @@ MyStackViewPage {
chaperoneNewProfileIncludeFloorBoundsMarker.checked,
chaperoneNewProfileIncludeBoundsColor.checked,
chaperoneNewProfileIncludeStyle.checked,
chaperoneNewProfileIncludeForceBounds.checked)
chaperoneNewProfileIncludeForceBounds.checked,
chaperoneNewProfileIncludeProximityWarnings.checked)
}
}
@@ -143,6 +151,7 @@ MyStackViewPage {
chaperoneNewProfileIncludeBoundsColor.checked = false
chaperoneNewProfileIncludeStyle.checked = false
chaperoneNewProfileIncludeForceBounds.checked = false
chaperoneNewProfileIncludeProximityWarnings.checked = false
open()
}
}
@@ -440,6 +449,18 @@ MyStackViewPage {
ChaperoneTabController.setForceBounds(this.checked, false)
}
}
Item { Layout.fillWidth: true }
MyPushButton {
id: chaperoneWarningsConfigButton
text: "Proximity Warning Settings"
Layout.preferredWidth: 350
onClicked: {
MyResources.playFocusChangedSound()
mainView.push(chaperoneWarningsPage)
}
}
}
MyPushButton {
+567
View File
@@ -0,0 +1,567 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Dialogs 1.2
import matzman666.advsettings 1.0
import "." // QTBUG-34418, singletons require explicit import to load qmldir file
MyStackViewPage {
headerText: "Chaperone Proximity Warning Settings"
ColorDialog {
id: colorDialog
title: "Please choose a color"
onAccepted: {
console.log("You chose: " + colorDialog.color)
Qt.quit()
}
onRejected: {
console.log("Canceled")
Qt.quit()
}
}
content: ColumnLayout {
spacing: 36
ColumnLayout {
spacing: 0
MyToggleButton {
id: switchBeginnerToggle
text: "Switch to Beginner Mode"
onCheckedChanged: {
ChaperoneTabController.chaperoneSwitchToBeginnerEnabled = checked
}
}
RowLayout {
MyText {
text: "Activation Distance: "
Layout.preferredWidth: 250
}
MyPushButton2 {
id: switchBeginnerDistanceMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
var val = ChaperoneTabController.chaperoneSwitchToBeginnerDistance - 0.1
if (val <= 0) {
val = 0.1;
}
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val.toFixed(2)
}
}
MySlider {
id: switchBeginnerDistanceSlider
from: 0
to: 2.0
stepSize: 0.01
value: 0.5
Layout.fillWidth: true
onPositionChanged: {
var val = this.from + ( this.position * (this.to - this.from))
switchBeginnerDistanceText.text = val.toFixed(2)
}
onValueChanged: {
var val = switchBeginnerDistanceSlider.value.toFixed(2)
if (val < 0.01) {
val = 0.01
}
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val
switchBeginnerDistanceText.text = val
}
}
MyPushButton2 {
id: switchBeginnerDistancePlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
var val = ChaperoneTabController.chaperoneSwitchToBeginnerDistance + 0.1
if (val > 2.0) {
val = 2.0;
}
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val.toFixed(2)
}
}
MyTextField {
id: switchBeginnerDistanceText
text: "0.00"
keyBoardUID: 801
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.01
}
val = val.toFixed(2)
ChaperoneTabController.chaperoneSwitchToBeginnerDistance = val
text = val
} else {
text = ChaperoneTabController.chaperoneSwitchToBeginnerDistance.toFixed(2)
}
}
}
}
}
ColumnLayout {
spacing: 0
MyToggleButton {
id: hapticFeedbackToggle
text: "Trigger Haptic Feedback"
onCheckedChanged: {
ChaperoneTabController.chaperoneHapticFeedbackEnabled = checked
}
}
RowLayout {
MyText {
text: "Activation Distance: "
Layout.preferredWidth: 250
}
MyPushButton2 {
id: hapticFeedbackDistanceMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
var val = ChaperoneTabController.chaperoneHapticFeedbackDistance - 0.1
if (val <= 0) {
val = 0.1;
}
ChaperoneTabController.chaperoneHapticFeedbackDistance = val.toFixed(2)
}
}
MySlider {
id: hapticFeedbackDistanceSlider
from: 0
to: 2.0
stepSize: 0.01
value: 0.5
Layout.fillWidth: true
onPositionChanged: {
var val = this.from + ( this.position * (this.to - this.from))
hapticFeedbackDistanceText.text = val.toFixed(2)
}
onValueChanged: {
var val = hapticFeedbackDistanceSlider.value.toFixed(2)
if (val < 0.01) {
val = 0.01
}
ChaperoneTabController.chaperoneHapticFeedbackDistance = val
hapticFeedbackDistanceText.text = val
}
}
MyPushButton2 {
id: hapticFeedbackDistancePlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
var val = ChaperoneTabController.chaperoneHapticFeedbackDistance + 0.1
if (val > 2.0) {
val = 2.0;
}
ChaperoneTabController.chaperoneHapticFeedbackDistance = val.toFixed(2)
}
}
MyTextField {
id: hapticFeedbackDistanceText
text: "0.00"
keyBoardUID: 805
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.01
}
val = val.toFixed(2)
ChaperoneTabController.chaperoneHapticFeedbackDistance = val
text = val
} else {
text = ChaperoneTabController.chaperoneHapticFeedbackDistance.toFixed(2)
}
}
}
}
}
ColumnLayout {
spacing: 0
RowLayout {
spacing: 32
MyToggleButton {
id: audioWarningToggle
text: "Audio Warning"
onCheckedChanged: {
ChaperoneTabController.chaperoneAlarmSoundEnabled = checked
}
}
MyToggleButton {
id: audioWarningLoopingToggle
text: "Loop Audio"
onCheckedChanged: {
ChaperoneTabController.chaperoneAlarmSoundLooping = checked
audioWarningAdjustVolumeToggle.enabled = checked
}
}
MyToggleButton {
id: audioWarningAdjustVolumeToggle
text: "Adjust Volume"
enabled: false
onCheckedChanged: {
ChaperoneTabController.chaperoneAlarmSoundAdjustVolume = checked
}
}
}
RowLayout {
MyText {
text: "Activation Distance: "
Layout.preferredWidth: 250
}
MyPushButton2 {
id: audioWarningDistanceMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
var val = ChaperoneTabController.chaperoneAlarmSoundDistance - 0.1
if (val <= 0.0) {
val = 0.01;
}
ChaperoneTabController.chaperoneAlarmSoundDistance = val.toFixed(2)
}
}
MySlider {
id: audioWarningDistanceSlider
from: 0
to: 2.0
stepSize: 0.01
value: 0.5
Layout.fillWidth: true
onPositionChanged: {
var val = this.from + ( this.position * (this.to - this.from))
audioWarningDistanceText.text = val.toFixed(2)
}
onValueChanged: {
var val = audioWarningDistanceSlider.value.toFixed(2)
if (val < 0.01) {
val = 0.01
}
ChaperoneTabController.chaperoneAlarmSoundDistance = val
audioWarningDistanceText.text = val
}
}
MyPushButton2 {
id: audioWarningDistancePlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
var val = ChaperoneTabController.chaperoneAlarmSoundDistance + 0.1
if (val > 2.0) {
val = 2.0;
}
ChaperoneTabController.chaperoneAlarmSoundDistance = val.toFixed(2)
}
}
MyTextField {
id: audioWarningDistanceText
text: "0.00"
keyBoardUID: 802
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.01
}
val = val.toFixed(2)
ChaperoneTabController.chaperoneAlarmSoundDistance = val
text = val
} else {
text = ChaperoneTabController.chaperoneAlarmSoundDistance.toFixed(2)
}
}
}
}
}
ColumnLayout {
spacing: 0
MyToggleButton {
id: openDashboardToggle
text: "Open Dashboard"
onCheckedChanged: {
ChaperoneTabController.chaperoneShowDashboardEnabled = checked
}
}
RowLayout {
MyText {
text: "Activation Distance: "
Layout.preferredWidth: 250
}
MyPushButton2 {
id: openDashboardDistanceMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
var val = ChaperoneTabController.chaperoneShowDashboardDistance - 0.1
if (val <= 0.0) {
val = 0.01;
}
ChaperoneTabController.chaperoneShowDashboardDistance = val.toFixed(2)
}
}
MySlider {
id: openDashboardDistanceSlider
from: 0
to: 2.0
stepSize: 0.01
value: 0.5
Layout.fillWidth: true
onPositionChanged: {
var val = this.from + ( this.position * (this.to - this.from))
openDashboardDistanceText.text = val.toFixed(2)
}
onValueChanged: {
var val = openDashboardDistanceSlider.value.toFixed(2)
if (val < 0.01) {
val = 0.01
}
ChaperoneTabController.chaperoneShowDashboardDistance = val
openDashboardDistanceText.text = val
}
}
MyPushButton2 {
id: openDashboardDistancePlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
var val = ChaperoneTabController.chaperoneShowDashboardDistance + 0.1
if (val > 2.0) {
val = 2.0;
}
ChaperoneTabController.chaperoneShowDashboardDistance = val.toFixed(2)
}
}
MyTextField {
id: openDashboardDistanceText
text: "0.00"
keyBoardUID: 803
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.01
}
val = val.toFixed(2)
ChaperoneTabController.chaperoneShowDashboardDistance = val
text = val
} else {
text = ChaperoneTabController.chaperoneShowDashboardDistance.toFixed(2)
}
}
}
}
}
ColumnLayout {
spacing: 0
MyToggleButton {
id: velModifierToggle
text: "Velocity Dependent Fade/Activation Distance"
onCheckedChanged: {
ChaperoneTabController.chaperoneVelocityModifierEnabled = checked
}
}
RowLayout {
MyText {
text: "Distance Modifier: "
Layout.preferredWidth: 250
}
MyPushButton2 {
id: velModifierMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
var val = ChaperoneTabController.chaperoneVelocityModifier - 0.01
if (val < 0.0) {
val = 0.0;
}
ChaperoneTabController.chaperoneVelocityModifier = val.toFixed(2)
}
}
MySlider {
id: velModifierSlider
from: 0
to: 1.0
stepSize: 0.01
value: 0.3
Layout.fillWidth: true
onPositionChanged: {
var val = this.from + ( this.position * (this.to - this.from))
velModifierText.text = val.toFixed(2)
}
onValueChanged: {
var val = velModifierSlider.value.toFixed(2)
if (val < 0.0) {
val = 0.0
}
ChaperoneTabController.chaperoneVelocityModifier = val
velModifierText.text = val
}
}
MyPushButton2 {
id: velModifierPlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
var val = ChaperoneTabController.chaperoneVelocityModifier + 0.01
if (val > 1.0) {
val = 1.0;
}
ChaperoneTabController.chaperoneVelocityModifier = val.toFixed(2)
}
}
MyTextField {
id: velModifierText
text: "0.00"
keyBoardUID: 803
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
}
val = val.toFixed(2)
ChaperoneTabController.chaperoneVelocityModifier = val
text = val
} else {
text = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2)
}
}
}
}
}
Item { Layout.fillHeight: true; Layout.fillWidth: true }
Component.onCompleted: {
switchBeginnerToggle.checked = ChaperoneTabController.chaperoneSwitchToBeginnerEnabled
var d = ChaperoneTabController.chaperoneSwitchToBeginnerDistance.toFixed(2)
if (d <= switchBeginnerDistanceSlider.to) {
switchBeginnerDistanceSlider.value = d
}
switchBeginnerDistanceText.text = d
hapticFeedbackToggle.checked = ChaperoneTabController.chaperoneHapticFeedbackEnabled
var d = ChaperoneTabController.chaperoneHapticFeedbackDistance.toFixed(2)
if (d <= hapticFeedbackDistanceSlider.to) {
hapticFeedbackDistanceSlider.value = d
}
hapticFeedbackDistanceText.text = d
audioWarningToggle.checked = ChaperoneTabController.chaperoneAlarmSoundEnabled
audioWarningLoopingToggle.checked = ChaperoneTabController.chaperoneAlarmSoundLooping
audioWarningAdjustVolumeToggle.checked = ChaperoneTabController.chaperoneAlarmSoundAdjustVolume
d = ChaperoneTabController.chaperoneAlarmSoundDistance.toFixed(2)
if (d <= audioWarningDistanceSlider.to) {
audioWarningDistanceSlider.value = d
}
audioWarningDistanceText.text = d
openDashboardToggle.checked = ChaperoneTabController.chaperoneShowDashboardEnabled
d = ChaperoneTabController.chaperoneShowDashboardDistance.toFixed(2)
if (d <= openDashboardDistanceSlider.to) {
openDashboardDistanceSlider.value = d
}
openDashboardDistanceText.text = d
velModifierToggle.checked = ChaperoneTabController.chaperoneVelocityModifierEnabled
d = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2)
if (d <= velModifierSlider.to) {
velModifierSlider.value = d
}
velModifierText.text = d
}
Connections {
target: ChaperoneTabController
onChaperoneSwitchToBeginnerEnabledChanged: {
switchBeginnerToggle.checked = ChaperoneTabController.chaperoneSwitchToBeginnerEnabled
}
onChaperoneSwitchToBeginnerDistanceChanged: {
var d = ChaperoneTabController.chaperoneSwitchToBeginnerDistance.toFixed(2)
if (d <= switchBeginnerDistanceSlider.to && Math.abs(switchBeginnerDistanceSlider.value - d) > 0.0008) {
switchBeginnerDistanceSlider.value = d
}
switchBeginnerDistanceText.text = d
}
onChaperoneHapticFeedbackEnabledChanged: {
hapticFeedbackToggle.checked = ChaperoneTabController.chaperoneHapticFeedbackEnabled
}
onChaperoneHapticFeedbackDistanceChanged: {
var d = ChaperoneTabController.chaperoneHapticFeedbackDistance.toFixed(2)
if (d <= hapticFeedbackDistanceSlider.to && Math.abs(hapticFeedbackDistanceSlider.value - d) > 0.0008) {
hapticFeedbackDistanceSlider.value = d
}
hapticFeedbackDistanceText.text = d
}
onChaperoneAlarmSoundEnabledChanged: {
audioWarningToggle.checked = ChaperoneTabController.chaperoneAlarmSoundEnabled
}
onChaperoneAlarmSoundLoopingChanged: {
audioWarningLoopingToggle.checked = ChaperoneTabController.chaperoneAlarmSoundLooping
}
onChaperoneAlarmSoundDistanceChanged: {
var d = ChaperoneTabController.chaperoneAlarmSoundDistance.toFixed(2)
if (d <= audioWarningDistanceSlider.to && Math.abs(audioWarningDistanceSlider.value - d) > 0.0008) {
audioWarningDistanceSlider.value = d
}
audioWarningDistanceText.text = d
}
onChaperoneShowDashboardEnabledChanged: {
openDashboardToggle.checked = ChaperoneTabController.chaperoneShowDashboardEnabled
}
onChaperoneShowDashboardDistanceChanged: {
var d = ChaperoneTabController.chaperoneShowDashboardDistance.toFixed(2)
if (d <= openDashboardDistanceSlider.to && Math.abs(openDashboardDistanceSlider.value - d) > 0.0008) {
openDashboardDistanceSlider.value = d
}
openDashboardDistanceText.text = d
}
onChaperoneVelocityModifierEnabledChanged: {
velModifierToggle.checked = ChaperoneTabController.chaperoneVelocityModifierEnabled
}
onChaperoneVelocityModifierChanged: {
var d = ChaperoneTabController.chaperoneVelocityModifier.toFixed(2)
if (d <= velModifierSlider.to && Math.abs(velModifierSlider.value - d) > 0.0008) {
velModifierSlider.value = d
}
velModifierText.text = d
}
}
}
}
+3 -13
View File
@@ -5,19 +5,9 @@ import matzman666.advsettings 1.0
QtObject {
function playActivationSound() {
/*if (!OverlayController.soundDisabled()) {
activationSound.play()
}*/
OverlayController.playActivationSound()
}
function playFocusChangedSound() {
/*if (!OverlayController.soundDisabled()) {
focusChangedSound.play()
}*/
}
/*property SoundEffect activationSound: SoundEffect {
source: vrRuntimePath + "content/panorama/sounds/activation.wav"
}
property SoundEffect focusChangedSound: SoundEffect {
source: vrRuntimePath + "content/panorama/sounds/focus_change.wav"
}*/
OverlayController.playFocusChangedSound()
}
}
+1 -1
View File
@@ -144,7 +144,7 @@ MyStackViewPage {
Layout.fillHeight: true
Layout.fillWidth: true
Layout.leftMargin: 80
spacing: 18
spacing: 9
RowLayout {
spacing: 18
+5
View File
@@ -23,6 +23,11 @@ Rectangle {
visible: false
}
property ChaperoneWarningsPage chaperoneWarningsPage: ChaperoneWarningsPage {
stackView: mainView
visible: false
}
property PlayspacePage playspacePage: PlayspacePage {
stackView: mainView
visible: false
Binary file not shown.