mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 18:26:26 +02:00
Working on OVR SDK 0.6
This commit is contained in:
parent
5a52a389be
commit
5faa53d7e9
4 changed files with 3 additions and 73 deletions
|
@ -2106,13 +2106,6 @@ void Application::init() {
|
||||||
|
|
||||||
_mirrorCamera.setMode(CAMERA_MODE_MIRROR);
|
_mirrorCamera.setMode(CAMERA_MODE_MIRROR);
|
||||||
|
|
||||||
//OculusManager::connect();
|
|
||||||
//if (OculusManager::isConnected()) {
|
|
||||||
// QMetaObject::invokeMethod(Menu::getInstance()->getActionForOption(MenuOption::Fullscreen),
|
|
||||||
// "trigger",
|
|
||||||
// Qt::QueuedConnection);
|
|
||||||
//}
|
|
||||||
|
|
||||||
TV3DManager::connect();
|
TV3DManager::connect();
|
||||||
if (TV3DManager::isConnected()) {
|
if (TV3DManager::isConnected()) {
|
||||||
QMetaObject::invokeMethod(Menu::getInstance()->getActionForOption(MenuOption::Fullscreen),
|
QMetaObject::invokeMethod(Menu::getInstance()->getActionForOption(MenuOption::Fullscreen),
|
||||||
|
|
|
@ -554,10 +554,6 @@ void OculusManager::display(QGLWidget * glCanvas, const glm::quat &bodyOrientati
|
||||||
oldFrameIndex = _frameIndex;
|
oldFrameIndex = _frameIndex;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (_outputWindow->visibility() != QWindow::FullScreen) {
|
|
||||||
// _outputWindow->showFullScreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef Q_OS_WIN
|
#ifndef Q_OS_WIN
|
||||||
// FIXME: we need a better way of responding to the HSW. In particular
|
// FIXME: we need a better way of responding to the HSW. In particular
|
||||||
// we need to ensure that it's only displayed once per session, rather than
|
// we need to ensure that it's only displayed once per session, rather than
|
||||||
|
|
|
@ -56,8 +56,6 @@ HMDToolsDialog::HMDToolsDialog(QWidget* parent) :
|
||||||
|
|
||||||
this->QDialog::setLayout(form);
|
this->QDialog::setLayout(form);
|
||||||
|
|
||||||
_wasMoved = false;
|
|
||||||
_previousRect = Application::getInstance()->getWindow()->rect();
|
|
||||||
Application::getInstance()->getWindow()->activateWindow();
|
Application::getInstance()->getWindow()->activateWindow();
|
||||||
|
|
||||||
// watch for our application window moving screens. If it does we want to update our screen details
|
// watch for our application window moving screens. If it does we want to update our screen details
|
||||||
|
@ -136,24 +134,6 @@ void HMDToolsDialog::enterHDMMode() {
|
||||||
if (!_inHDMMode) {
|
if (!_inHDMMode) {
|
||||||
_switchModeButton->setText("Leave HMD Mode");
|
_switchModeButton->setText("Leave HMD Mode");
|
||||||
_debugDetails->setText(getDebugDetails());
|
_debugDetails->setText(getDebugDetails());
|
||||||
|
|
||||||
_hmdScreenNumber = OculusManager::getHMDScreen();
|
|
||||||
|
|
||||||
if (_hmdScreenNumber >= 0) {
|
|
||||||
QWindow* mainWindow = Application::getInstance()->getWindow()->windowHandle();
|
|
||||||
_hmdScreen = QGuiApplication::screens()[_hmdScreenNumber];
|
|
||||||
|
|
||||||
_previousRect = Application::getInstance()->getWindow()->rect();
|
|
||||||
_previousRect = QRect(mainWindow->mapToGlobal(_previousRect.topLeft()),
|
|
||||||
mainWindow->mapToGlobal(_previousRect.bottomRight()));
|
|
||||||
_previousScreen = mainWindow->screen();
|
|
||||||
QRect rect = QApplication::desktop()->screenGeometry(_hmdScreenNumber);
|
|
||||||
mainWindow->setScreen(_hmdScreen);
|
|
||||||
mainWindow->setGeometry(rect);
|
|
||||||
|
|
||||||
_wasMoved = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// if we're on a single screen setup, then hide our tools window when entering HMD mode
|
// if we're on a single screen setup, then hide our tools window when entering HMD mode
|
||||||
if (QApplication::desktop()->screenCount() == 1) {
|
if (QApplication::desktop()->screenCount() == 1) {
|
||||||
|
@ -161,58 +141,21 @@ void HMDToolsDialog::enterHDMMode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Application::getInstance()->setEnableVRMode(true);
|
Application::getInstance()->setEnableVRMode(true);
|
||||||
|
|
||||||
const int SLIGHT_DELAY = 500;
|
|
||||||
// If we go to fullscreen immediately, it ends up on the primary monitor,
|
|
||||||
// even though we've already moved the window. By adding this delay, the
|
|
||||||
// fullscreen target screen ends up correct.
|
|
||||||
QTimer::singleShot(SLIGHT_DELAY, this, [&]{
|
|
||||||
Application::getInstance()->setFullscreen(true);
|
|
||||||
activateWindowAfterEnterMode();
|
|
||||||
});
|
|
||||||
|
|
||||||
_inHDMMode = true;
|
_inHDMMode = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HMDToolsDialog::activateWindowAfterEnterMode() {
|
|
||||||
Application::getInstance()->getWindow()->activateWindow();
|
|
||||||
|
|
||||||
// center the cursor on the main application window
|
|
||||||
centerCursorOnWidget(Application::getInstance()->getWindow());
|
|
||||||
}
|
|
||||||
|
|
||||||
void HMDToolsDialog::leaveHDMMode() {
|
void HMDToolsDialog::leaveHDMMode() {
|
||||||
if (_inHDMMode) {
|
if (_inHDMMode) {
|
||||||
_switchModeButton->setText("Enter HMD Mode");
|
_switchModeButton->setText("Enter HMD Mode");
|
||||||
_debugDetails->setText(getDebugDetails());
|
_debugDetails->setText(getDebugDetails());
|
||||||
|
|
||||||
Application::getInstance()->setEnableVRMode(false);
|
Application::getInstance()->setEnableVRMode(false);
|
||||||
Application::getInstance()->setFullscreen(false);
|
|
||||||
Application::getInstance()->getWindow()->activateWindow();
|
Application::getInstance()->getWindow()->activateWindow();
|
||||||
|
|
||||||
if (_wasMoved) {
|
|
||||||
QWindow* mainWindow = Application::getInstance()->getWindow()->windowHandle();
|
|
||||||
mainWindow->setScreen(_previousScreen);
|
|
||||||
mainWindow->setGeometry(_previousRect);
|
|
||||||
|
|
||||||
const int SLIGHT_DELAY = 1500;
|
|
||||||
QTimer::singleShot(SLIGHT_DELAY, this, SLOT(moveWindowAfterLeaveMode()));
|
|
||||||
}
|
|
||||||
_wasMoved = false;
|
|
||||||
_inHDMMode = false;
|
_inHDMMode = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HMDToolsDialog::moveWindowAfterLeaveMode() {
|
|
||||||
QWindow* mainWindow = Application::getInstance()->getWindow()->windowHandle();
|
|
||||||
mainWindow->setScreen(_previousScreen);
|
|
||||||
mainWindow->setGeometry(_previousRect);
|
|
||||||
Application::getInstance()->getWindow()->activateWindow();
|
|
||||||
Application::getInstance()->resetSensors();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void HMDToolsDialog::reject() {
|
void HMDToolsDialog::reject() {
|
||||||
// Just regularly close upon ESC
|
// Just regularly close upon ESC
|
||||||
close();
|
close();
|
||||||
|
@ -244,6 +187,8 @@ void HMDToolsDialog::hideEvent(QHideEvent* event) {
|
||||||
|
|
||||||
void HMDToolsDialog::aboutToQuit() {
|
void HMDToolsDialog::aboutToQuit() {
|
||||||
if (_inHDMMode) {
|
if (_inHDMMode) {
|
||||||
|
// FIXME this is ineffective because it doesn't trigger the menu to
|
||||||
|
// save the fact that VR Mode is not checked.
|
||||||
leaveHDMMode();
|
leaveHDMMode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,6 @@ signals:
|
||||||
public slots:
|
public slots:
|
||||||
void reject();
|
void reject();
|
||||||
void switchModeClicked(bool checked);
|
void switchModeClicked(bool checked);
|
||||||
void activateWindowAfterEnterMode();
|
|
||||||
void moveWindowAfterLeaveMode();
|
|
||||||
void applicationWindowScreenChanged(QScreen* screen);
|
void applicationWindowScreenChanged(QScreen* screen);
|
||||||
void aboutToQuit();
|
void aboutToQuit();
|
||||||
void screenCountChanged(int newCount);
|
void screenCountChanged(int newCount);
|
||||||
|
@ -51,8 +49,6 @@ private:
|
||||||
void enterHDMMode();
|
void enterHDMMode();
|
||||||
void leaveHDMMode();
|
void leaveHDMMode();
|
||||||
|
|
||||||
bool _wasMoved;
|
|
||||||
QRect _previousRect;
|
|
||||||
QScreen* _previousScreen;
|
QScreen* _previousScreen;
|
||||||
QScreen* _hmdScreen;
|
QScreen* _hmdScreen;
|
||||||
int _hmdScreenNumber;
|
int _hmdScreenNumber;
|
||||||
|
|
Loading…
Reference in a new issue