Added MyTextField and overhauled Playspace page.
This commit is contained in:
@@ -37,6 +37,7 @@ namespace advsettings {
|
||||
|
||||
class OverlayController : public QObject {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(bool desktopMode READ isDesktopMode)
|
||||
|
||||
public:
|
||||
static constexpr const char* applicationKey = "matzman666.AdvancedSettings";
|
||||
@@ -93,6 +94,8 @@ public:
|
||||
void AddOffsetToCollisionBounds(unsigned axisId, float offset, bool commit = true);
|
||||
void RotateCollisionBounds(float angle, bool commit = true); // around y axis
|
||||
|
||||
bool isDesktopMode() { return desktopMode; };
|
||||
|
||||
Q_INVOKABLE QString getVersionString();
|
||||
Q_INVOKABLE QUrl getVRRuntimePathUrl();
|
||||
|
||||
|
||||
@@ -7,6 +7,13 @@ namespace advsettings {
|
||||
|
||||
void MoveCenterTabController::initStage1() {
|
||||
setTrackingUniverse(vr::VRCompositor()->GetTrackingSpace());
|
||||
auto settings = OverlayController::appSettings();
|
||||
settings->beginGroup("playspaceSettings");
|
||||
auto value = settings->value("adjustChaperone", m_adjustChaperone);
|
||||
settings->endGroup();
|
||||
if (value.isValid() && !value.isNull()) {
|
||||
m_adjustChaperone = value.toBool();
|
||||
}
|
||||
}
|
||||
|
||||
void MoveCenterTabController::initStage2(OverlayController * parent, QQuickWindow * widget) {
|
||||
@@ -35,10 +42,7 @@ float MoveCenterTabController::offsetX() const {
|
||||
|
||||
void MoveCenterTabController::setOffsetX(float value, bool notify) {
|
||||
if (m_offsetX != value) {
|
||||
m_offsetX = value;
|
||||
if (notify) {
|
||||
emit offsetXChanged(m_offsetX);
|
||||
}
|
||||
modOffsetX(value - m_offsetX, notify);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,10 +52,7 @@ float MoveCenterTabController::offsetY() const {
|
||||
|
||||
void MoveCenterTabController::setOffsetY(float value, bool notify) {
|
||||
if (m_offsetY != value) {
|
||||
m_offsetY = value;
|
||||
if (notify) {
|
||||
emit offsetYChanged(m_offsetY);
|
||||
}
|
||||
modOffsetY(value - m_offsetY, notify);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,10 +62,7 @@ float MoveCenterTabController::offsetZ() const {
|
||||
|
||||
void MoveCenterTabController::setOffsetZ(float value, bool notify) {
|
||||
if (m_offsetZ != value) {
|
||||
m_offsetZ = value;
|
||||
if (notify) {
|
||||
emit offsetZChanged(m_offsetZ);
|
||||
}
|
||||
modOffsetZ(value - m_offsetZ, notify);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +73,7 @@ int MoveCenterTabController::rotation() const {
|
||||
void MoveCenterTabController::setRotation(int value, bool notify) {
|
||||
if (m_rotation != value) {
|
||||
float angle = (value - m_rotation) * 2 * M_PI / 360.0;
|
||||
parent->RotateUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, angle);
|
||||
parent->RotateUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, angle, m_adjustChaperone);
|
||||
m_rotation = value;
|
||||
if (notify) {
|
||||
emit rotationChanged(m_rotation);
|
||||
@@ -83,46 +81,101 @@ void MoveCenterTabController::setRotation(int value, bool notify) {
|
||||
}
|
||||
}
|
||||
|
||||
void MoveCenterTabController::modOffsetX(float value) {
|
||||
bool MoveCenterTabController::adjustChaperone() const {
|
||||
return m_adjustChaperone;
|
||||
}
|
||||
|
||||
void MoveCenterTabController::setAdjustChaperone(bool value, bool notify) {
|
||||
if (m_adjustChaperone != value) {
|
||||
m_adjustChaperone = value;
|
||||
if (m_trackingUniverse == vr::TrackingUniverseStanding) {
|
||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
||||
if (m_adjustChaperone) {
|
||||
if (m_offsetX != 0.0f) {
|
||||
parent->AddOffsetToCollisionBounds(0, -m_offsetX, false);
|
||||
}
|
||||
if (m_offsetY != 0.0f) {
|
||||
parent->AddOffsetToCollisionBounds(0, -m_offsetY, false);
|
||||
}
|
||||
if (m_offsetZ != 0.0f) {
|
||||
parent->AddOffsetToCollisionBounds(0, -m_offsetZ, false);
|
||||
}
|
||||
if (m_rotation != 0) {
|
||||
parent->RotateCollisionBounds(-m_rotation, false);
|
||||
}
|
||||
} else {
|
||||
if (m_offsetX != 0.0f) {
|
||||
parent->AddOffsetToCollisionBounds(0, m_offsetX, false);
|
||||
}
|
||||
if (m_offsetY != 0.0f) {
|
||||
parent->AddOffsetToCollisionBounds(0, m_offsetY, false);
|
||||
}
|
||||
if (m_offsetZ != 0.0f) {
|
||||
parent->AddOffsetToCollisionBounds(0, m_offsetZ, false);
|
||||
}
|
||||
if (m_rotation != 0) {
|
||||
parent->RotateCollisionBounds(m_rotation, false);
|
||||
}
|
||||
}
|
||||
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
|
||||
}
|
||||
auto settings = OverlayController::appSettings();
|
||||
settings->beginGroup("playspaceSettings");
|
||||
settings->setValue("adjustChaperone", m_adjustChaperone);
|
||||
settings->endGroup();
|
||||
settings->sync();
|
||||
if (notify) {
|
||||
emit adjustChaperoneChanged(m_adjustChaperone);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MoveCenterTabController::modOffsetX(float value, bool notify) {
|
||||
if (m_rotation == 0) {
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, value);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, value, m_adjustChaperone);
|
||||
} else {
|
||||
auto angle = m_rotation * 2 * M_PI / 360.0;
|
||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, value * std::cos(angle), true, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value * std::sin(angle), true, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, value * std::cos(angle), m_adjustChaperone, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value * std::sin(angle), m_adjustChaperone, false);
|
||||
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
|
||||
}
|
||||
m_offsetX += value;
|
||||
emit offsetXChanged(m_offsetX);
|
||||
if (notify) {
|
||||
emit offsetXChanged(m_offsetX);
|
||||
}
|
||||
}
|
||||
|
||||
void MoveCenterTabController::modOffsetY(float value) {
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, value);
|
||||
void MoveCenterTabController::modOffsetY(float value, bool notify) {
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, value, m_adjustChaperone);
|
||||
m_offsetY += value;
|
||||
emit offsetYChanged(m_offsetY);
|
||||
if (notify) {
|
||||
emit offsetYChanged(m_offsetY);
|
||||
}
|
||||
}
|
||||
|
||||
void MoveCenterTabController::modOffsetZ(float value) {
|
||||
void MoveCenterTabController::modOffsetZ(float value, bool notify) {
|
||||
if (m_rotation == 0) {
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value, m_adjustChaperone);
|
||||
} else {
|
||||
auto angle = m_rotation * 2 * M_PI / 360.0;
|
||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value * std::cos(angle), true, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, -value * std::sin(angle), true, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, value * std::cos(angle), m_adjustChaperone, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, -value * std::sin(angle), m_adjustChaperone, false);
|
||||
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
|
||||
}
|
||||
m_offsetZ += value;
|
||||
emit offsetZChanged(m_offsetZ);
|
||||
if (notify) {
|
||||
emit offsetZChanged(m_offsetZ);
|
||||
}
|
||||
}
|
||||
|
||||
void MoveCenterTabController::reset() {
|
||||
vr::VRChaperoneSetup()->RevertWorkingCopy();
|
||||
parent->RotateUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, -m_rotation * 2 * M_PI / 360.0);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, -m_offsetX, true, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, -m_offsetY, true, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, -m_offsetZ, true, false);
|
||||
parent->RotateUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, -m_rotation * 2 * M_PI / 360.0, m_adjustChaperone, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 0, -m_offsetX, m_adjustChaperone, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 1, -m_offsetY, m_adjustChaperone, false);
|
||||
parent->AddOffsetToUniverseCenter((vr::TrackingUniverseOrigin)m_trackingUniverse, 2, -m_offsetZ, m_adjustChaperone, false);
|
||||
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
|
||||
m_offsetX = 0.0f;
|
||||
m_offsetY = 0.0f;
|
||||
|
||||
@@ -19,6 +19,7 @@ class MoveCenterTabController : public QObject {
|
||||
Q_PROPERTY(float offsetY READ offsetY WRITE setOffsetY NOTIFY offsetYChanged)
|
||||
Q_PROPERTY(float offsetZ READ offsetZ WRITE setOffsetZ NOTIFY offsetZChanged)
|
||||
Q_PROPERTY(int rotation READ rotation WRITE setRotation NOTIFY rotationChanged)
|
||||
Q_PROPERTY(bool adjustChaperone READ adjustChaperone WRITE setAdjustChaperone NOTIFY adjustChaperoneChanged)
|
||||
|
||||
private:
|
||||
OverlayController* parent;
|
||||
@@ -29,6 +30,7 @@ private:
|
||||
float m_offsetY = 0.0f;
|
||||
float m_offsetZ = 0.0f;
|
||||
int m_rotation = 0;
|
||||
bool m_adjustChaperone = true;
|
||||
|
||||
unsigned settingsUpdateCounter = 0;
|
||||
|
||||
@@ -42,6 +44,7 @@ public:
|
||||
float offsetY() const;
|
||||
float offsetZ() const;
|
||||
int rotation() const;
|
||||
bool adjustChaperone() const;
|
||||
|
||||
public slots:
|
||||
int trackingUniverse() const;
|
||||
@@ -53,9 +56,11 @@ public slots:
|
||||
|
||||
void setRotation(int value, bool notify = true);
|
||||
|
||||
void modOffsetX(float value);
|
||||
void modOffsetY(float value);
|
||||
void modOffsetZ(float value);
|
||||
void setAdjustChaperone(bool value, bool notify = true);
|
||||
|
||||
void modOffsetX(float value, bool notify = true);
|
||||
void modOffsetY(float value, bool notify = true);
|
||||
void modOffsetZ(float value, bool notify = true);
|
||||
void reset();
|
||||
|
||||
signals:
|
||||
@@ -64,6 +69,7 @@ signals:
|
||||
void offsetYChanged(float value);
|
||||
void offsetZChanged(float value);
|
||||
void rotationChanged(int value);
|
||||
void adjustChaperoneChanged(bool value);
|
||||
};
|
||||
|
||||
} // namespace advsettings
|
||||
|
||||
Reference in New Issue
Block a user