Added axis locks to playspace mover
This commit is contained in:
+91
-2
@@ -26,7 +26,34 @@ SOURCES += src/main.cpp\
|
|||||||
src/tabcontrollers/audiomanager/AudioManagerWindows.cpp \
|
src/tabcontrollers/audiomanager/AudioManagerWindows.cpp \
|
||||||
src/tabcontrollers/PttController.cpp \
|
src/tabcontrollers/PttController.cpp \
|
||||||
src/tabcontrollers/AccessibilityTabController.cpp \
|
src/tabcontrollers/AccessibilityTabController.cpp \
|
||||||
src/utils/ChaperoneUtils.cpp
|
src/utils/ChaperoneUtils.cpp \
|
||||||
|
release/moc_AccessibilityTabController.cpp \
|
||||||
|
release/moc_AudioTabController.cpp \
|
||||||
|
release/moc_ChaperoneTabController.cpp \
|
||||||
|
release/moc_FixFloorTabController.cpp \
|
||||||
|
release/moc_MoveCenterTabController.cpp \
|
||||||
|
release/moc_overlaycontroller.cpp \
|
||||||
|
release/moc_PttController.cpp \
|
||||||
|
release/moc_ReviveTabController.cpp \
|
||||||
|
release/moc_SettingsTabController.cpp \
|
||||||
|
release/moc_StatisticsTabController.cpp \
|
||||||
|
release/moc_SteamVRTabController.cpp \
|
||||||
|
release/moc_UtilitiesTabController.cpp \
|
||||||
|
src/tabcontrollers/audiomanager/AudioManagerWindows.cpp \
|
||||||
|
src/tabcontrollers/AccessibilityTabController.cpp \
|
||||||
|
src/tabcontrollers/AudioTabController.cpp \
|
||||||
|
src/tabcontrollers/ChaperoneTabController.cpp \
|
||||||
|
src/tabcontrollers/FixFloorTabController.cpp \
|
||||||
|
src/tabcontrollers/MoveCenterTabController.cpp \
|
||||||
|
src/tabcontrollers/PttController.cpp \
|
||||||
|
src/tabcontrollers/ReviveTabController.cpp \
|
||||||
|
src/tabcontrollers/SettingsTabController.cpp \
|
||||||
|
src/tabcontrollers/StatisticsTabController.cpp \
|
||||||
|
src/tabcontrollers/SteamVRTabController.cpp \
|
||||||
|
src/tabcontrollers/UtilitiesTabController.cpp \
|
||||||
|
src/utils/ChaperoneUtils.cpp \
|
||||||
|
src/main.cpp \
|
||||||
|
src/overlaycontroller.cpp
|
||||||
|
|
||||||
HEADERS += src/overlaycontroller.h \
|
HEADERS += src/overlaycontroller.h \
|
||||||
src/logging.h \
|
src/logging.h \
|
||||||
@@ -44,7 +71,33 @@ HEADERS += src/overlaycontroller.h \
|
|||||||
src/tabcontrollers/PttController.h \
|
src/tabcontrollers/PttController.h \
|
||||||
src/tabcontrollers/AccessibilityTabController.h \
|
src/tabcontrollers/AccessibilityTabController.h \
|
||||||
src/utils/Matrix.h \
|
src/utils/Matrix.h \
|
||||||
src/utils/ChaperoneUtils.h
|
src/utils/ChaperoneUtils.h \
|
||||||
|
release/moc_predefs.h \
|
||||||
|
src/tabcontrollers/audiomanager/AudioManagerWindows.h \
|
||||||
|
src/tabcontrollers/audiomanager/IPolicyConfig.h \
|
||||||
|
src/tabcontrollers/AccessibilityTabController.h \
|
||||||
|
src/tabcontrollers/AudioManager.h \
|
||||||
|
src/tabcontrollers/AudioTabController.h \
|
||||||
|
src/tabcontrollers/ChaperoneTabController.h \
|
||||||
|
src/tabcontrollers/FixFloorTabController.h \
|
||||||
|
src/tabcontrollers/MoveCenterTabController.h \
|
||||||
|
src/tabcontrollers/PttController.h \
|
||||||
|
src/tabcontrollers/ReviveTabController.h \
|
||||||
|
src/tabcontrollers/SettingsTabController.h \
|
||||||
|
src/tabcontrollers/StatisticsTabController.h \
|
||||||
|
src/tabcontrollers/SteamVRTabController.h \
|
||||||
|
src/tabcontrollers/UtilitiesTabController.h \
|
||||||
|
src/utils/ChaperoneUtils.h \
|
||||||
|
src/utils/Matrix.h \
|
||||||
|
src/logging.h \
|
||||||
|
src/overlaycontroller.h \
|
||||||
|
third-party/easylogging++/easylogging++.h \
|
||||||
|
third-party/openvr/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr.h \
|
||||||
|
third-party/openvr/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_capi.h \
|
||||||
|
third-party/openvr/bin/osx64/OpenVR.framework/Versions/A/Headers/openvr_driver.h \
|
||||||
|
third-party/openvr/headers/openvr.h \
|
||||||
|
third-party/openvr/headers/openvr_capi.h \
|
||||||
|
third-party/openvr/headers/openvr_driver.h
|
||||||
|
|
||||||
INCLUDEPATH += third-party/openvr/headers \
|
INCLUDEPATH += third-party/openvr/headers \
|
||||||
third-party/easylogging++
|
third-party/easylogging++
|
||||||
@@ -54,3 +107,39 @@ unix:LIBS += -L"$$PWD/third-party/openvr/lib/linux64"
|
|||||||
LIBS += -lopenvr_api -luser32 -lole32
|
LIBS += -lopenvr_api -luser32 -lole32
|
||||||
|
|
||||||
DESTDIR = bin/win64/AdvancedSettings
|
DESTDIR = bin/win64/AdvancedSettings
|
||||||
|
|
||||||
|
DISTFILES += \
|
||||||
|
src/res/qml/ptt_notification.png \
|
||||||
|
src/res/qml/backarrow.svg \
|
||||||
|
src/res/qml/check.svg \
|
||||||
|
src/res/qml/mic_off.svg \
|
||||||
|
src/res/qml/mic_on.svg \
|
||||||
|
src/res/qml/ptt_notification.svg \
|
||||||
|
src/res/qml/speaker_off.svg \
|
||||||
|
src/res/qml/speaker_on.svg \
|
||||||
|
src/res/qml/qmldir \
|
||||||
|
src/res/qml/AccessibilityPage.qml \
|
||||||
|
src/res/qml/AudioPage.qml \
|
||||||
|
src/res/qml/ChaperonePage.qml \
|
||||||
|
src/res/qml/ChaperoneWarningsPage.qml \
|
||||||
|
src/res/qml/FixFloorPage.qml \
|
||||||
|
src/res/qml/mainwidget.qml \
|
||||||
|
src/res/qml/MyComboBox.qml \
|
||||||
|
src/res/qml/MyDialogOkCancelPopup.qml \
|
||||||
|
src/res/qml/MyDialogOkPopup.qml \
|
||||||
|
src/res/qml/MyPushButton.qml \
|
||||||
|
src/res/qml/MyPushButton2.qml \
|
||||||
|
src/res/qml/MyResources.qml \
|
||||||
|
src/res/qml/MySlider.qml \
|
||||||
|
src/res/qml/MyStackViewPage.qml \
|
||||||
|
src/res/qml/MyText.qml \
|
||||||
|
src/res/qml/MyTextField.qml \
|
||||||
|
src/res/qml/MyToggleButton.qml \
|
||||||
|
src/res/qml/PlayspacePage.qml \
|
||||||
|
src/res/qml/PttControllerConfigDialog.qml \
|
||||||
|
src/res/qml/RevivePage.qml \
|
||||||
|
src/res/qml/RootPage.qml \
|
||||||
|
src/res/qml/SettingsPage.qml \
|
||||||
|
src/res/qml/StatisticsPage.qml \
|
||||||
|
src/res/qml/SteamVRPage.qml \
|
||||||
|
src/res/qml/UtilitiesPage.qml
|
||||||
|
|||||||
Binary file not shown.
@@ -47,7 +47,7 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
GridLayout {
|
GridLayout {
|
||||||
columns: 4
|
columns: 5
|
||||||
|
|
||||||
MyText {
|
MyText {
|
||||||
text: "X-Axis (Left/Right):"
|
text: "X-Axis (Left/Right):"
|
||||||
@@ -91,6 +91,14 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MyToggleButton {
|
||||||
|
id: lockXToggle
|
||||||
|
text: "Lock X"
|
||||||
|
onCheckedChanged: {
|
||||||
|
MoveCenterTabController.lockXToggle = this.checked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MyText {
|
MyText {
|
||||||
text: "Y-Axis (Down/Up):"
|
text: "Y-Axis (Down/Up):"
|
||||||
Layout.preferredWidth: 380
|
Layout.preferredWidth: 380
|
||||||
@@ -131,6 +139,15 @@ MyStackViewPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MyToggleButton {
|
||||||
|
id: lockYToggle
|
||||||
|
text: "Lock Y"
|
||||||
|
onCheckedChanged: {
|
||||||
|
MoveCenterTabController.lockYToggle = this.checked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
MyText {
|
MyText {
|
||||||
text: "Z-Axis (Forth/Back):"
|
text: "Z-Axis (Forth/Back):"
|
||||||
Layout.preferredWidth: 380
|
Layout.preferredWidth: 380
|
||||||
@@ -170,6 +187,15 @@ MyStackViewPage {
|
|||||||
MoveCenterTabController.modOffsetZ(0.5)
|
MoveCenterTabController.modOffsetZ(0.5)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MyToggleButton {
|
||||||
|
id: lockZToggle
|
||||||
|
text: "Lock Z"
|
||||||
|
onCheckedChanged: {
|
||||||
|
MoveCenterTabController.lockZToggle = this.checked
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,33 +189,91 @@ void MoveCenterTabController::setRequireDoubleClick(bool value, bool notify) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::modOffsetX(float value, bool notify) {
|
bool MoveCenterTabController::lockXToggle() const {
|
||||||
auto angle = m_rotation * 2 * M_PI / 360.0;
|
return m_lockXToggle;
|
||||||
float offset[3] = { value, 0, 0 };
|
}
|
||||||
rotateCoordinates(offset, angle);
|
|
||||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, offset, m_adjustChaperone);
|
void MoveCenterTabController::setLockX(bool value, bool notify) {
|
||||||
m_offsetX += value;
|
m_lockXToggle = value;
|
||||||
|
auto settings = OverlayController::appSettings();
|
||||||
|
settings->beginGroup("playspaceSettings");
|
||||||
|
settings->setValue("lockXToggle", m_lockXToggle);
|
||||||
|
settings->endGroup();
|
||||||
|
settings->sync();
|
||||||
if (notify) {
|
if (notify) {
|
||||||
emit offsetXChanged(m_offsetX);
|
emit requireLockXChanged(m_lockXToggle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool MoveCenterTabController::lockYToggle() const {
|
||||||
|
return m_lockYToggle;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MoveCenterTabController::setLockY(bool value, bool notify) {
|
||||||
|
m_lockYToggle = value;
|
||||||
|
auto settings = OverlayController::appSettings();
|
||||||
|
settings->beginGroup("playspaceSettings");
|
||||||
|
settings->setValue("lockYToggle", m_lockXToggle);
|
||||||
|
settings->endGroup();
|
||||||
|
settings->sync();
|
||||||
|
if (notify) {
|
||||||
|
emit requireLockYChanged(m_lockYToggle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MoveCenterTabController::lockZToggle() const {
|
||||||
|
return m_lockZToggle;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MoveCenterTabController::setLockZ(bool value, bool notify) {
|
||||||
|
m_lockZToggle = value;
|
||||||
|
auto settings = OverlayController::appSettings();
|
||||||
|
settings->beginGroup("playspaceSettings");
|
||||||
|
settings->setValue("lockZToggle", m_lockZToggle);
|
||||||
|
settings->endGroup();
|
||||||
|
settings->sync();
|
||||||
|
if (notify) {
|
||||||
|
emit requireLockZChanged(m_lockZToggle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MoveCenterTabController::modOffsetX(float value, bool notify) {
|
||||||
|
//TODO ? possible issue with locking position this way
|
||||||
|
if (!m_lockXToggle) {
|
||||||
|
auto angle = m_rotation * 2 * M_PI / 360.0;
|
||||||
|
float offset[3] = { value, 0, 0 };
|
||||||
|
rotateCoordinates(offset, angle);
|
||||||
|
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, offset, m_adjustChaperone);
|
||||||
|
m_offsetX += value;
|
||||||
|
if (notify) {
|
||||||
|
emit offsetXChanged(m_offsetX);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::modOffsetY(float value, bool notify) {
|
void MoveCenterTabController::modOffsetY(float value, bool notify) {
|
||||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, value, m_adjustChaperone);
|
if (!m_lockYToggle) {
|
||||||
m_offsetY += value;
|
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, value, m_adjustChaperone);
|
||||||
if (notify) {
|
m_offsetY += value;
|
||||||
emit offsetYChanged(m_offsetY);
|
if (notify) {
|
||||||
|
emit offsetYChanged(m_offsetY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MoveCenterTabController::modOffsetZ(float value, bool notify) {
|
void MoveCenterTabController::modOffsetZ(float value, bool notify) {
|
||||||
auto angle = m_rotation * 2 * M_PI / 360.0;
|
if (!m_lockZToggle) {
|
||||||
float offset[3] = { 0, 0, value };
|
auto angle = m_rotation * 2 * M_PI / 360.0;
|
||||||
rotateCoordinates(offset, angle);
|
float offset[3] = { 0, 0, value };
|
||||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, offset, m_adjustChaperone);
|
rotateCoordinates(offset, angle);
|
||||||
m_offsetZ += value;
|
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, offset, m_adjustChaperone);
|
||||||
if (notify) {
|
m_offsetZ += value;
|
||||||
emit offsetZChanged(m_offsetZ);
|
if (notify) {
|
||||||
|
emit offsetZChanged(m_offsetZ);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,13 +409,33 @@ void MoveCenterTabController::eventLoopTick(vr::ETrackingUniverseOrigin universe
|
|||||||
};
|
};
|
||||||
|
|
||||||
// offset is un-rotated coordinates
|
// offset is un-rotated coordinates
|
||||||
m_offsetX += diff[0];
|
|
||||||
m_offsetY += diff[1];
|
//prevents UI from updating if axis movement is locked
|
||||||
m_offsetZ += diff[2];
|
if (!m_lockXToggle) {
|
||||||
|
m_offsetX += diff[0];
|
||||||
|
}
|
||||||
|
if (!m_lockYToggle) {
|
||||||
|
m_offsetY += diff[1];
|
||||||
|
}
|
||||||
|
if (!m_lockZToggle) {
|
||||||
|
m_offsetZ += diff[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rotateCoordinates(diff, angle);
|
rotateCoordinates(diff, angle);
|
||||||
|
//If locked removes movement
|
||||||
|
if (m_lockXToggle) {
|
||||||
|
diff[0] = 0;
|
||||||
|
}
|
||||||
|
if (m_lockYToggle) {
|
||||||
|
diff[1] = 0;
|
||||||
|
}
|
||||||
|
if (m_lockZToggle) {
|
||||||
|
diff[2] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, diff, m_adjustChaperone);
|
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, diff, m_adjustChaperone);
|
||||||
}
|
}
|
||||||
m_lastControllerPosition[0] = absoluteControllerPosition[0];
|
m_lastControllerPosition[0] = absoluteControllerPosition[0];
|
||||||
m_lastControllerPosition[1] = absoluteControllerPosition[1];
|
m_lastControllerPosition[1] = absoluteControllerPosition[1];
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ class MoveCenterTabController : public QObject {
|
|||||||
Q_PROPERTY(bool moveShortcutRight READ moveShortcutRight WRITE setMoveShortcutRight NOTIFY moveShortcutRightChanged)
|
Q_PROPERTY(bool moveShortcutRight READ moveShortcutRight WRITE setMoveShortcutRight NOTIFY moveShortcutRightChanged)
|
||||||
Q_PROPERTY(bool moveShortcutLeft READ moveShortcutLeft WRITE setMoveShortcutLeft NOTIFY moveShortcutLeftChanged)
|
Q_PROPERTY(bool moveShortcutLeft READ moveShortcutLeft WRITE setMoveShortcutLeft NOTIFY moveShortcutLeftChanged)
|
||||||
Q_PROPERTY(bool requireDoubleClick READ requireDoubleClick WRITE setRequireDoubleClick NOTIFY requireDoubleClickChanged)
|
Q_PROPERTY(bool requireDoubleClick READ requireDoubleClick WRITE setRequireDoubleClick NOTIFY requireDoubleClickChanged)
|
||||||
|
Q_PROPERTY(bool lockXToggle READ lockXToggle WRITE setLockX NOTIFY requireLockXChanged)
|
||||||
|
Q_PROPERTY(bool lockYToggle READ lockYToggle WRITE setLockY NOTIFY requireLockYChanged)
|
||||||
|
Q_PROPERTY(bool lockZToggle READ lockZToggle WRITE setLockZ NOTIFY requireLockZChanged)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
OverlayController* parent;
|
OverlayController* parent;
|
||||||
@@ -42,6 +45,9 @@ private:
|
|||||||
bool m_moveShortcutRightEnabled = false;
|
bool m_moveShortcutRightEnabled = false;
|
||||||
bool m_moveShortcutLeftEnabled = false;
|
bool m_moveShortcutLeftEnabled = false;
|
||||||
bool m_requireDoubleClick = false;
|
bool m_requireDoubleClick = false;
|
||||||
|
bool m_lockXToggle = false;
|
||||||
|
bool m_lockYToggle = false;
|
||||||
|
bool m_lockZToggle = false;
|
||||||
std::chrono::system_clock::time_point lastMoveButtonClick[2];
|
std::chrono::system_clock::time_point lastMoveButtonClick[2];
|
||||||
|
|
||||||
unsigned settingsUpdateCounter = 0;
|
unsigned settingsUpdateCounter = 0;
|
||||||
@@ -62,6 +68,9 @@ public:
|
|||||||
bool moveShortcutRight() const;
|
bool moveShortcutRight() const;
|
||||||
bool moveShortcutLeft() const;
|
bool moveShortcutLeft() const;
|
||||||
bool requireDoubleClick() const;
|
bool requireDoubleClick() const;
|
||||||
|
bool lockXToggle() const;
|
||||||
|
bool lockYToggle() const;
|
||||||
|
bool lockZToggle() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
int trackingUniverse() const;
|
int trackingUniverse() const;
|
||||||
@@ -82,6 +91,11 @@ public slots:
|
|||||||
void modOffsetX(float value, bool notify = true);
|
void modOffsetX(float value, bool notify = true);
|
||||||
void modOffsetY(float value, bool notify = true);
|
void modOffsetY(float value, bool notify = true);
|
||||||
void modOffsetZ(float value, bool notify = true);
|
void modOffsetZ(float value, bool notify = true);
|
||||||
|
|
||||||
|
void setLockX(bool value, bool notify = true);
|
||||||
|
void setLockY(bool value, bool notify = true);
|
||||||
|
void setLockZ(bool value, bool notify = true);
|
||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -94,6 +108,9 @@ signals:
|
|||||||
void moveShortcutRightChanged(bool value);
|
void moveShortcutRightChanged(bool value);
|
||||||
void moveShortcutLeftChanged(bool value);
|
void moveShortcutLeftChanged(bool value);
|
||||||
void requireDoubleClickChanged(bool value);
|
void requireDoubleClickChanged(bool value);
|
||||||
|
void requireLockXChanged(bool value);
|
||||||
|
void requireLockYChanged(bool value);
|
||||||
|
void requireLockZChanged(bool value);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace advsettings
|
} // namespace advsettings
|
||||||
|
|||||||
Reference in New Issue
Block a user