mirror of
https://github.com/overte-org/overte.git
synced 2025-04-14 10:47:09 +02:00
actually enter and leave vr mode
This commit is contained in:
parent
fa36a04a94
commit
884d8713ee
2 changed files with 42 additions and 4 deletions
|
@ -83,8 +83,8 @@ JNIEXPORT void Java_io_highfidelity_gvrinterface_InterfaceActivity_handleHifiURL
|
||||||
void GVRInterface::idle() {
|
void GVRInterface::idle() {
|
||||||
#if defined(ANDROID) && defined(HAVE_LIBOVR)
|
#if defined(ANDROID) && defined(HAVE_LIBOVR)
|
||||||
if (!_inVRMode && ovr_IsHeadsetDocked()) {
|
if (!_inVRMode && ovr_IsHeadsetDocked()) {
|
||||||
qDebug() << "The headset just got docked - assume we are in VR mode.";
|
qDebug() << "The headset just got docked - enter VR mode.";
|
||||||
_inVRMode = true;
|
enterVRMode();
|
||||||
} else if (_inVRMode) {
|
} else if (_inVRMode) {
|
||||||
|
|
||||||
if (ovr_IsHeadsetDocked()) {
|
if (ovr_IsHeadsetDocked()) {
|
||||||
|
@ -109,8 +109,9 @@ void GVRInterface::idle() {
|
||||||
<< ovrOrientation.x << ovrOrientation.y << ovrOrientation.z << ovrOrientation.w;
|
<< ovrOrientation.x << ovrOrientation.y << ovrOrientation.z << ovrOrientation.w;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
qDebug() << "The headset was undocked - assume we are no longer in VR mode.";
|
qDebug() << "The headset was undocked - leaving VR mode.";
|
||||||
_inVRMode = false;
|
|
||||||
|
leaveVRMode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -128,3 +129,36 @@ void GVRInterface::handleApplicationStateChange(Qt::ApplicationState state) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GVRInterface::enterVRMode() {
|
||||||
|
#if defined(ANDROID) && defined(HAVE_LIBOVR)
|
||||||
|
// Default vrModeParms
|
||||||
|
ovrModeParms vrModeParms;
|
||||||
|
vrModeParms.AsynchronousTimeWarp = true;
|
||||||
|
vrModeParms.AllowPowerSave = true;
|
||||||
|
vrModeParms.DistortionFileName = NULL;
|
||||||
|
vrModeParms.EnableImageServer = false;
|
||||||
|
vrModeParms.CpuLevel = 2;
|
||||||
|
vrModeParms.GpuLevel = 2;
|
||||||
|
vrModeParms.GameThreadTid = 0;
|
||||||
|
|
||||||
|
QAndroidJniEnvironment jniEnv;
|
||||||
|
|
||||||
|
QPlatformNativeInterface* interface = QApplication::platformNativeInterface();
|
||||||
|
jobject activity = (jobject) interface->nativeResourceForIntegration("QtActivity");
|
||||||
|
|
||||||
|
vrModeParms.ActivityObject = activity;
|
||||||
|
|
||||||
|
ovrHmdInfo hmdInfo;
|
||||||
|
_ovr = ovr_EnterVrMode(vrModeParms, &hmdInfo);
|
||||||
|
|
||||||
|
_inVRMode = true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void GVRInterface::leaveVRMode() {
|
||||||
|
#if defined(ANDROID) && defined(HAVE_LIBOVR)
|
||||||
|
ovr_LeaveVrMode(_ovr);
|
||||||
|
_inVRMode = false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
|
@ -37,6 +37,10 @@ private slots:
|
||||||
void handleApplicationStateChange(Qt::ApplicationState state);
|
void handleApplicationStateChange(Qt::ApplicationState state);
|
||||||
void idle();
|
void idle();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
void enterVRMode();
|
||||||
|
void leaveVRMode();
|
||||||
|
|
||||||
RenderingClient* _client;
|
RenderingClient* _client;
|
||||||
bool _inVRMode;
|
bool _inVRMode;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue