Added missing platform dlls.

Refractoring and bugfixes.
Added SteamVR tab: Supersampling and reprojection settings and restart
button.
Added Statistics tab: rotation counter, performance statistics and others.
Updated Move Playspace tab: Rotation and Seated mode support.
This commit is contained in:
2016-09-16 21:22:29 +02:00
parent 2f9473b78f
commit b8cac9fb69
16 changed files with 1027 additions and 0 deletions
@@ -0,0 +1,202 @@
#include "MoveCenterTabController.h"
#include "../overlaycontroller.h"
#include "../overlaywidget.h"
#include "ui_overlaywidget.h"
// application namespace
namespace advsettings {
void MoveCenterTabController::init(OverlayController * parent, OverlayWidget * widget) {
this->parent = parent;
this->widget = widget;
trackingUniverse = vr::VRCompositor()->GetTrackingSpace();
xOffset = 0.0f;
yOffset = 0.0f;
zOffset = 0.0f;
widget->ui->MoveCenterStandingSwitch->setChecked(true);
widget->ui->MoveCenterStandingSwitch->setEnabled(false);
widget->ui->MoveCenterSeatedSwitch->setChecked(false);
widget->ui->MoveCenterSeatedSwitch->setEnabled(true);
connect(widget->ui->XMinusButton, SIGNAL(clicked()), this, SLOT(XMinusClicked()));
connect(widget->ui->XPlusButton, SIGNAL(clicked()), this, SLOT(XPlusClicked()));
connect(widget->ui->YMinusButton, SIGNAL(clicked()), this, SLOT(YMinusClicked()));
connect(widget->ui->YPlusButton, SIGNAL(clicked()), this, SLOT(YPlusClicked()));
connect(widget->ui->ZMinusButton, SIGNAL(clicked()), this, SLOT(ZMinusClicked()));
connect(widget->ui->ZPlusButton, SIGNAL(clicked()), this, SLOT(ZPlusClicked()));
connect(widget->ui->RotateCenterSlider, SIGNAL(valueChanged(int)), this, SLOT(RotateSliderChanged(int)));
connect(widget->ui->RotateCenterButton, SIGNAL(clicked()), this, SLOT(RotateApplyClicked()));
connect(widget->ui->MoveCenterResetButton, SIGNAL(clicked()), this, SLOT(MoveCenterResetClicked()));
/*connect(widget->ui->MoveCenterStandingSwitch, SIGNAL(toggled(bool)), this, SLOT(StandingToggled(bool)));
connect(widget->ui->MoveCenterSeatedSwitch, SIGNAL(toggled(bool)), this, SLOT(SeatedToggled(bool)));*/
}
void MoveCenterTabController::UpdateTab() {
if (widget) {
widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset));
widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset));
widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset));
widget->ui->MoveCenterStandingSwitch->blockSignals(true);
widget->ui->MoveCenterSeatedSwitch->blockSignals(true);
widget->ui->RotateCenterSlider->blockSignals(true);
if (trackingUniverse == vr::TrackingUniverseStanding) {
widget->ui->MoveCenterStandingSwitch->setChecked(true);
widget->ui->MoveCenterSeatedSwitch->setChecked(false);
widget->ui->MoveCenterStandingSwitch->setEnabled(false);
widget->ui->MoveCenterSeatedSwitch->setEnabled(false);
widget->ui->RotateCenterButton->setEnabled(true);
widget->ui->RotateCenterSlider->setEnabled(true);
widget->ui->RotateCenterLabel->setText(QString::asprintf("%i", rotation));
} else {
widget->ui->MoveCenterStandingSwitch->setChecked(false);
widget->ui->MoveCenterSeatedSwitch->setChecked(true);
widget->ui->MoveCenterStandingSwitch->setEnabled(false);
widget->ui->MoveCenterSeatedSwitch->setEnabled(false);
widget->ui->RotateCenterButton->setEnabled(false);
widget->ui->RotateCenterSlider->setEnabled(false);
widget->ui->RotateCenterLabel->setText("-");
}
widget->ui->RotateCenterSlider->setValue(rotation);
widget->ui->MoveCenterStandingSwitch->blockSignals(false);
widget->ui->MoveCenterSeatedSwitch->blockSignals(false);
widget->ui->RotateCenterSlider->blockSignals(false);
}
}
void MoveCenterTabController::XMinusClicked() {
if (widget) {
if (rotation == 0) {
parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -0.5f);
} else {
auto angle = rotation * 2 * M_PI / 360.0;
vr::VRChaperoneSetup()->RevertWorkingCopy();
parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -0.5f * std::cos(angle), true, false);
parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -0.5f * std::sin(angle), true, false);
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
}
xOffset -= 0.5f;
widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset));
}
}
void MoveCenterTabController::XPlusClicked() {
if (widget) {
if (rotation == 0) {
parent->AddOffsetToUniverseCenter(trackingUniverse, 0, 0.5f);
} else {
auto angle = rotation * 2 * M_PI / 360.0;
vr::VRChaperoneSetup()->RevertWorkingCopy();
parent->AddOffsetToUniverseCenter(trackingUniverse, 0, 0.5f * std::cos(angle), true, false);
parent->AddOffsetToUniverseCenter(trackingUniverse, 2, 0.5f * std::sin(angle), true, false);
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
}
xOffset += 0.5f;
widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset));
}
}
void MoveCenterTabController::YMinusClicked() {
if (widget) {
parent->AddOffsetToUniverseCenter(trackingUniverse, 1, -0.5f);
yOffset -= 0.5f;
widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset));
}
}
void MoveCenterTabController::YPlusClicked() {
if (widget) {
parent->AddOffsetToUniverseCenter(trackingUniverse, 1, 0.5f);
yOffset += 0.5f;
widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset));
}
}
void MoveCenterTabController::ZMinusClicked() {
if (widget) {
if (rotation == 0) {
parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -0.5f);
} else {
auto angle = rotation * 2 * M_PI / 360.0;
vr::VRChaperoneSetup()->RevertWorkingCopy();
parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -0.5f * std::cos(angle), true, false);
parent->AddOffsetToUniverseCenter(trackingUniverse, 0, 0.5f * std::sin(angle), true, false);
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
}
zOffset -= 0.5f;
widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset));
}
}
void MoveCenterTabController::ZPlusClicked() {
if (widget) {
if (rotation == 0) {
parent->AddOffsetToUniverseCenter(trackingUniverse, 2, 0.5f);
} else {
auto angle = rotation * 2 * M_PI / 360.0;
vr::VRChaperoneSetup()->RevertWorkingCopy();
parent->AddOffsetToUniverseCenter(trackingUniverse, 2, 0.5f * std::cos(angle), true, false);
parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -0.5f * std::sin(angle), true, false);
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
}
zOffset += 0.5f;
widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset));
}
}
void MoveCenterTabController::RotateApplyClicked() {
int value = widget->ui->RotateCenterSlider->value();
float angle = (value - rotation) * 2 * M_PI / 360.0;
parent->RotateUniverseCenter(trackingUniverse, angle);
rotation = value;
}
void MoveCenterTabController::RotateSliderChanged(int value) {
widget->ui->RotateCenterLabel->setText(QString::asprintf("%i", value));
}
void MoveCenterTabController::MoveCenterResetClicked() {
if (widget) {
vr::VRChaperoneSetup()->RevertWorkingCopy();
parent->RotateUniverseCenter(trackingUniverse, -rotation * 2 * M_PI / 360.0);
parent->AddOffsetToUniverseCenter(trackingUniverse, 0, -xOffset, true, false);
parent->AddOffsetToUniverseCenter(trackingUniverse, 1, -yOffset, true, false);
parent->AddOffsetToUniverseCenter(trackingUniverse, 2, -zOffset, true, false);
vr::VRChaperoneSetup()->CommitWorkingCopy(vr::EChaperoneConfigFile_Live);
xOffset = 0.0f;
yOffset = 0.0f;
zOffset = 0.0f;
rotation = 0;
widget->ui->XOffsetLabel->setText(QString::asprintf("%.1f", xOffset));
widget->ui->YOffsetLabel->setText(QString::asprintf("%.1f", yOffset));
widget->ui->ZOffsetLabel->setText(QString::asprintf("%.1f", zOffset));
widget->ui->RotateCenterSlider->setValue(rotation);
if (trackingUniverse == vr::TrackingUniverseStanding) {
widget->ui->RotateCenterLabel->setText(QString::asprintf("%i", rotation));
} else {
widget->ui->RotateCenterLabel->setText("-");
}
}
}
void MoveCenterTabController::StandingToggled(bool) {
MoveCenterResetClicked();
trackingUniverse = vr::TrackingUniverseStanding;
UpdateTab();
}
void MoveCenterTabController::SeatedToggled(bool) {
MoveCenterResetClicked();
trackingUniverse = vr::TrackingUniverseSeated;
UpdateTab();
}
void MoveCenterTabController::eventLoopTick(vr::ETrackingUniverseOrigin universe) {
if (trackingUniverse != universe) {
if (universe == vr::TrackingUniverseStanding) {
StandingToggled(true);
} else if (universe == vr::TrackingUniverseSeated) {
SeatedToggled(true);
}
}
}
} // namespace advconfig