Add motion page, comfort mode, rename "room" to "space"

This commit is contained in:
Kung-vr
2019-02-10 23:55:48 +09:00
parent be19793b48
commit 55e0915fc4
16 changed files with 585 additions and 182 deletions
+6
View File
@@ -130,6 +130,12 @@ DISTFILES += \
src/res/qml/ChaperoneWarningsPage.qml \
src/res/qml/FixFloorPage.qml \
src/res/qml/PlayspacePage.qml \
src/res/qml/motion_page/* \
src/res/qml/motion_page/gravity/* \
src/res/qml/motion_page/height_toggle/* \
src/res/qml/motion_page/snap_turn/* \
src/res/qml/motion_page/universe_drag/* \
src/res/qml/motion_page/universe_turn/* \
src/res/qml/PttControllerConfigDialog.qml \
src/res/qml/RevivePage.qml \
src/res/qml/RootPage.qml \
+28 -28
View File
@@ -130,25 +130,25 @@ SteamIVRInput::SteamIVRInput()
m_pausePlayTrack( input_strings::k_actionPausePlayTrack,
ActionType::Digital ),
m_stopTrack( input_strings::k_actionStopTrack, ActionType::Digital ),
m_leftHandRoomTurn( input_strings::k_actionLeftHandRoomTurn,
m_leftHandSpaceTurn( input_strings::k_actionLeftHandSpaceTurn,
ActionType::Digital ),
m_rightHandRoomTurn( input_strings::k_actionRightHandRoomTurn,
m_rightHandSpaceTurn( input_strings::k_actionRightHandSpaceTurn,
ActionType::Digital ),
m_leftHandRoomDrag( input_strings::k_actionLeftHandRoomDrag,
m_leftHandSpaceDrag( input_strings::k_actionLeftHandSpaceDrag,
ActionType::Digital ),
m_rightHandRoomDrag( input_strings::k_actionRightHandRoomDrag,
m_rightHandSpaceDrag( input_strings::k_actionRightHandSpaceDrag,
ActionType::Digital ),
m_optionalOverrideLeftHandRoomTurn(
input_strings::k_actionOptionalOverrideLeftHandRoomTurn,
m_optionalOverrideLeftHandSpaceTurn(
input_strings::k_actionOptionalOverrideLeftHandSpaceTurn,
ActionType::Digital ),
m_optionalOverrideRightHandRoomTurn(
input_strings::k_actionOptionalOverrideRightHandRoomTurn,
m_optionalOverrideRightHandSpaceTurn(
input_strings::k_actionOptionalOverrideRightHandSpaceTurn,
ActionType::Digital ),
m_optionalOverrideLeftHandRoomDrag(
input_strings::k_actionOptionalOverrideLeftHandRoomDrag,
m_optionalOverrideLeftHandSpaceDrag(
input_strings::k_actionOptionalOverrideLeftHandSpaceDrag,
ActionType::Digital ),
m_optionalOverrideRightHandRoomDrag(
input_strings::k_actionOptionalOverrideRightHandRoomDrag,
m_optionalOverrideRightHandSpaceDrag(
input_strings::k_actionOptionalOverrideRightHandSpaceDrag,
ActionType::Digital )
{
m_activeActionSet.ulActionSet = m_mainSet.handle();
@@ -199,47 +199,47 @@ bool SteamIVRInput::stopSong()
return isDigitalActionActivatedOnce( m_stopTrack );
}
bool SteamIVRInput::leftHandRoomTurn()
bool SteamIVRInput::leftHandSpaceTurn()
{
return isDigitalActionActivatedConstant( m_leftHandRoomTurn );
return isDigitalActionActivatedConstant( m_leftHandSpaceTurn );
}
bool SteamIVRInput::rightHandRoomTurn()
bool SteamIVRInput::rightHandSpaceTurn()
{
return isDigitalActionActivatedConstant( m_rightHandRoomTurn );
return isDigitalActionActivatedConstant( m_rightHandSpaceTurn );
}
bool SteamIVRInput::leftHandRoomDrag()
bool SteamIVRInput::leftHandSpaceDrag()
{
return isDigitalActionActivatedConstant( m_leftHandRoomDrag );
return isDigitalActionActivatedConstant( m_leftHandSpaceDrag );
}
bool SteamIVRInput::rightHandRoomDrag()
bool SteamIVRInput::rightHandSpaceDrag()
{
return isDigitalActionActivatedConstant( m_rightHandRoomDrag );
return isDigitalActionActivatedConstant( m_rightHandSpaceDrag );
}
bool SteamIVRInput::optionalOverrideLeftHandRoomTurn()
bool SteamIVRInput::optionalOverrideLeftHandSpaceTurn()
{
return isDigitalActionActivatedConstant(
m_optionalOverrideLeftHandRoomTurn );
m_optionalOverrideLeftHandSpaceTurn );
}
bool SteamIVRInput::optionalOverrideRightHandRoomTurn()
bool SteamIVRInput::optionalOverrideRightHandSpaceTurn()
{
return isDigitalActionActivatedConstant(
m_optionalOverrideRightHandRoomTurn );
m_optionalOverrideRightHandSpaceTurn );
}
bool SteamIVRInput::optionalOverrideLeftHandRoomDrag()
bool SteamIVRInput::optionalOverrideLeftHandSpaceDrag()
{
return isDigitalActionActivatedConstant(
m_optionalOverrideLeftHandRoomDrag );
m_optionalOverrideLeftHandSpaceDrag );
}
bool SteamIVRInput::optionalOverrideRightHandRoomDrag()
bool SteamIVRInput::optionalOverrideRightHandSpaceDrag()
{
return isDigitalActionActivatedConstant(
m_optionalOverrideRightHandRoomDrag );
m_optionalOverrideRightHandSpaceDrag );
}
/*!
+33 -33
View File
@@ -40,14 +40,14 @@ public:
bool previousSong();
bool pausePlaySong();
bool stopSong();
bool leftHandRoomTurn();
bool rightHandRoomTurn();
bool leftHandRoomDrag();
bool rightHandRoomDrag();
bool optionalOverrideLeftHandRoomTurn();
bool optionalOverrideRightHandRoomTurn();
bool optionalOverrideLeftHandRoomDrag();
bool optionalOverrideRightHandRoomDrag();
bool leftHandSpaceTurn();
bool rightHandSpaceTurn();
bool leftHandSpaceDrag();
bool rightHandSpaceDrag();
bool optionalOverrideLeftHandSpaceTurn();
bool optionalOverrideRightHandSpaceTurn();
bool optionalOverrideLeftHandSpaceDrag();
bool optionalOverrideRightHandSpaceDrag();
// Destructor. There are no terminating calls for the IVRInput API, so it
// is left blank.
@@ -78,15 +78,15 @@ private:
Action m_pausePlayTrack;
Action m_stopTrack;
// Room bindings
Action m_leftHandRoomTurn;
Action m_rightHandRoomTurn;
Action m_leftHandRoomDrag;
Action m_rightHandRoomDrag;
Action m_optionalOverrideLeftHandRoomTurn;
Action m_optionalOverrideRightHandRoomTurn;
Action m_optionalOverrideLeftHandRoomDrag;
Action m_optionalOverrideRightHandRoomDrag;
// Space bindings
Action m_leftHandSpaceTurn;
Action m_rightHandSpaceTurn;
Action m_leftHandSpaceDrag;
Action m_rightHandSpaceDrag;
Action m_optionalOverrideLeftHandSpaceTurn;
Action m_optionalOverrideRightHandSpaceTurn;
Action m_optionalOverrideLeftHandSpaceDrag;
Action m_optionalOverrideRightHandSpaceDrag;
};
/*!
@@ -101,22 +101,22 @@ namespace input_strings
constexpr auto k_actionPausePlayTrack = "/actions/main/in/PausePlayTrack";
constexpr auto k_actionStopTrack = "/actions/main/in/StopTrack";
constexpr auto k_actionLeftHandRoomTurn
= "/actions/main/in/LeftHandRoomTurn";
constexpr auto k_actionRightHandRoomTurn
= "/actions/main/in/RightHandRoomTurn";
constexpr auto k_actionLeftHandRoomDrag
= "/actions/main/in/LeftHandRoomDrag";
constexpr auto k_actionRightHandRoomDrag
= "/actions/main/in/RightHandRoomDrag";
constexpr auto k_actionOptionalOverrideLeftHandRoomTurn
= "/actions/main/in/OptionalOverrideLeftHandRoomTurn";
constexpr auto k_actionOptionalOverrideRightHandRoomTurn
= "/actions/main/in/OptionalOverrideRightHandRoomTurn";
constexpr auto k_actionOptionalOverrideLeftHandRoomDrag
= "/actions/main/in/OptionalOverrideLeftHandRoomDrag";
constexpr auto k_actionOptionalOverrideRightHandRoomDrag
= "/actions/main/in/OptionalOverrideRightHandRoomDrag";
constexpr auto k_actionLeftHandSpaceTurn
= "/actions/main/in/LeftHandSpaceTurn";
constexpr auto k_actionRightHandSpaceTurn
= "/actions/main/in/RightHandSpaceTurn";
constexpr auto k_actionLeftHandSpaceDrag
= "/actions/main/in/LeftHandSpaceDrag";
constexpr auto k_actionRightHandSpaceDrag
= "/actions/main/in/RightHandSpaceDrag";
constexpr auto k_actionOptionalOverrideLeftHandSpaceTurn
= "/actions/main/in/OptionalOverrideLeftHandSpaceTurn";
constexpr auto k_actionOptionalOverrideRightHandSpaceTurn
= "/actions/main/in/OptionalOverrideRightHandSpaceTurn";
constexpr auto k_actionOptionalOverrideLeftHandSpaceDrag
= "/actions/main/in/OptionalOverrideLeftHandSpaceDrag";
constexpr auto k_actionOptionalOverrideRightHandSpaceDrag
= "/actions/main/in/OptionalOverrideRightHandSpaceDrag";
constexpr auto k_setMain = "/actions/main";
+14 -14
View File
@@ -505,22 +505,22 @@ void OverlayController::processInputBindings()
// reorder these. Override actions must always come after normal because
// active priority is set based on which action is "newest"
// normal actions:
m_moveCenterTabController.leftHandRoomDrag( m_actions.leftHandRoomDrag() );
m_moveCenterTabController.rightHandRoomDrag(
m_actions.rightHandRoomDrag() );
m_moveCenterTabController.leftHandRoomTurn( m_actions.leftHandRoomTurn() );
m_moveCenterTabController.rightHandRoomTurn(
m_actions.rightHandRoomTurn() );
m_moveCenterTabController.leftHandSpaceDrag( m_actions.leftHandSpaceDrag() );
m_moveCenterTabController.rightHandSpaceDrag(
m_actions.rightHandSpaceDrag() );
m_moveCenterTabController.leftHandSpaceTurn( m_actions.leftHandSpaceTurn() );
m_moveCenterTabController.rightHandSpaceTurn(
m_actions.rightHandSpaceTurn() );
// override actions:
m_moveCenterTabController.optionalOverrideLeftHandRoomDrag(
m_actions.optionalOverrideLeftHandRoomDrag() );
m_moveCenterTabController.optionalOverrideRightHandRoomDrag(
m_actions.optionalOverrideRightHandRoomDrag() );
m_moveCenterTabController.optionalOverrideLeftHandRoomTurn(
m_actions.optionalOverrideLeftHandRoomTurn() );
m_moveCenterTabController.optionalOverrideRightHandRoomTurn(
m_actions.optionalOverrideRightHandRoomTurn() );
m_moveCenterTabController.optionalOverrideLeftHandSpaceDrag(
m_actions.optionalOverrideLeftHandSpaceDrag() );
m_moveCenterTabController.optionalOverrideRightHandSpaceDrag(
m_actions.optionalOverrideRightHandSpaceDrag() );
m_moveCenterTabController.optionalOverrideLeftHandSpaceTurn(
m_actions.optionalOverrideLeftHandSpaceTurn() );
m_moveCenterTabController.optionalOverrideRightHandSpaceTurn(
m_actions.optionalOverrideRightHandSpaceTurn() );
}
// vsync implementation:
+16 -16
View File
@@ -27,42 +27,42 @@
"type": "boolean"
},
{
"name": "/actions/main/in/LeftHandRoomTurn",
"name": "/actions/main/in/LeftHandSpaceTurn",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/main/in/RightHandRoomTurn",
"name": "/actions/main/in/RightHandSpaceTurn",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/main/in/LeftHandRoomDrag",
"name": "/actions/main/in/LeftHandSpaceDrag",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/main/in/RightHandRoomDrag",
"name": "/actions/main/in/RightHandSpaceDrag",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/main/in/OptionalOverrideLeftHandRoomTurn",
"name": "/actions/main/in/OptionalOverrideLeftHandSpaceTurn",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/main/in/OptionalOverrideRightHandRoomTurn",
"name": "/actions/main/in/OptionalOverrideRightHandSpaceTurn",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/main/in/OptionalOverrideLeftHandRoomDrag",
"name": "/actions/main/in/OptionalOverrideLeftHandSpaceDrag",
"requirement": "optional",
"type": "boolean"
},
{
"name": "/actions/main/in/OptionalOverrideRightHandRoomDrag",
"name": "/actions/main/in/OptionalOverrideRightHandSpaceDrag",
"requirement": "optional",
"type": "boolean"
}
@@ -83,14 +83,14 @@
"/actions/main/in/PreviousTrack" : "Play Previous Track",
"/actions/main/in/PausePlayTrack" : "Pause/Play Track",
"/actions/main/in/StopTrack" : "Stop Track",
"/actions/main/in/LeftHandRoomTurn" : "Left Hand Room Turn",
"/actions/main/in/RightHandRoomTurn" : "Right Hand Room Turn",
"/actions/main/in/LeftHandRoomDrag" : "Left Hand Room Drag",
"/actions/main/in/RightHandRoomDrag" : "Right Hand Room Drag",
"/actions/main/in/OptionalOverrideLeftHandRoomTurn" : "Optional Override Left Hand Room Turn",
"/actions/main/in/OptionalOverrideRightHandRoomTurn" : "Optional Override Right Hand Room Turn",
"/actions/main/in/OptionalOverrideLeftHandRoomDrag" : "Optional Override Left Hand Room Drag",
"/actions/main/in/OptionalOverrideRightHandRoomDrag" : "Optional Override Right Hand Room Drag"
"/actions/main/in/LeftHandSpaceTurn" : "Left Hand Space Turn",
"/actions/main/in/RightHandSpaceTurn" : "Right Hand Space Turn",
"/actions/main/in/LeftHandSpaceDrag" : "Left Hand Space Drag",
"/actions/main/in/RightHandSpaceDrag" : "Right Hand Space Drag",
"/actions/main/in/OptionalOverrideLeftHandSpaceTurn" : "Optional Override Left Hand Space Turn",
"/actions/main/in/OptionalOverrideRightHandSpaceTurn" : "Optional Override Right Hand Space Turn",
"/actions/main/in/OptionalOverrideLeftHandSpaceDrag" : "Optional Override Left Hand Space Drag",
"/actions/main/in/OptionalOverrideRightHandSpaceDrag" : "Optional Override Right Hand Space Drag"
}
]
}
+4 -4
View File
@@ -6,7 +6,7 @@ import "common"
MyStackViewPage {
headerText: "Room Fix"
headerText: "Space Fix"
content: ColumnLayout {
spacing: 18
@@ -57,7 +57,7 @@ MyStackViewPage {
MyPushButton {
id: recenterButton
Layout.fillWidth: true
text: "Recenter Room"
text: "Recenter Space"
Layout.preferredHeight: 100
onClicked: {
FixFloorTabController.recenterClicked()
@@ -75,9 +75,9 @@ MyStackViewPage {
}
MyPushButton {
id: zeroRoomButton
id: zeroSpaceButton
Layout.fillWidth: true
text: "Apply Room Settings Offsets as Center"
text: "Apply Space Settings Offsets as Center"
Layout.preferredHeight: 100
onClicked: {
MoveCenterTabController.zeroOffsets()
+58 -58
View File
@@ -6,7 +6,7 @@ import "common"
MyStackViewPage {
headerText: "Room Settings"
headerText: "Space Settings"
content: ColumnLayout {
spacing: 18
@@ -17,7 +17,7 @@ MyStackViewPage {
Layout.preferredWidth: 230
}
MyText {
id: roomModeText
id: spaceModeText
font.bold: true
text: "Standing"
}
@@ -28,7 +28,7 @@ MyStackViewPage {
label: MyText {
leftPadding: 10
text: "Move Room"
text: "Move Space"
bottomPadding: -10
}
background: Rectangle {
@@ -60,7 +60,7 @@ MyStackViewPage {
}
MyPushButton2 {
id: roomMoveXMinusButton
id: spaceMoveXMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
@@ -69,7 +69,7 @@ MyStackViewPage {
}
MyTextField {
id: roomMoveXText
id: spaceMoveXText
text: "0.00"
keyBoardUID: 101
Layout.preferredWidth: 140
@@ -88,7 +88,7 @@ MyStackViewPage {
}
MyPushButton2 {
id: roomMoveXPlusButton
id: spaceMoveXPlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
@@ -126,7 +126,7 @@ MyStackViewPage {
}
MyTextField {
id: roomMoveYText
id: spaceMoveYText
text: "0.00"
keyBoardUID: 102
Layout.preferredWidth: 140
@@ -180,7 +180,7 @@ MyStackViewPage {
}
MyTextField {
id: roomMoveZText
id: spaceMoveZText
text: "0.00"
keyBoardUID: 103
Layout.preferredWidth: 140
@@ -223,7 +223,7 @@ MyStackViewPage {
label: MyText {
leftPadding: 10
text: "Rotate Room"
text: "Rotate Space"
bottomPadding: -10
}
background: Rectangle {
@@ -245,7 +245,7 @@ MyStackViewPage {
ColumnLayout {
RowLayout {
MyPushButton2 {
id: roomRotationMinusButton
id: spaceRotationMinusButton
Layout.preferredWidth: 40
text: "-"
onClicked: {
@@ -258,7 +258,7 @@ MyStackViewPage {
}
MySlider {
id: roomRotationSlider
id: spaceRotationSlider
from: -180
to: 180
stepSize: 0.01
@@ -269,13 +269,13 @@ MyStackViewPage {
MoveCenterTabController.tempRotation = Math.round(val * 100)
}
onValueChanged: {
MoveCenterTabController.tempRotation = Math.round(roomRotationSlider.value * 100)
//roomRotationText.text = Math.round(roomRotationSlider.value) + "°"
MoveCenterTabController.tempRotation = Math.round(spaceRotationSlider.value * 100)
//spaceRotationText.text = Math.round(spaceRotationSlider.value) + "°"
}
}
MyPushButton2 {
id: roomRotationPlusButton
id: spaceRotationPlusButton
Layout.preferredWidth: 40
text: "+"
onClicked: {
@@ -288,7 +288,7 @@ MyStackViewPage {
}
MyTextField {
id: roomRotationText
id: spaceRotationText
text: "0°"
keyBoardUID: 104
Layout.preferredWidth: 150
@@ -306,7 +306,7 @@ MyStackViewPage {
}
}
MyPushButton {
id: roomRotationApplyButton
id: spaceRotationApplyButton
Layout.preferredWidth: 145
text:"Apply"
onClicked: {
@@ -316,15 +316,15 @@ MyStackViewPage {
}
MyToggleButton {
id: roomRotateHandToggle
text: "Enable Room-Turn Binding"
id: spaceRotateHandToggle
text: "Enable Space-Turn Binding"
onCheckedChanged: {
MoveCenterTabController.rotateHand = this.checked
}
}
MyText {
text: "Note: TurnSignal will ignore turning during Room-Turn rotation."
text: "Note: TurnSignal will ignore turning during Space-Turn rotation."
font.pointSize: 15.0
}
}
@@ -336,7 +336,7 @@ MyStackViewPage {
label: MyText {
leftPadding: 10
text: "Room Drag Binding"
text: "Space Drag Binding"
bottomPadding: -10
}
background: Rectangle {
@@ -372,7 +372,7 @@ MyStackViewPage {
Layout.fillWidth: true
MyPushButton {
id: roomResetButton
id: spaceResetButton
Layout.preferredWidth: 250
text: "Reset"
onClicked: {
@@ -381,7 +381,7 @@ MyStackViewPage {
}
MyToggleButton {
id: roomAdjustChaperoneToggle
id: spaceAdjustChaperoneToggle
text: "Adjust Chaperone"
onCheckedChanged: {
MoveCenterTabController.adjustChaperone = this.checked
@@ -396,12 +396,12 @@ MyStackViewPage {
Item { Layout.fillHeight: true; Layout.fillWidth: true}
Component.onCompleted: {
roomAdjustChaperoneToggle.checked = MoveCenterTabController.adjustChaperone
roomRotateHandToggle.checked = MoveCenterTabController.rotateHand
roomMoveXText.text = MoveCenterTabController.offsetX.toFixed(2)
roomMoveYText.text = MoveCenterTabController.offsetY.toFixed(2)
roomMoveZText.text = MoveCenterTabController.offsetZ.toFixed(2)
roomRotationSlider.value = MoveCenterTabController.rotation
spaceAdjustChaperoneToggle.checked = MoveCenterTabController.adjustChaperone
spaceRotateHandToggle.checked = MoveCenterTabController.rotateHand
spaceMoveXText.text = MoveCenterTabController.offsetX.toFixed(2)
spaceMoveYText.text = MoveCenterTabController.offsetY.toFixed(2)
spaceMoveZText.text = MoveCenterTabController.offsetZ.toFixed(2)
spaceRotationSlider.value = MoveCenterTabController.rotation
moveShortcutRight.checked = MoveCenterTabController.moveShortcutRight
moveShortcutLeft.checked = MoveCenterTabController.moveShortcutLeft
lockXToggle.checked = MoveCenterTabController.lockXToggle
@@ -409,45 +409,45 @@ MyStackViewPage {
lockZToggle.checked = MoveCenterTabController.lockZToggle
if (MoveCenterTabController.trackingUniverse === 0) {
roomModeText.text = "Sitting"
roomRotationPlusButton.enabled = false
roomRotationMinusButton.enabled = false
roomRotationSlider.enabled = false
roomRotationText.text = "-"
spaceModeText.text = "Sitting"
spaceRotationPlusButton.enabled = false
spaceRotationMinusButton.enabled = false
spaceRotationSlider.enabled = false
spaceRotationText.text = "-"
} else if (MoveCenterTabController.trackingUniverse === 1) {
roomModeText.text = "Standing"
roomRotationPlusButton.enabled = true
roomRotationMinusButton.enabled = true
roomRotationSlider.enabled = true
roomRotationText.text = "0°"
spaceModeText.text = "Standing"
spaceRotationPlusButton.enabled = true
spaceRotationMinusButton.enabled = true
spaceRotationSlider.enabled = true
spaceRotationText.text = "0°"
} else {
roomModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")"
spaceModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")"
}
}
Connections {
target: MoveCenterTabController
onOffsetXChanged: {
roomMoveXText.text = MoveCenterTabController.offsetX.toFixed(2)
spaceMoveXText.text = MoveCenterTabController.offsetX.toFixed(2)
}
onOffsetYChanged: {
roomMoveYText.text = MoveCenterTabController.offsetY.toFixed(2)
spaceMoveYText.text = MoveCenterTabController.offsetY.toFixed(2)
}
onOffsetZChanged: {
roomMoveZText.text = MoveCenterTabController.offsetZ.toFixed(2)
spaceMoveZText.text = MoveCenterTabController.offsetZ.toFixed(2)
}
onRotationChanged: {
roomRotationSlider.value = ( MoveCenterTabController.rotation / 100 )
spaceRotationSlider.value = ( MoveCenterTabController.rotation / 100 )
}
onTempRotationChanged: {
roomRotationSlider.value = ( MoveCenterTabController.tempRotation / 100 )
roomRotationText.text = ( MoveCenterTabController.tempRotation / 100 ) + "°"
spaceRotationSlider.value = ( MoveCenterTabController.tempRotation / 100 )
spaceRotationText.text = ( MoveCenterTabController.tempRotation / 100 ) + "°"
}
onAdjustChaperoneChanged: {
roomAdjustChaperoneToggle.checked = MoveCenterTabController.adjustChaperone
spaceAdjustChaperoneToggle.checked = MoveCenterTabController.adjustChaperone
}
onRotateHandChanged: {
roomRotateHandToggle.checked = MoveCenterTabController.rotateHand
spaceRotateHandToggle.checked = MoveCenterTabController.rotateHand
}
onMoveShortcutRightChanged: {
moveShortcutRight.checked = MoveCenterTabController.moveShortcutRight
@@ -466,19 +466,19 @@ MyStackViewPage {
}
onTrackingUniverseChanged: {
if (MoveCenterTabController.trackingUniverse === 0) {
roomModeText.text = "Sitting"
roomRotationPlusButton.enabled = false
roomRotationMinusButton.enabled = false
roomRotationSlider.enabled = false
roomRotationText.text = "-"
spaceModeText.text = "Sitting"
spaceRotationPlusButton.enabled = false
spaceRotationMinusButton.enabled = false
spaceRotationSlider.enabled = false
spaceRotationText.text = "-"
} else if (MoveCenterTabController.trackingUniverse === 1) {
roomModeText.text = "Standing"
roomRotationPlusButton.enabled = true
roomRotationMinusButton.enabled = true
roomRotationSlider.enabled = true
roomRotationText.text = "0°"
spaceModeText.text = "Standing"
spaceRotationPlusButton.enabled = true
spaceRotationMinusButton.enabled = true
spaceRotationSlider.enabled = true
spaceRotationText.text = "0°"
} else {
roomModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")"
spaceModeText.text = "Unknown(" + MoveCenterTabController.trackingUniverse + ")"
}
}
}
+13 -2
View File
@@ -50,7 +50,7 @@ MyStackViewPage {
MyPushButton {
id: playSpaceButton
activationSoundEnabled: false
text: "Room Settings"
text: "Offsets"
Layout.fillWidth: true
onClicked: {
MyResources.playFocusChangedSound()
@@ -58,10 +58,21 @@ MyStackViewPage {
}
}
MyPushButton {
id: motionButton
activationSoundEnabled: false
text: "Motion"
Layout.fillWidth: true
onClicked: {
MyResources.playFocusChangedSound()
mainView.push(motionPage)
}
}
MyPushButton {
id: fixFloorButton
activationSoundEnabled: false
text: "Room Fix"
text: "Space Fix"
Layout.fillWidth: true
onClicked: {
MyResources.playFocusChangedSound()
+6
View File
@@ -4,6 +4,7 @@ import QtQuick.Layouts 1.0
import ".."
import "../utilities_page"
import "../audio_page"
import "../motion_page"
Rectangle {
id: root
@@ -35,6 +36,11 @@ Rectangle {
visible: false
}
property MotionPage motionPage: MotionPage {
stackView: mainView
visible: false
}
property FixFloorPage fixFloorPage: FixFloorPage {
stackView: mainView
visible: false
+24
View File
@@ -0,0 +1,24 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import matzman666.advsettings 1.0
import "../common"
import "universe_drag"
import "universe_turn"
MyStackViewPage {
headerText: "Motion Settings"
content: ColumnLayout {
spacing: 18
UniverseDragGroupBox { id: universeDragGroupBox }
UniverseTurnGroupBox { id: universeTurnGroupBox }
Item {
Layout.fillHeight: true
}
}
}
@@ -0,0 +1,104 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import matzman666.advsettings 1.0
import "../../common"
GroupBox {
id: universeDragGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Universe Drag"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
RowLayout {
Layout.fillWidth: true
MyToggleButton {
id: moveShortcutLeft
text: "Enable Left Hand"
onCheckedChanged: {
MoveCenterTabController.moveShortcutLeft = this.checked
}
}
MyToggleButton {
id: moveShortcutRight
text: "Enable Right Hand"
onCheckedChanged: {
MoveCenterTabController.moveShortcutRight = this.checked
}
}
Item {
Layout.fillWidth: true
}
MyText {
text: "Drag Comfort Mode:"
horizontalAlignment: Text.AlignRight
Layout.rightMargin: 10
}
MySlider {
id: dragComfortSlider
from: 0
to: 10
stepSize: 1
value: 0
Layout.preferredWidth: 200
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
onValueChanged: {
dragComfortText.text = dragComfortSlider.value
MoveCenterTabController.dragComfortFactor = dragComfortSlider.value
}
}
MyText {
id: dragComfortText
text: "0"
horizontalAlignment: Text.AlignRight
Layout.preferredWidth: 30
Layout.rightMargin: 10
}
}
}
Component.onCompleted: {
moveShortcutLeft.checked = MoveCenterTabController.moveShortcutLeft
moveShortcutRight.checked = MoveCenterTabController.moveShortcutRight
dragComfortSlider.value = MoveCenterTabController.dragComfortFactor
}
Connections {
target: MoveCenterTabController
onMoveShortcutLeftChanged: {
moveShortcutLeft.checked = MoveCenterTabController.moveShortcutLeft
}
onMoveShortcutRightChanged: {
moveShortcutRight.checked = MoveCenterTabController.moveShortcutRight
}
onDragComfortFactorChanged: {
dragComfortSlider.value = MoveCenterTabController.dragComfortFactor
}
}
}
@@ -0,0 +1,104 @@
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import matzman666.advsettings 1.0
import "../../common"
GroupBox {
id: universeTurnGroupBox
Layout.fillWidth: true
label: MyText {
leftPadding: 10
text: "Universe Turn"
bottomPadding: -10
}
background: Rectangle {
color: "transparent"
border.color: "#ffffff"
radius: 8
}
ColumnLayout {
anchors.fill: parent
Rectangle {
color: "#ffffff"
height: 1
Layout.fillWidth: true
Layout.bottomMargin: 5
}
RowLayout {
Layout.fillWidth: true
MyToggleButton {
id: turnBindLeft
text: "Enable Left Hand"
onCheckedChanged: {
MoveCenterTabController.turnBindLeft = this.checked
}
}
MyToggleButton {
id: turnBindRight
text: "Enable Right Hand"
onCheckedChanged: {
MoveCenterTabController.turnBindRight = this.checked
}
}
Item {
Layout.fillWidth: true
}
MyText {
text: "Turn Comfort Mode:"
horizontalAlignment: Text.AlignRight
Layout.rightMargin: 10
}
MySlider {
id: turnComfortSlider
from: 0
to: 10
stepSize: 1
value: 0
Layout.preferredWidth: 200
Layout.alignment: Qt.AlignVCenter | Qt.AlignRight
onValueChanged: {
turnComfortText.text = turnComfortSlider.value
MoveCenterTabController.turnComfortFactor = turnComfortSlider.value
}
}
MyText {
id: turnComfortText
text: "0"
horizontalAlignment: Text.AlignRight
Layout.preferredWidth: 30
Layout.rightMargin: 10
}
}
}
Component.onCompleted: {
turnBindLeft.checked = MoveCenterTabController.turnBindLeft
turnBindRight.checked = MoveCenterTabController.turnBindRight
turnComfortSlider.value = MoveCenterTabController.turnComfortFactor
}
Connections {
target: MoveCenterTabController
onTurnBindLeftChanged: {
turnBindLeft.checked = MoveCenterTabController.turnBindLeft
}
onTurnBindRightChanged: {
turnBindRight.checked = MoveCenterTabController.turnBindRight
}
onTurnComfortFactorChanged: {
turnComfortSlider.value = MoveCenterTabController.turnComfortFactor
}
}
}
+1 -1
View File
@@ -145,7 +145,7 @@ void FixFloorTabController::eventLoopTick(
floorOffsetZ = tempOffsetZ;
LOG( INFO )
<< "Fix Floor and adjust room center: Floor Offset = ["
<< "Fix Floor and adjust space center: Floor Offset = ["
<< floorOffsetX << ", " << floorOffsetY << ", "
<< floorOffsetZ << "]";
float offset[3] = { 0, 0, 0 };
+138 -15
View File
@@ -52,6 +52,26 @@ void MoveCenterTabController::initStage1()
{
m_settingsLeftHandDragEnabled = value.toBool();
}
value = settings->value( "turnBindLeft", m_settingsLeftHandTurnEnabled );
if ( value.isValid() && !value.isNull() )
{
m_settingsLeftHandTurnEnabled = value.toBool();
}
value = settings->value( "turnBindRight", m_settingsRightHandTurnEnabled );
if ( value.isValid() && !value.isNull() )
{
m_settingsRightHandTurnEnabled = value.toBool();
}
value = settings->value( "dragComfortFactor", m_dragComfortFactor );
if ( value.isValid() && !value.isNull() )
{
m_dragComfortFactor = value.toUInt();
}
value = settings->value( "turnComfortFactor", m_turnComfortFactor );
if ( value.isValid() && !value.isNull() )
{
m_turnComfortFactor = value.toUInt();
}
value = settings->value( "lockXToggle", m_lockXToggle );
if ( value.isValid() && !value.isNull() )
{
@@ -68,7 +88,6 @@ void MoveCenterTabController::initStage1()
m_lockZToggle = value.toBool();
}
settings->endGroup();
lastMoveButtonClick[0] = lastMoveButtonClick[1] = clock::now();
}
void MoveCenterTabController::initStage2( OverlayController* var_parent,
@@ -345,6 +364,84 @@ void MoveCenterTabController::setMoveShortcutLeft( bool value, bool notify )
}
}
bool MoveCenterTabController::turnBindLeft() const
{
return m_settingsLeftHandTurnEnabled;
}
void MoveCenterTabController::setTurnBindLeft( bool value, bool notify )
{
m_settingsLeftHandTurnEnabled = value;
auto settings = OverlayController::appSettings();
settings->beginGroup( "playspaceSettings" );
settings->setValue( "turnBindLeft", m_settingsLeftHandTurnEnabled );
settings->endGroup();
settings->sync();
if ( notify )
{
emit turnBindLeftChanged( m_settingsLeftHandTurnEnabled );
}
}
bool MoveCenterTabController::turnBindRight() const
{
return m_settingsRightHandTurnEnabled;
}
void MoveCenterTabController::setTurnBindRight( bool value, bool notify )
{
m_settingsRightHandTurnEnabled = value;
auto settings = OverlayController::appSettings();
settings->beginGroup( "playspaceSettings" );
settings->setValue( "turnBindRight", m_settingsRightHandTurnEnabled );
settings->endGroup();
settings->sync();
if ( notify )
{
emit turnBindRightChanged( m_settingsRightHandTurnEnabled );
}
}
unsigned MoveCenterTabController::dragComfortFactor() const
{
return m_dragComfortFactor;
}
void MoveCenterTabController::setDragComfortFactor( unsigned value,
bool notify )
{
m_dragComfortFactor = value;
auto settings = OverlayController::appSettings();
settings->beginGroup( "playspaceSettings" );
settings->setValue( "dragComfortFactor", m_dragComfortFactor );
settings->endGroup();
settings->sync();
if ( notify )
{
emit dragComfortFactorChanged( m_dragComfortFactor );
}
}
unsigned MoveCenterTabController::turnComfortFactor() const
{
return m_turnComfortFactor;
}
void MoveCenterTabController::setTurnComfortFactor( unsigned value,
bool notify )
{
m_turnComfortFactor = value;
auto settings = OverlayController::appSettings();
settings->beginGroup( "playspaceSettings" );
settings->setValue( "turnComfortFactor", m_turnComfortFactor );
settings->endGroup();
settings->sync();
if ( notify )
{
emit turnComfortFactorChanged( m_turnComfortFactor );
}
}
bool MoveCenterTabController::lockXToggle() const
{
return m_lockXToggle;
@@ -513,7 +610,7 @@ void MoveCenterTabController::resetHmdYawTotal()
// START of drag bindings:
void MoveCenterTabController::leftHandRoomDrag( bool leftHandDragActive )
void MoveCenterTabController::leftHandSpaceDrag( bool leftHandDragActive )
{
if ( !m_settingsLeftHandDragEnabled )
{
@@ -556,7 +653,7 @@ void MoveCenterTabController::leftHandRoomDrag( bool leftHandDragActive )
m_leftHandDragPressed = leftHandDragActive;
}
void MoveCenterTabController::rightHandRoomDrag( bool rightHandDragActive )
void MoveCenterTabController::rightHandSpaceDrag( bool rightHandDragActive )
{
if ( !m_settingsRightHandDragEnabled )
{
@@ -599,7 +696,7 @@ void MoveCenterTabController::rightHandRoomDrag( bool rightHandDragActive )
m_rightHandDragPressed = rightHandDragActive;
}
void MoveCenterTabController::optionalOverrideLeftHandRoomDrag(
void MoveCenterTabController::optionalOverrideLeftHandSpaceDrag(
bool overrideLeftHandDragActive )
{
if ( !m_settingsLeftHandDragEnabled )
@@ -641,7 +738,7 @@ void MoveCenterTabController::optionalOverrideLeftHandRoomDrag(
m_overrideLeftHandDragPressed = overrideLeftHandDragActive;
}
void MoveCenterTabController::optionalOverrideRightHandRoomDrag(
void MoveCenterTabController::optionalOverrideRightHandSpaceDrag(
bool overrideRightHandDragActive )
{
if ( !m_settingsRightHandDragEnabled )
@@ -687,9 +784,9 @@ void MoveCenterTabController::optionalOverrideRightHandRoomDrag(
// START of turn bindgins
void MoveCenterTabController::leftHandRoomTurn( bool leftHandTurnActive )
void MoveCenterTabController::leftHandSpaceTurn( bool leftHandTurnActive )
{
if ( !m_settingsHandTurningEnabled )
if ( !m_settingsLeftHandTurnEnabled )
{
return;
}
@@ -730,9 +827,9 @@ void MoveCenterTabController::leftHandRoomTurn( bool leftHandTurnActive )
m_leftHandTurnPressed = leftHandTurnActive;
}
void MoveCenterTabController::rightHandRoomTurn( bool rightHandTurnActive )
void MoveCenterTabController::rightHandSpaceTurn( bool rightHandTurnActive )
{
if ( !m_settingsHandTurningEnabled )
if ( !m_settingsRightHandTurnEnabled )
{
return;
}
@@ -773,10 +870,10 @@ void MoveCenterTabController::rightHandRoomTurn( bool rightHandTurnActive )
m_rightHandTurnPressed = rightHandTurnActive;
}
void MoveCenterTabController::optionalOverrideLeftHandRoomTurn(
void MoveCenterTabController::optionalOverrideLeftHandSpaceTurn(
bool overrideLeftHandTurnActive )
{
if ( !m_settingsHandTurningEnabled )
if ( !m_settingsLeftHandTurnEnabled )
{
return;
}
@@ -815,10 +912,10 @@ void MoveCenterTabController::optionalOverrideLeftHandRoomTurn(
m_overrideLeftHandTurnPressed = overrideLeftHandTurnActive;
}
void MoveCenterTabController::optionalOverrideRightHandRoomTurn(
void MoveCenterTabController::optionalOverrideRightHandSpaceTurn(
bool overrideRightHandTurnActive )
{
if ( !m_settingsHandTurningEnabled )
if ( !m_settingsRightHandTurnEnabled )
{
return;
}
@@ -1113,6 +1210,8 @@ void MoveCenterTabController::eventLoopTick(
// get current space rotation in radians
double angle = m_rotation * k_centidegreesToRadians;
// hmd rotations stats counting doesn't need to be smooth, so we skip some
// frames for performance
if ( m_hmdRotationStatsUpdateCounter >= k_hmdRotationCounterUpdateRate )
{
// device pose index 0 is always the hmd
@@ -1124,8 +1223,32 @@ void MoveCenterTabController::eventLoopTick(
m_hmdRotationStatsUpdateCounter++;
}
updateHandDrag( devicePoses, angle );
// Smooth drag motion can cause sim-sickness so we check if the user wants
// to skip frames to reduce vection. We use the factor squared because of
// logarithmic human perception.
if ( m_dragComfortFrameSkipCounter
>= ( m_dragComfortFactor * m_dragComfortFactor ) )
{
updateHandDrag( devicePoses, angle );
m_dragComfortFrameSkipCounter = 0;
}
else
{
m_dragComfortFrameSkipCounter++;
}
updateHandTurn( devicePoses, angle );
// Smooth turn motion can cause sim-sickness so we check if the user wants
// to skip frames to reduce vection. We use the factor squared because of
// logarithmic human perception.
if ( m_turnComfortFrameSkipCounter
>= ( m_turnComfortFactor * m_turnComfortFactor ) )
{
updateHandTurn( devicePoses, angle );
m_turnComfortFrameSkipCounter = 0;
}
else
{
m_turnComfortFrameSkipCounter++;
}
}
} // namespace advsettings
+34 -9
View File
@@ -39,6 +39,14 @@ class MoveCenterTabController : public QObject
setMoveShortcutRight NOTIFY moveShortcutRightChanged )
Q_PROPERTY( bool moveShortcutLeft READ moveShortcutLeft WRITE
setMoveShortcutLeft NOTIFY moveShortcutLeftChanged )
Q_PROPERTY( bool turnBindLeft READ turnBindLeft WRITE setTurnBindLeft NOTIFY
turnBindLeftChanged )
Q_PROPERTY( bool turnBindRight READ turnBindRight WRITE setTurnBindRight
NOTIFY turnBindRightChanged )
Q_PROPERTY( unsigned dragComfortFactor READ dragComfortFactor WRITE
setDragComfortFactor NOTIFY dragComfortFactorChanged )
Q_PROPERTY( unsigned turnComfortFactor READ turnComfortFactor WRITE
setTurnComfortFactor NOTIFY turnComfortFactorChanged )
Q_PROPERTY( bool lockXToggle READ lockXToggle WRITE setLockX NOTIFY
requireLockXChanged )
Q_PROPERTY( bool lockYToggle READ lockYToggle WRITE setLockY NOTIFY
@@ -66,10 +74,13 @@ private:
float m_lastControllerPosition[3];
bool m_settingsRightHandDragEnabled = false;
bool m_settingsLeftHandDragEnabled = false;
bool m_settingsLeftHandTurnEnabled = false;
bool m_settingsRightHandTurnEnabled = false;
unsigned m_dragComfortFactor = 0;
unsigned m_turnComfortFactor = 0;
bool m_lockXToggle = false;
bool m_lockYToggle = false;
bool m_lockZToggle = false;
std::chrono::system_clock::time_point lastMoveButtonClick[2];
// Set lastHandQuaternion.w to -1000.0 when last hand is invalid.
vr::HmdQuaternion_t m_lastHandQuaternion
= { k_quaternionInvalidValue, 0.0, 0.0, 0.0 };
@@ -97,6 +108,8 @@ private:
bool m_overrideRightHandTurnPressed = false;
unsigned settingsUpdateCounter = 0;
int m_hmdRotationStatsUpdateCounter = 0;
unsigned m_dragComfortFrameSkipCounter = 0;
unsigned m_turnComfortFrameSkipCounter = 0;
void updateHmdRotationCounter( vr::TrackedDevicePose_t hmdPose,
double angle );
void updateHandDrag( vr::TrackedDevicePose_t* devicePoses, double angle );
@@ -118,6 +131,10 @@ public:
bool rotateHand() const;
bool moveShortcutRight() const;
bool moveShortcutLeft() const;
bool turnBindRight() const;
bool turnBindLeft() const;
unsigned dragComfortFactor() const;
unsigned turnComfortFactor() const;
bool lockXToggle() const;
bool lockYToggle() const;
bool lockZToggle() const;
@@ -125,14 +142,14 @@ public:
void resetHmdYawTotal();
// actions:
void leftHandRoomDrag( bool leftHandDragActive );
void rightHandRoomDrag( bool rightHandDragActive );
void optionalOverrideLeftHandRoomDrag( bool overrideLeftHandDragActive );
void optionalOverrideRightHandRoomDrag( bool overrideRightHandDragActive );
void leftHandRoomTurn( bool leftHandTurnActive );
void rightHandRoomTurn( bool rightHandTurnActive );
void optionalOverrideLeftHandRoomTurn( bool overrideLeftHandTurnActive );
void optionalOverrideRightHandRoomTurn( bool overrideRightHandTurnActive );
void leftHandSpaceDrag( bool leftHandDragActive );
void rightHandSpaceDrag( bool rightHandDragActive );
void optionalOverrideLeftHandSpaceDrag( bool overrideLeftHandDragActive );
void optionalOverrideRightHandSpaceDrag( bool overrideRightHandDragActive );
void leftHandSpaceTurn( bool leftHandTurnActive );
void rightHandSpaceTurn( bool rightHandTurnActive );
void optionalOverrideLeftHandSpaceTurn( bool overrideLeftHandTurnActive );
void optionalOverrideRightHandSpaceTurn( bool overrideRightHandTurnActive );
public slots:
int trackingUniverse() const;
@@ -152,6 +169,10 @@ public slots:
void setMoveShortcutRight( bool value, bool notify = true );
void setMoveShortcutLeft( bool value, bool notify = true );
void setTurnBindRight( bool value, bool notify = true );
void setTurnBindLeft( bool value, bool notify = true );
void setDragComfortFactor( unsigned value, bool notify = true );
void setTurnComfortFactor( unsigned value, bool notify = true );
void modOffsetX( float value, bool notify = true );
void modOffsetY( float value, bool notify = true );
@@ -175,6 +196,10 @@ signals:
void rotateHandChanged( bool value );
void moveShortcutRightChanged( bool value );
void moveShortcutLeftChanged( bool value );
void turnBindRightChanged( bool value );
void turnBindLeftChanged( bool value );
void dragComfortFactorChanged( unsigned value );
void turnComfortFactorChanged( unsigned value );
void requireLockXChanged( bool value );
void requireLockYChanged( bool value );
void requireLockZChanged( bool value );
@@ -78,8 +78,8 @@ void StatisticsTabController::eventLoopTick(
}
// HMD Rotation //
double roomHmdYawTotal = parent->m_moveCenterTabController.getHmdYawTotal();
m_hmdRotation = static_cast<float>( roomHmdYawTotal / ( 2.0 * M_PI ) );
double spaceHmdYawTotal = parent->m_moveCenterTabController.getHmdYawTotal();
m_hmdRotation = static_cast<float>( spaceHmdYawTotal / ( 2.0 * M_PI ) );
if ( lastPosTimer <= 0 )
{