diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp
index bb29bfb244..5b93636e93 100644
--- a/interface/src/Application.cpp
+++ b/interface/src/Application.cpp
@@ -1494,9 +1494,12 @@ void Application::setEnableVRMode(bool enableVRMode) {
OculusManager::disconnect();
OculusManager::connect();
}
+ int oculusMaxFPS = Menu::getInstance()->getOculusUIMaxFPS();
+ setRenderTargetFramerate(oculusMaxFPS);
OculusManager::recalibrate();
} else {
OculusManager::abandonCalibration();
+ setRenderTargetFramerate(0);
}
resizeGL(_glWidget->getDeviceWidth(), _glWidget->getDeviceHeight());
diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp
index 6538aee644..274afd4bca 100644
--- a/interface/src/Menu.cpp
+++ b/interface/src/Menu.cpp
@@ -105,6 +105,7 @@ Menu::Menu() :
_maxVoxels(DEFAULT_MAX_VOXELS_PER_SYSTEM),
_voxelSizeScale(DEFAULT_OCTREE_SIZE_SCALE),
_oculusUIAngularSize(DEFAULT_OCULUS_UI_ANGULAR_SIZE),
+ _oculusUIMaxFPS(DEFAULT_OCULUS_UI_MAX_FPS),
_sixenseReticleMoveSpeed(DEFAULT_SIXENSE_RETICLE_MOVE_SPEED),
_invertSixenseButtons(DEFAULT_INVERT_SIXENSE_MOUSE_BUTTONS),
_automaticAvatarLOD(true),
@@ -782,6 +783,8 @@ void Menu::loadSettings(QSettings* settings) {
settings->endGroup();
_walletPrivateKey = settings->value("privateKey").toByteArray();
+
+ _oculusUIMaxFPS = loadSetting(settings, "oculusUIMaxFPS", 0.0f);
scanMenuBar(&loadAction, settings);
Application::getInstance()->getAvatar()->loadData(settings);
@@ -843,6 +846,9 @@ void Menu::saveSettings(QSettings* settings) {
settings->setValue("viewFrustumOffsetUp", _viewFrustumOffset.up);
settings->endGroup();
settings->setValue("privateKey", _walletPrivateKey);
+
+ // Oculus Rift settings
+ settings->setValue("oculusUIMaxFPS", _oculusUIMaxFPS);
scanMenuBar(&saveAction, settings);
Application::getInstance()->getAvatar()->saveData(settings);
diff --git a/interface/src/Menu.h b/interface/src/Menu.h
index 3c96fd0dcd..abcbfb51ad 100644
--- a/interface/src/Menu.h
+++ b/interface/src/Menu.h
@@ -100,6 +100,8 @@ public:
void setRealWorldFieldOfView(float realWorldFieldOfView) { _realWorldFieldOfView = realWorldFieldOfView; bumpSettings(); }
float getOculusUIAngularSize() const { return _oculusUIAngularSize; }
void setOculusUIAngularSize(float oculusUIAngularSize) { _oculusUIAngularSize = oculusUIAngularSize; bumpSettings(); }
+ int getOculusUIMaxFPS() const { return _oculusUIMaxFPS; }
+ void setOculusUIMaxFPS(int oculusUIMaxFPS) { _oculusUIMaxFPS = oculusUIMaxFPS; bumpSettings(); }
float getSixenseReticleMoveSpeed() const { return _sixenseReticleMoveSpeed; }
void setSixenseReticleMoveSpeed(float sixenseReticleMoveSpeed) { _sixenseReticleMoveSpeed = sixenseReticleMoveSpeed; bumpSettings(); }
bool getInvertSixenseButtons() const { return _invertSixenseButtons; }
@@ -292,6 +294,7 @@ private:
int _maxVoxels;
float _voxelSizeScale;
float _oculusUIAngularSize;
+ int _oculusUIMaxFPS;
float _sixenseReticleMoveSpeed;
bool _invertSixenseButtons;
bool _automaticAvatarLOD;
diff --git a/interface/src/devices/OculusManager.h b/interface/src/devices/OculusManager.h
index 20e43d572c..94521dc927 100644
--- a/interface/src/devices/OculusManager.h
+++ b/interface/src/devices/OculusManager.h
@@ -21,6 +21,7 @@
#include "ui/overlays/Text3DOverlay.h"
const float DEFAULT_OCULUS_UI_ANGULAR_SIZE = 72.0f;
+const int DEFAULT_OCULUS_UI_MAX_FPS = 75;
class Camera;
class PalmData;
diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp
index 61cc9718b3..42256bc498 100644
--- a/interface/src/ui/PreferencesDialog.cpp
+++ b/interface/src/ui/PreferencesDialog.cpp
@@ -147,6 +147,8 @@ void PreferencesDialog::loadPreferences() {
ui.maxVoxelsPPSSpin->setValue(menuInstance->getMaxVoxelPacketsPerSecond());
ui.oculusUIAngularSizeSpin->setValue(menuInstance->getOculusUIAngularSize());
+
+ ui.oculusUIMaxFPSSpin->setValue(menuInstance->getOculusUIMaxFPS());
ui.sixenseReticleMoveSpeedSpin->setValue(menuInstance->getSixenseReticleMoveSpeed());
@@ -229,6 +231,8 @@ void PreferencesDialog::savePreferences() {
Menu::getInstance()->setMaxVoxelPacketsPerSecond(ui.maxVoxelsPPSSpin->value());
Menu::getInstance()->setOculusUIAngularSize(ui.oculusUIAngularSizeSpin->value());
+
+ Menu::getInstance()->setOculusUIMaxFPS(ui.oculusUIMaxFPSSpin->value());
Menu::getInstance()->setSixenseReticleMoveSpeed(ui.sixenseReticleMoveSpeedSpin->value());
diff --git a/interface/ui/preferencesDialog.ui b/interface/ui/preferencesDialog.ui
index 0108437c1f..2dda1a24b1 100644
--- a/interface/ui/preferencesDialog.ui
+++ b/interface/ui/preferencesDialog.ui
@@ -61,7 +61,7 @@
0
0
500
- 1386
+ 1459
@@ -1772,24 +1772,24 @@
-
-
-
- Arial
-
-
-
- Qt::LeftToRight
-
-
-
-
-
- localhost
-
-
+
+
+ Arial
+
+
+
+ Qt::LeftToRight
+
+
+
+
+
+ localhost
+
+
-
+
-
@@ -2084,6 +2084,85 @@
+ -
+
+
+ 0
+
+
+ 7
+
+
+ 0
+
+
+ 7
+
+
-
+
+
+
+ Arial
+
+
+
+ Oculus Rift FPS
+
+
+ 0
+
+
+ maxVoxelsSpin
+
+
+
+ -
+
+
+
+ Arial
+
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 100
+ 0
+
+
+
+
+ Arial
+
+
+
+ 30
+
+
+ 95
+
+
+ 1
+
+
+ 75
+
+
+
+
+
-