Merge branch 'master' into alpha-kung
This commit is contained in:
@@ -22,7 +22,6 @@
|
|||||||
> * [Audio Page](#audio_page)
|
> * [Audio Page](#audio_page)
|
||||||
> * [Revive Page](#revive_page)
|
> * [Revive Page](#revive_page)
|
||||||
> * [Utilities Page](#utilities_page)
|
> * [Utilities Page](#utilities_page)
|
||||||
> * [Accessibility Page](#accessibility_page)
|
|
||||||
> * [Statistics Page](#statistics_page)
|
> * [Statistics Page](#statistics_page)
|
||||||
> * [Settings Page](#settings_page)
|
> * [Settings Page](#settings_page)
|
||||||
> * [How To Compile](#how_to_compile)
|
> * [How To Compile](#how_to_compile)
|
||||||
@@ -260,12 +259,6 @@ Any changes to controller settings are immediately applied by Revive (Requires R
|
|||||||
- **Steam Desktop Overlay Width:** Allows to increase the size of the Steam desktop overlay. Useful for multi-monitor setups.
|
- **Steam Desktop Overlay Width:** Allows to increase the size of the Steam desktop overlay. Useful for multi-monitor setups.
|
||||||
|
|
||||||
- **Media Control Keys:** Allows controlling a media player through the media keys. This is the same as having a keyboard with media keys and then pressing them. Should support most common media players.
|
- **Media Control Keys:** Allows controlling a media player through the media keys. This is the same as having a keyboard with media keys and then pressing them. Should support most common media players.
|
||||||
<a name="accessibility_page"></a>
|
|
||||||
## - Accessibility Page:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
- **Adjust Player Height:** Offsets the player height to allows short or wheelchair-bound players to fully interact with height-limited applications by both boosting their height and being able to touch the in-game floor when necessary by pressing a configurable motion controller button.
|
|
||||||
|
|
||||||
<a name="statistics_page"></a>
|
<a name="statistics_page"></a>
|
||||||
## - Statistics Page:
|
## - Statistics Page:
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ SOURCES += src/main.cpp\
|
|||||||
src/tabcontrollers/ReviveTabController.cpp \
|
src/tabcontrollers/ReviveTabController.cpp \
|
||||||
src/tabcontrollers/UtilitiesTabController.cpp \
|
src/tabcontrollers/UtilitiesTabController.cpp \
|
||||||
src/tabcontrollers/PttController.cpp \
|
src/tabcontrollers/PttController.cpp \
|
||||||
src/tabcontrollers/AccessibilityTabController.cpp \
|
|
||||||
src/utils/ChaperoneUtils.cpp \
|
src/utils/ChaperoneUtils.cpp \
|
||||||
src/tabcontrollers/audiomanager/AudioManagerDummy.cpp \
|
src/tabcontrollers/audiomanager/AudioManagerDummy.cpp \
|
||||||
src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp \
|
src/tabcontrollers/keyboardinput/KeyboardInputDummy.cpp \
|
||||||
@@ -85,7 +84,6 @@ HEADERS += src/overlaycontroller.h \
|
|||||||
src/tabcontrollers/UtilitiesTabController.h \
|
src/tabcontrollers/UtilitiesTabController.h \
|
||||||
src/tabcontrollers/AudioManager.h \
|
src/tabcontrollers/AudioManager.h \
|
||||||
src/tabcontrollers/PttController.h \
|
src/tabcontrollers/PttController.h \
|
||||||
src/tabcontrollers/AccessibilityTabController.h \
|
|
||||||
src/tabcontrollers/KeyboardInput.h \
|
src/tabcontrollers/KeyboardInput.h \
|
||||||
src/utils/Matrix.h \
|
src/utils/Matrix.h \
|
||||||
src/utils/ChaperoneUtils.h \
|
src/utils/ChaperoneUtils.h \
|
||||||
@@ -124,7 +122,6 @@ DISTFILES += \
|
|||||||
src/res/img/battery/* \
|
src/res/img/battery/* \
|
||||||
src/res/img/icons/* \
|
src/res/img/icons/* \
|
||||||
src/res/qml/qmldir \
|
src/res/qml/qmldir \
|
||||||
src/res/qml/AccessibilityPage.qml \
|
|
||||||
src/res/qml/audio_page/* \
|
src/res/qml/audio_page/* \
|
||||||
src/res/qml/ChaperonePage.qml \
|
src/res/qml/ChaperonePage.qml \
|
||||||
src/res/qml/ChaperoneWarningsPage.qml \
|
src/res/qml/ChaperoneWarningsPage.qml \
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB |
@@ -129,7 +129,6 @@ OverlayController::OverlayController( bool desktopMode,
|
|||||||
m_reviveTabController.initStage1(
|
m_reviveTabController.initStage1(
|
||||||
m_settingsTabController.forceRevivePage() );
|
m_settingsTabController.forceRevivePage() );
|
||||||
m_utilitiesTabController.initStage1();
|
m_utilitiesTabController.initStage1();
|
||||||
m_accessibilityTabController.initStage1();
|
|
||||||
|
|
||||||
// Set qml context
|
// Set qml context
|
||||||
qmlEngine.rootContext()->setContextProperty( "applicationVersion",
|
qmlEngine.rootContext()->setContextProperty( "applicationVersion",
|
||||||
@@ -248,16 +247,6 @@ OverlayController::OverlayController( bool desktopMode,
|
|||||||
QQmlEngine::setObjectOwnership( obj, QQmlEngine::CppOwnership );
|
QQmlEngine::setObjectOwnership( obj, QQmlEngine::CppOwnership );
|
||||||
return obj;
|
return obj;
|
||||||
} );
|
} );
|
||||||
qmlRegisterSingletonType<SteamVRTabController>(
|
|
||||||
"matzman666.advsettings",
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
"AccessibilityTabController",
|
|
||||||
[]( QQmlEngine*, QJSEngine* ) {
|
|
||||||
QObject* obj = &( objectAddress->m_accessibilityTabController );
|
|
||||||
QQmlEngine::setObjectOwnership( obj, QQmlEngine::CppOwnership );
|
|
||||||
return obj;
|
|
||||||
} );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OverlayController::~OverlayController()
|
OverlayController::~OverlayController()
|
||||||
@@ -406,7 +395,6 @@ void OverlayController::SetWidget( QQuickItem* quickItem,
|
|||||||
m_settingsTabController.initStage2( this, m_pWindow.get() );
|
m_settingsTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_reviveTabController.initStage2( this, m_pWindow.get() );
|
m_reviveTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_utilitiesTabController.initStage2( this, m_pWindow.get() );
|
m_utilitiesTabController.initStage2( this, m_pWindow.get() );
|
||||||
m_accessibilityTabController.initStage2( this, m_pWindow.get() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OverlayController::OnRenderRequest()
|
void OverlayController::OnRenderRequest()
|
||||||
@@ -761,8 +749,6 @@ void OverlayController::mainEventLoop()
|
|||||||
m_settingsTabController.eventLoopTick();
|
m_settingsTabController.eventLoopTick();
|
||||||
m_reviveTabController.eventLoopTick();
|
m_reviveTabController.eventLoopTick();
|
||||||
m_audioTabController.eventLoopTick();
|
m_audioTabController.eventLoopTick();
|
||||||
m_accessibilityTabController.eventLoopTick(
|
|
||||||
vr::VRCompositor()->GetTrackingSpace() );
|
|
||||||
|
|
||||||
if ( m_ulOverlayThumbnailHandle != vr::k_ulOverlayHandleInvalid )
|
if ( m_ulOverlayThumbnailHandle != vr::k_ulOverlayHandleInvalid )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
#include "tabcontrollers/SettingsTabController.h"
|
#include "tabcontrollers/SettingsTabController.h"
|
||||||
#include "tabcontrollers/ReviveTabController.h"
|
#include "tabcontrollers/ReviveTabController.h"
|
||||||
#include "tabcontrollers/UtilitiesTabController.h"
|
#include "tabcontrollers/UtilitiesTabController.h"
|
||||||
#include "tabcontrollers/AccessibilityTabController.h"
|
|
||||||
|
|
||||||
#include "ivrinput/ivrinput.h"
|
#include "ivrinput/ivrinput.h"
|
||||||
|
|
||||||
@@ -50,7 +49,6 @@ namespace advsettings
|
|||||||
// Actual rates of updates are counter * vsync (~11ms)
|
// Actual rates of updates are counter * vsync (~11ms)
|
||||||
// Values chosen based on update speed priority
|
// Values chosen based on update speed priority
|
||||||
// Avoid setting values to the same numbers.
|
// Avoid setting values to the same numbers.
|
||||||
constexpr int k_accessibilitySettingsUpdateCounter = 151;
|
|
||||||
constexpr int k_audioSettingsUpdateCounter = 89;
|
constexpr int k_audioSettingsUpdateCounter = 89;
|
||||||
constexpr int k_chaperoneSettingsUpdateCounter = 101;
|
constexpr int k_chaperoneSettingsUpdateCounter = 101;
|
||||||
constexpr int k_moveCenterSettingsUpdateCounter = 149;
|
constexpr int k_moveCenterSettingsUpdateCounter = 149;
|
||||||
@@ -126,7 +124,6 @@ public: // I know it's an ugly hack to make them public to enable external
|
|||||||
SettingsTabController m_settingsTabController;
|
SettingsTabController m_settingsTabController;
|
||||||
ReviveTabController m_reviveTabController;
|
ReviveTabController m_reviveTabController;
|
||||||
UtilitiesTabController m_utilitiesTabController;
|
UtilitiesTabController m_utilitiesTabController;
|
||||||
AccessibilityTabController m_accessibilityTabController;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPoint getMousePositionForEvent( vr::VREvent_Mouse_t mouse );
|
QPoint getMousePositionForEvent( vr::VREvent_Mouse_t mouse );
|
||||||
|
|||||||
@@ -1,187 +0,0 @@
|
|||||||
import QtQuick 2.7
|
|
||||||
import QtQuick.Controls 2.0
|
|
||||||
import QtQuick.Layouts 1.3
|
|
||||||
import matzman666.advsettings 1.0
|
|
||||||
import "common"
|
|
||||||
|
|
||||||
|
|
||||||
MyStackViewPage {
|
|
||||||
headerText: "Accessibility Tools"
|
|
||||||
|
|
||||||
PttControllerConfigDialog {
|
|
||||||
id: pttControllerConfigDialog
|
|
||||||
pttControllerConfigClass: AccessibilityTabController
|
|
||||||
}
|
|
||||||
|
|
||||||
content: ColumnLayout {
|
|
||||||
spacing: 92
|
|
||||||
|
|
||||||
GroupBox {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
label: MyText {
|
|
||||||
leftPadding: 10
|
|
||||||
text: "Adjust Player Height"
|
|
||||||
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 {
|
|
||||||
MyPushButton2 {
|
|
||||||
Layout.preferredWidth: 40
|
|
||||||
text: "-"
|
|
||||||
onClicked: {
|
|
||||||
accessibilityMoveYSlider.value -= 0.05
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MySlider {
|
|
||||||
id: accessibilityMoveYSlider
|
|
||||||
from: 0
|
|
||||||
to: 1.5
|
|
||||||
stepSize: 0.01
|
|
||||||
value: 0.0
|
|
||||||
Layout.fillWidth: true
|
|
||||||
onPositionChanged: {
|
|
||||||
var val = this.from + ( this.position * (this.to - this.from))
|
|
||||||
accessibilityMoveYText.text = val.toFixed(2)
|
|
||||||
}
|
|
||||||
onValueChanged: {
|
|
||||||
AccessibilityTabController.heightOffset = this.value.toFixed(2)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MyPushButton2 {
|
|
||||||
Layout.preferredWidth: 40
|
|
||||||
text: "+"
|
|
||||||
onClicked: {
|
|
||||||
accessibilityMoveYSlider.value += 0.05
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MyTextField {
|
|
||||||
id: accessibilityMoveYText
|
|
||||||
text: "0.00"
|
|
||||||
keyBoardUID: 700
|
|
||||||
Layout.preferredWidth: 140
|
|
||||||
Layout.leftMargin: 10
|
|
||||||
Layout.rightMargin: 10
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
function onInputEvent(input) {
|
|
||||||
var val = parseFloat(input)
|
|
||||||
if (!isNaN(val)) {
|
|
||||||
if (val >= accessibilityMoveYSlider.from && val <= accessibilityMoveYSlider.to) {
|
|
||||||
accessibilityMoveYSlider.value = val.toFixed(2);
|
|
||||||
} else {
|
|
||||||
AccessibilityTabController.setHeightOffset(val.toFixed(2), false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
text = AccessibilityTabController.heightOffset.toFixed(2)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout {
|
|
||||||
MyToggleButton {
|
|
||||||
id: heightOffsetPttEnabledToggle
|
|
||||||
Layout.preferredWidth: 260
|
|
||||||
text: "Push-to-Toggle:"
|
|
||||||
onClicked: {
|
|
||||||
AccessibilityTabController.pttEnabled = checked
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MyToggleButton {
|
|
||||||
id: heightOffsetPttLeftControllerToggle
|
|
||||||
text: "Left Controller"
|
|
||||||
onClicked: {
|
|
||||||
AccessibilityTabController.setPttLeftControllerEnabled(checked, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MyPushButton {
|
|
||||||
text: "Configure"
|
|
||||||
onClicked: {
|
|
||||||
pttControllerConfigDialog.openPopup(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Item {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
MyToggleButton {
|
|
||||||
id: heightOffsetPttRightControllerToggle
|
|
||||||
text: "Right Controller"
|
|
||||||
onClicked: {
|
|
||||||
AccessibilityTabController.setPttRightControllerEnabled(checked, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MyPushButton {
|
|
||||||
text: "Configure"
|
|
||||||
onClicked: {
|
|
||||||
pttControllerConfigDialog.openPopup(1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Item { Layout.fillHeight: true; Layout.fillWidth: true}
|
|
||||||
|
|
||||||
MyPushButton {
|
|
||||||
id: accessibilityResetButton
|
|
||||||
Layout.preferredWidth: 250
|
|
||||||
text: "Reset"
|
|
||||||
onClicked: {
|
|
||||||
AccessibilityTabController.reset()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
|
||||||
var heightOffsetFormatted = AccessibilityTabController.heightOffset.toFixed(2)
|
|
||||||
if (heightOffsetFormatted >= accessibilityMoveYSlider.from && heightOffsetFormatted <= accessibilityMoveYSlider.to) {
|
|
||||||
accessibilityMoveYSlider.value = heightOffsetFormatted
|
|
||||||
}
|
|
||||||
accessibilityMoveYText.text = heightOffsetFormatted
|
|
||||||
heightOffsetPttEnabledToggle.checked = AccessibilityTabController.pttEnabled
|
|
||||||
heightOffsetPttLeftControllerToggle.checked = AccessibilityTabController.pttLeftControllerEnabled
|
|
||||||
heightOffsetPttRightControllerToggle.checked = AccessibilityTabController.pttRightControllerEnabled
|
|
||||||
}
|
|
||||||
|
|
||||||
Connections {
|
|
||||||
target: AccessibilityTabController
|
|
||||||
onHeightOffsetChanged: {
|
|
||||||
var heightOffsetFormatted = AccessibilityTabController.heightOffset.toFixed(2)
|
|
||||||
if (heightOffsetFormatted >= accessibilityMoveYSlider.from && heightOffsetFormatted <= accessibilityMoveYSlider.to) {
|
|
||||||
accessibilityMoveYSlider.value = heightOffsetFormatted
|
|
||||||
}
|
|
||||||
accessibilityMoveYText.text = heightOffsetFormatted
|
|
||||||
}
|
|
||||||
onPttEnabledChanged: {
|
|
||||||
heightOffsetPttEnabledToggle.checked = AccessibilityTabController.pttEnabled
|
|
||||||
}
|
|
||||||
onPttActiveChanged: {
|
|
||||||
|
|
||||||
}
|
|
||||||
onPttLeftControllerEnabledChanged: {
|
|
||||||
heightOffsetPttLeftControllerToggle.checked = AccessibilityTabController.pttLeftControllerEnabled
|
|
||||||
}
|
|
||||||
onPttRightControllerEnabledChanged: {
|
|
||||||
heightOffsetPttRightControllerToggle.checked = AccessibilityTabController.pttRightControllerEnabled
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -114,17 +114,6 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MyPushButton {
|
|
||||||
id: accessibilityButton
|
|
||||||
activationSoundEnabled: false
|
|
||||||
text: "Accessibility"
|
|
||||||
Layout.fillWidth: true
|
|
||||||
onClicked: {
|
|
||||||
MyResources.playFocusChangedSound()
|
|
||||||
mainView.push(accessibilityPage)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MyPushButton {
|
MyPushButton {
|
||||||
id: statisticsButton
|
id: statisticsButton
|
||||||
activationSoundEnabled: false
|
activationSoundEnabled: false
|
||||||
|
|||||||
@@ -71,11 +71,6 @@ Rectangle {
|
|||||||
visible: false
|
visible: false
|
||||||
}
|
}
|
||||||
|
|
||||||
property AccessibilityPage accessibilityPage: AccessibilityPage {
|
|
||||||
stackView: mainView
|
|
||||||
visible: false
|
|
||||||
}
|
|
||||||
|
|
||||||
StackView {
|
StackView {
|
||||||
id: mainView
|
id: mainView
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|||||||
@@ -1,136 +0,0 @@
|
|||||||
#include "AccessibilityTabController.h"
|
|
||||||
#include <QQuickWindow>
|
|
||||||
#include "../overlaycontroller.h"
|
|
||||||
|
|
||||||
// application namespace
|
|
||||||
namespace advsettings
|
|
||||||
{
|
|
||||||
void AccessibilityTabController::initStage1()
|
|
||||||
{
|
|
||||||
setTrackingUniverse( vr::VRCompositor()->GetTrackingSpace() );
|
|
||||||
auto settings = OverlayController::appSettings();
|
|
||||||
settings->beginGroup( getSettingsName() );
|
|
||||||
auto value = settings->value( "heightOffset", m_heightOffset );
|
|
||||||
settings->endGroup();
|
|
||||||
if ( value.isValid() && !value.isNull() )
|
|
||||||
{
|
|
||||||
m_heightOffset = value.toFloat();
|
|
||||||
emit heightOffsetChanged( m_heightOffset );
|
|
||||||
}
|
|
||||||
|
|
||||||
reloadPttConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::initStage2( OverlayController* var_parent,
|
|
||||||
QQuickWindow* var_widget )
|
|
||||||
{
|
|
||||||
this->parent = var_parent;
|
|
||||||
this->widget = var_widget;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::setTrackingUniverse( int value )
|
|
||||||
{
|
|
||||||
if ( m_trackingUniverse != value )
|
|
||||||
{
|
|
||||||
reset();
|
|
||||||
m_trackingUniverse = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
float AccessibilityTabController::heightOffset() const
|
|
||||||
{
|
|
||||||
return m_heightOffset;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::setHeightOffset( float value, bool notify )
|
|
||||||
{
|
|
||||||
if ( std::abs( m_heightOffset - value ) > 0.001 )
|
|
||||||
{
|
|
||||||
modHeightOffset( value - m_heightOffset, notify );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::modHeightOffset( float value, bool notify )
|
|
||||||
{
|
|
||||||
parent->AddOffsetToUniverseCenter(
|
|
||||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse, 1, -value, false );
|
|
||||||
m_heightOffset += value;
|
|
||||||
auto settings = OverlayController::appSettings();
|
|
||||||
settings->beginGroup( getSettingsName() );
|
|
||||||
settings->setValue( "heightOffset", m_heightOffset );
|
|
||||||
settings->endGroup();
|
|
||||||
settings->sync();
|
|
||||||
if ( notify )
|
|
||||||
{
|
|
||||||
emit heightOffsetChanged( m_heightOffset );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::onPttStart()
|
|
||||||
{
|
|
||||||
m_toggleHeightOffset = m_heightOffset;
|
|
||||||
parent->AddOffsetToUniverseCenter(
|
|
||||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse,
|
|
||||||
1,
|
|
||||||
m_toggleHeightOffset,
|
|
||||||
false );
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::onPttStop()
|
|
||||||
{
|
|
||||||
parent->AddOffsetToUniverseCenter(
|
|
||||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse,
|
|
||||||
1,
|
|
||||||
-m_toggleHeightOffset,
|
|
||||||
false );
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::onPttDisabled()
|
|
||||||
{
|
|
||||||
if ( pttActive() )
|
|
||||||
{
|
|
||||||
stopPtt();
|
|
||||||
}
|
|
||||||
m_toggleHeightOffset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::reset()
|
|
||||||
{
|
|
||||||
std::lock_guard<std::recursive_mutex> lock( eventLoopMutex );
|
|
||||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
|
||||||
parent->AddOffsetToUniverseCenter(
|
|
||||||
( vr::TrackingUniverseOrigin ) m_trackingUniverse,
|
|
||||||
1,
|
|
||||||
m_heightOffset,
|
|
||||||
false,
|
|
||||||
false );
|
|
||||||
vr::VRChaperoneSetup()->CommitWorkingCopy( vr::EChaperoneConfigFile_Live );
|
|
||||||
m_heightOffset = 0.0f;
|
|
||||||
emit heightOffsetChanged( m_heightOffset );
|
|
||||||
}
|
|
||||||
|
|
||||||
void AccessibilityTabController::eventLoopTick(
|
|
||||||
vr::ETrackingUniverseOrigin universe )
|
|
||||||
{
|
|
||||||
if ( !eventLoopMutex.try_lock() )
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( settingsUpdateCounter >= k_accessibilitySettingsUpdateCounter )
|
|
||||||
{
|
|
||||||
if ( parent->isDashboardVisible() )
|
|
||||||
{
|
|
||||||
setTrackingUniverse( ( int ) universe );
|
|
||||||
}
|
|
||||||
settingsUpdateCounter = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
settingsUpdateCounter++;
|
|
||||||
}
|
|
||||||
checkPttStatus();
|
|
||||||
eventLoopMutex.unlock();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace advsettings
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "PttController.h"
|
|
||||||
|
|
||||||
class QQuickWindow;
|
|
||||||
// application namespace
|
|
||||||
namespace advsettings
|
|
||||||
{
|
|
||||||
// forward declaration
|
|
||||||
class OverlayController;
|
|
||||||
|
|
||||||
class AccessibilityTabController : public PttController
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
Q_PROPERTY( float heightOffset READ heightOffset WRITE setHeightOffset
|
|
||||||
NOTIFY heightOffsetChanged )
|
|
||||||
|
|
||||||
private:
|
|
||||||
OverlayController* parent;
|
|
||||||
QQuickWindow* widget;
|
|
||||||
|
|
||||||
int m_trackingUniverse = ( int ) vr::TrackingUniverseStanding;
|
|
||||||
float m_heightOffset = 0.0f;
|
|
||||||
float m_toggleHeightOffset = 0.0f;
|
|
||||||
|
|
||||||
unsigned settingsUpdateCounter = 0;
|
|
||||||
|
|
||||||
QString getSettingsName() override
|
|
||||||
{
|
|
||||||
return "accessibilitySettings";
|
|
||||||
}
|
|
||||||
void onPttStart() override;
|
|
||||||
void onPttStop() override;
|
|
||||||
void onPttDisabled() override;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void initStage1();
|
|
||||||
void initStage2( OverlayController* parent, QQuickWindow* widget );
|
|
||||||
void eventLoopTick( vr::ETrackingUniverseOrigin universe );
|
|
||||||
|
|
||||||
float heightOffset() const;
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void setTrackingUniverse( int value );
|
|
||||||
void setHeightOffset( float value, bool notify = true );
|
|
||||||
void modHeightOffset( float value, bool notify = true );
|
|
||||||
void reset();
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void heightOffsetChanged( float value );
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace advsettings
|
|
||||||
Reference in New Issue
Block a user