From 17a5e6a700cd0cbd7046949040cd21650ffcb610 Mon Sep 17 00:00:00 2001 From: Geenz Date: Mon, 27 May 2013 12:37:42 -0400 Subject: [PATCH 01/10] First round of settings serialization. Setup an API to load and save different settings to the avatar data file. Initial serialized settings: Gyro look Mouse look Transmitter drives Voxel rendering Voxel textures Star rendering Atmosphere rendering Avatar rendering Oculus rift mode Render stats Frame stats Look at vectors Logging Frustum debugging View frustum offset Camera frustum --- interface/src/Application.cpp | 269 +++++++++++++++++++++++++++++++++- interface/src/Application.h | 16 ++ interface/src/Avatar.cpp | 33 ++--- 3 files changed, 292 insertions(+), 26 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index a66b56b809..44c65e2613 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -255,8 +255,6 @@ void Application::initializeGL() { printLog("Network receive thread created.\n"); } - _myAvatar.readAvatarDataFromFile(); - // call terminate before exiting connect(this, SIGNAL(aboutToQuit()), SLOT(terminate())); @@ -270,6 +268,8 @@ void Application::initializeGL() { connect(idleTimer, SIGNAL(timeout()), SLOT(idle())); idleTimer->start(0); + readSettings(); + if (_justStarted) { float startupTime = (usecTimestampNow() - usecTimestamp(&_applicationStartupTime))/1000000.0; _justStarted = false; @@ -775,7 +775,176 @@ void Application::wheelEvent(QWheelEvent* event) { decreaseVoxelSize(); } } + +const char AVATAR_DATA_FILENAME[] = "avatar.ifd"; + +bool Application::openSettingsFile(const char *mode) +{ + _settingsFile = fopen(AVATAR_DATA_FILENAME, mode); + if (_settingsFile) + { + return true; + } else { + return false; + } +} + +void Application::closeSettingsFile() +{ + if (_settingsFile) + { + fclose(_settingsFile); + _settingsFile = NULL; + } +} + +bool Application::getSettingBool(const char *settingName, bool &boolSetting, bool defaultSetting) +{ + if (_settingsFile) + { + int readPosition; + + char setting[128]; + char vals[] = "%d"; + sprintf(setting, "\n%s=%s", settingName, vals); + + int res = fscanf(_settingsFile, setting, &readPosition); + + if (res != EOF) + { + if (readPosition == 1) + { + boolSetting = true; + } else if (readPosition == 0) { + boolSetting = false; + } + } else { + boolSetting = defaultSetting; + return false; + } + + } else { + boolSetting = defaultSetting; + + printLog("Call to getSetting function without _settingsFile being open! Forgot to call openSettingsFile perhaps?\n"); + + return false; + } + + return true; +} + +bool Application::getSettingFloat(const char *settingName, float &floatSetting, float defaultSetting) +{ + if (_settingsFile) + { + float readPosition; + + char setting[128]; + char vals[] = "%f"; + sprintf(setting, "\n%s=%s", settingName, vals); + + int res = fscanf(_settingsFile, setting, &readPosition); + + if (res != EOF) + { + if (!isnan(readPosition)) { + floatSetting = readPosition; + } else { + floatSetting = defaultSetting; + } + } else { + floatSetting = defaultSetting; + return false; + } + } else { + floatSetting = defaultSetting; + + printLog("Call to getSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); + + return false; + } + + return true; +} + +bool Application::getSettingVec3(const char *settingName, glm::vec3 &vecSetting, glm::vec3 defaultSetting) +{ + if (_settingsFile) + { + glm::vec3 readPosition; + + char setting[128]; + char vals[] = "%f,%f,%f"; + sprintf(setting, "\n%s=%s", settingName, vals); + + int res = fscanf(_settingsFile, setting, &readPosition.x, &readPosition.y, &readPosition.z); + + if (res != EOF) + { + if (!isnan(readPosition.x) && !isnan(readPosition.y) && !isnan(readPosition.z)) { + vecSetting = readPosition; + } else { + vecSetting = defaultSetting; + } + } else { + vecSetting = defaultSetting; + return false; + } + } else { + vecSetting = defaultSetting; + + printLog("Call to getSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); + + return false; + } + + return true; +} + +void Application::setSettingBool(const char *settingName, bool boolSetting) +{ + if (_settingsFile) + { + char setting[128]; + char vals[] = "%d"; + sprintf(setting, "\n%s=%s", settingName, vals); + printLog(setting, boolSetting); + fprintf(_settingsFile, setting, boolSetting); + } else { + printLog("Call to setSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); + } +} + +void Application::setSettingFloat(const char *settingName, float floatSetting) +{ + if (_settingsFile) + { + char setting[128]; + char vals[] = "%f"; + sprintf(setting, "\n%s=%s", settingName, vals); + printLog(setting, floatSetting); + fprintf(_settingsFile, setting, floatSetting); + } else { + printLog("Call to setSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); + } +} + +void Application::setSettingVec3(const char *settingName, glm::vec3 vecSetting) +{ + if (_settingsFile) + { + char setting[128]; + char vals[] = "%f,%f,%f"; + sprintf(setting, "\n%s=%s", settingName, vals); + printLog(setting, vecSetting.x, vecSetting.y, vecSetting.z); + fprintf(_settingsFile, setting, vecSetting.x, vecSetting.y, vecSetting.z); + } else { + printLog("Call to setSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); + } +} + // Every second, check the frame rates and other stuff void Application::timer() { gettimeofday(&_timerEnd, NULL); @@ -1008,7 +1177,7 @@ void Application::terminate() { // Close serial port // close(serial_fd); - _myAvatar.writeAvatarDataToFile(); + saveSettings(); if (_enableNetworkThread) { _stopNetworkReceiveThread = true; @@ -2157,3 +2326,97 @@ void* Application::networkReceive(void* args) { return NULL; } +void Application::saveSettings() +{ + // Handle any persistent settings saving here when we get a call to terminate. + // This should probably be moved to a map stored in memory at some point to cache settings. + openSettingsFile("wt"); + _myAvatar.writeAvatarDataToFile(); + + setSettingBool("_gyroLook", _gyroLook->isChecked()); + + setSettingBool("_mouseLook", _mouseLook->isChecked()); + + setSettingBool("_transmitterDrives", _transmitterDrives->isChecked()); + + setSettingBool("_renderVoxels", _renderVoxels->isChecked()); + + setSettingBool("_renderVoxelTextures", _renderVoxelTextures->isChecked()); + + setSettingBool("_renderStarsOn", _renderStarsOn->isChecked()); + + setSettingBool("_renderAtmosphereOn", _renderAtmosphereOn->isChecked()); + + setSettingBool("_renderAvatarsOn", _renderAvatarsOn->isChecked()); + + setSettingBool("_oculusOn", _oculusOn->isChecked()); + + setSettingBool("_renderStatsOn", _renderStatsOn->isChecked()); + + setSettingBool("_renderFrameTimerOn", _renderFrameTimerOn->isChecked()); + + setSettingBool("_renderLookatOn", _renderLookatOn->isChecked()); + + setSettingBool("_logOn", _logOn->isChecked()); + + setSettingBool("_frustumOn", _frustumOn->isChecked()); + + setSettingBool("_viewFrustumFromOffset", _viewFrustumFromOffset->isChecked()); + + closeSettingsFile(); +} + +void Application::readSettings() +{ + openSettingsFile("rt"); + _myAvatar.readAvatarDataFromFile(); + + bool settingState; + getSettingBool("_gyroLook", settingState, _gyroLook->isChecked()); + _gyroLook->setChecked(settingState); + + getSettingBool("_mouseLook", settingState, _mouseLook->isChecked()); + _mouseLook->setChecked(settingState); + + getSettingBool("_transmitterDrives", settingState, _transmitterDrives->isChecked()); + _transmitterDrives->setChecked(settingState); + + getSettingBool("_renderVoxels", settingState, _renderVoxels->isChecked()); + _renderVoxels->setChecked(settingState); + + getSettingBool("_renderVoxelTextures", settingState, _renderVoxelTextures->isChecked()); + _renderVoxelTextures->setChecked(settingState); + + getSettingBool("_renderStarsOn", settingState, _renderStarsOn->isChecked()); + _renderStarsOn->setChecked(settingState); + + getSettingBool("_renderAtmosphereOn", settingState, _renderAtmosphereOn->isChecked()); + _renderAtmosphereOn->setChecked(settingState); + + getSettingBool("_renderAvatarsOn", settingState, _renderAvatarsOn->isChecked()); + _renderAvatarsOn->setChecked(settingState); + + getSettingBool("_oculusOn", settingState, _oculusOn->isChecked()); + _oculusOn->setChecked(settingState); + + getSettingBool("_renderStatsOn", settingState, _renderStatsOn->isChecked()); + _renderStatsOn->setChecked(settingState); + + getSettingBool("_renderFrameTimerOn", settingState, _renderFrameTimerOn->isChecked()); + _renderFrameTimerOn->setChecked(settingState); + + getSettingBool("_renderLookatOn", settingState, _renderLookatOn->isChecked()); + _renderLookatOn->setChecked(settingState); + + getSettingBool("_logOn", settingState, _logOn->isChecked()); + _logOn->setChecked(settingState); + + getSettingBool("_frustumOn", settingState, _frustumOn->isChecked()); + _frustumOn->setChecked(settingState); + + getSettingBool("_viewFrustumFromOffset", settingState, _viewFrustumFromOffset->isChecked()); + _viewFrustumFromOffset->setChecked(settingState); + + closeSettingsFile(); +} + diff --git a/interface/src/Application.h b/interface/src/Application.h index 98a41e89c2..62df328425 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -64,6 +64,14 @@ public: Avatar* getAvatar() { return &_myAvatar; } VoxelSystem* getVoxels() { return &_voxels; } Environment* getEnvironment() { return &_environment; } + + bool getSettingBool(const char* settingName, bool &boolSetting, bool defaultSetting = false); + bool getSettingFloat(const char* settingName, float &floatSetting, float defaultSetting = 0.0f); + bool getSettingVec3(const char* settingName, glm::vec3 &vecSetting, glm::vec3 defaultSetting = glm::vec3(0, 0, 0)); + + void setSettingBool(const char* settingName, bool boolSetting); + void setSettingFloat(const char* settingName, float floatSetting); + void setSettingVec3(const char* settingName, glm::vec3 vecSetting); private slots: @@ -132,6 +140,12 @@ private: static void attachNewHeadToAgent(Agent *newAgent); static void* networkReceive(void* args); + bool openSettingsFile(const char* mode); + void closeSettingsFile(); + + void saveSettings(); + void readSettings(); + QMainWindow* _window; QGLWidget* _glWidget; @@ -248,6 +262,8 @@ private: int _packetsPerSecond; int _bytesPerSecond; int _bytesCount; + + FILE* _settingsFile; }; #endif /* defined(__interface__Application__) */ diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index 6d278e641b..e59998dfcf 100644 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -1203,36 +1203,23 @@ void Avatar::setHeadFromGyros(glm::vec3* eulerAngles, glm::vec3* angularVelocity } } -const char AVATAR_DATA_FILENAME[] = "avatar.ifd"; - void Avatar::writeAvatarDataToFile() { - // write the avatar position and yaw to a local file - FILE* avatarFile = fopen(AVATAR_DATA_FILENAME, "w"); - - if (avatarFile) { - fprintf(avatarFile, "%f,%f,%f %f", _position.x, _position.y, _position.z, _bodyYaw); - fclose(avatarFile); - } + Application::getInstance()->setSettingVec3("avatarPos", _position); + Application::getInstance()->setSettingFloat("avatarYaw", _bodyYaw); } void Avatar::readAvatarDataFromFile() { - FILE* avatarFile = fopen(AVATAR_DATA_FILENAME, "r"); + glm::vec3 readPosition; + float readYaw; - if (avatarFile) { - glm::vec3 readPosition; - float readYaw; - fscanf(avatarFile, "%f,%f,%f %f", &readPosition.x, &readPosition.y, &readPosition.z, &readYaw); - - // make sure these values are sane - if (!isnan(readPosition.x) && !isnan(readPosition.y) && !isnan(readPosition.z) && !isnan(readYaw)) { - _position = readPosition; - _bodyYaw = readYaw; - } - fclose(avatarFile); - } + Application::getInstance()->getSettingVec3("avatarPos", readPosition, glm::vec3(6.1f, 0, 1.4f)); + Application::getInstance()->getSettingFloat("avatarYaw", readYaw, -90.0f); + + _bodyYaw = readYaw; + _position = readPosition; } -// render a makeshift cone section that serves as a body part connecting joint spheres +// render a makeshift cone section that serves as a body part connecting joint spheres void Avatar::renderJointConnectingCone(glm::vec3 position1, glm::vec3 position2, float radius1, float radius2) { glBegin(GL_TRIANGLES); From 93eac0c0dcb871a41e38a6adf4c305d4192e78d0 Mon Sep 17 00:00:00 2001 From: Geenz Date: Mon, 27 May 2013 12:56:41 -0400 Subject: [PATCH 02/10] Setup various debug options. --- interface/src/Application.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 44c65e2613..ac0187a26f 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2363,6 +2363,14 @@ void Application::saveSettings() setSettingBool("_viewFrustumFromOffset", _viewFrustumFromOffset->isChecked()); + setSettingBool("wantsViewDeltaSending", _myAvatar.getWantDelta()); + + setSettingBool("wantsResIn", _myAvatar.getWantResIn()); + + setSettingBool("wantsMonochrome", _myAvatar.getWantColor()); + + setSettingBool("renderPipelineWarnings", _voxels.getRenderPipelineWarnings()); + closeSettingsFile(); } @@ -2417,6 +2425,18 @@ void Application::readSettings() getSettingBool("_viewFrustumFromOffset", settingState, _viewFrustumFromOffset->isChecked()); _viewFrustumFromOffset->setChecked(settingState); + getSettingBool("wantsResIn", settingState, false); + setWantsResIn(settingState); + + getSettingBool("wantsMonochrome", settingState, false); + setWantsMonochrome(settingState); + + getSettingBool("renderPipelineWarnings", settingState, false); + setRenderWarnings(settingState); + + getSettingBool("wantsViewDeltaSending", settingState, false); + setWantsDelta(settingState); + closeSettingsFile(); } From 94a07b92a7da6fe43651a2af6ed2bde2b88f0a65 Mon Sep 17 00:00:00 2001 From: Geenz Date: Mon, 27 May 2013 15:54:32 -0400 Subject: [PATCH 03/10] Documentation for #19308. --- interface/src/Application.h | 47 +++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.h b/interface/src/Application.h index 62df328425..3934ff1610 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -65,12 +65,55 @@ public: VoxelSystem* getVoxels() { return &_voxels; } Environment* getEnvironment() { return &_environment; } + /*! + @fn getSettingBool + @brief A function for getting boolean settings from the settings file. + @param settingName The desired setting to get the value for. + @param boolSetting The referenced variable where the setting will be stored. + @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to false. + */ bool getSettingBool(const char* settingName, bool &boolSetting, bool defaultSetting = false); - bool getSettingFloat(const char* settingName, float &floatSetting, float defaultSetting = 0.0f); - bool getSettingVec3(const char* settingName, glm::vec3 &vecSetting, glm::vec3 defaultSetting = glm::vec3(0, 0, 0)); + /*! + @fn getSettingFloat + @brief A function for getting float settings from the settings file. + @param settingName The desired setting to get the value for. + @param floatSetting The referenced variable where the setting will be stored. + @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to 0.0f. + */ + bool getSettingFloat(const char* settingName, float &floatSetting, float defaultSetting = 0.0f); + + /*! + @fn getSettingVec3 + @brief A function for getting boolean settings from the settings file. + @param settingName The desired setting to get the value for. + @param vecSetting The referenced variable where the setting will be stored. + @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to <0.0f, 0.0f, 0.0f> + */ + bool getSettingVec3(const char* settingName, glm::vec3 &vecSetting, glm::vec3 defaultSetting = glm::vec3(0.0f, 0.0f, 0.0f)); + + /*! + @fn setSettingBool + @brief A function for setting boolean setting values when saving the settings file. + @param settingName The desired setting to populate a value for. + @param boolSetting The value to set. + */ void setSettingBool(const char* settingName, bool boolSetting); + + /*! + @fn setSettingFloat + @brief A function for setting boolean setting values when saving the settings file. + @param settingName The desired setting to populate a value for. + @param floatSetting The value to set. + */ void setSettingFloat(const char* settingName, float floatSetting); + + /*! + @fn setSettingVec3 + @brief A function for setting boolean setting values when saving the settings file. + @param settingName The desired setting to populate a value for. + @param vecSetting The value to set. + */ void setSettingVec3(const char* settingName, glm::vec3 vecSetting); private slots: From 5efda079c93b9f9e27424b355b93cacea3b5aded Mon Sep 17 00:00:00 2001 From: Geenz Date: Mon, 27 May 2013 18:48:05 -0400 Subject: [PATCH 04/10] Store settings in an ordered map to allow for runtime getting and setting of settings. Read the setting file on startup, then write on shut down. --- interface/src/Application.cpp | 213 ++++++++++++++-------------------- interface/src/Application.h | 18 ++- 2 files changed, 102 insertions(+), 129 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index ac0187a26f..2049dc2e92 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -778,57 +778,93 @@ void Application::wheelEvent(QWheelEvent* event) { const char AVATAR_DATA_FILENAME[] = "avatar.ifd"; -bool Application::openSettingsFile(const char *mode) +void Application::readSettingsFile() { - _settingsFile = fopen(AVATAR_DATA_FILENAME, mode); + FILE* settingsFile = fopen(AVATAR_DATA_FILENAME, "rt"); - if (_settingsFile) + if (settingsFile) { - return true; - } else { - return false; + char line[LINE_MAX]; + + while (fgets(line, LINE_MAX, settingsFile) != NULL) + { + if (strcmp(line, " \n") > 0) + { + char *token = NULL; + char *settingLine = NULL; + char *toFree = NULL; + + settingLine = strdup(line); + + if (settingLine != NULL) + { + toFree = settingLine; + + int i = 0; + + char key[128]; + char value[128]; + + + while ((token = strsep(&settingLine, "=")) != NULL) + { + switch (i) { + case 0: + strcpy(key, token); + _settingsTable[key] = ""; + break; + + case 1: + strcpy(value, token); + _settingsTable[key] = token; + break; + + default: + break; + } + + i++; + } + + free(toFree); + } + } + } } + + fclose(settingsFile); } -void Application::closeSettingsFile() +void Application::saveSettingsFile() { - if (_settingsFile) + FILE* settingsFile = fopen(AVATAR_DATA_FILENAME, "wt"); + + if (settingsFile) { - fclose(_settingsFile); - _settingsFile = NULL; + for (std::map::iterator i = _settingsTable.begin(); i != _settingsTable.end(); i++) + { + fprintf(settingsFile, "\n%s=%s", i->first.data(), i->second.data()); + } } + + fclose(settingsFile); } bool Application::getSettingBool(const char *settingName, bool &boolSetting, bool defaultSetting) { - if (_settingsFile) + if (_settingsTable[settingName] != "") { - int readPosition; + int readBool; + sscanf(_settingsTable[settingName].data(), "%d", &readBool); - char setting[128]; - char vals[] = "%d"; - sprintf(setting, "\n%s=%s", settingName, vals); - - int res = fscanf(_settingsFile, setting, &readPosition); - - if (res != EOF) + if (readBool == 1) { - if (readPosition == 1) - { - boolSetting = true; - } else if (readPosition == 0) { - boolSetting = false; - } - } else { - boolSetting = defaultSetting; - return false; + boolSetting = true; + } else if (readBool == 0) { + boolSetting = false; } - } else { boolSetting = defaultSetting; - - printLog("Call to getSetting function without _settingsFile being open! Forgot to call openSettingsFile perhaps?\n"); - return false; } @@ -837,32 +873,19 @@ bool Application::getSettingBool(const char *settingName, bool &boolSetting, boo bool Application::getSettingFloat(const char *settingName, float &floatSetting, float defaultSetting) { - if (_settingsFile) + if (_settingsTable[settingName] != "") { - float readPosition; + float readFloat; + sscanf(_settingsTable[settingName].data(), "%f", &readFloat); - char setting[128]; - char vals[] = "%f"; - sprintf(setting, "\n%s=%s", settingName, vals); - - int res = fscanf(_settingsFile, setting, &readPosition); - - if (res != EOF) - { - if (!isnan(readPosition)) { - floatSetting = readPosition; - } else { - floatSetting = defaultSetting; - } + if (!isnan(readFloat)) { + floatSetting = readFloat; } else { floatSetting = defaultSetting; return false; } } else { floatSetting = defaultSetting; - - printLog("Call to getSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); - return false; } @@ -871,32 +894,19 @@ bool Application::getSettingFloat(const char *settingName, float &floatSetting, bool Application::getSettingVec3(const char *settingName, glm::vec3 &vecSetting, glm::vec3 defaultSetting) { - if (_settingsFile) + if (_settingsTable[settingName] != "") { - glm::vec3 readPosition; + glm::vec3 readVec; + sscanf(_settingsTable[settingName].data(), "%f,%f,%f", &readVec.x, &readVec.y, &readVec.z); - char setting[128]; - char vals[] = "%f,%f,%f"; - sprintf(setting, "\n%s=%s", settingName, vals); - - int res = fscanf(_settingsFile, setting, &readPosition.x, &readPosition.y, &readPosition.z); - - if (res != EOF) - { - if (!isnan(readPosition.x) && !isnan(readPosition.y) && !isnan(readPosition.z)) { - vecSetting = readPosition; - } else { - vecSetting = defaultSetting; - } + if (!isnan(readVec.x) && !isnan(readVec.y) && !isnan(readVec.z)) { + vecSetting = readVec; } else { vecSetting = defaultSetting; - return false; + return false; } } else { vecSetting = defaultSetting; - - printLog("Call to getSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); - return false; } @@ -905,44 +915,23 @@ bool Application::getSettingVec3(const char *settingName, glm::vec3 &vecSetting, void Application::setSettingBool(const char *settingName, bool boolSetting) { - if (_settingsFile) - { - char setting[128]; - char vals[] = "%d"; - sprintf(setting, "\n%s=%s", settingName, vals); - printLog(setting, boolSetting); - fprintf(_settingsFile, setting, boolSetting); - } else { - printLog("Call to setSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); - } + char setting[128]; + sprintf(setting, "%d", boolSetting); + _settingsTable[settingName] = setting; } void Application::setSettingFloat(const char *settingName, float floatSetting) { - if (_settingsFile) - { - char setting[128]; - char vals[] = "%f"; - sprintf(setting, "\n%s=%s", settingName, vals); - printLog(setting, floatSetting); - fprintf(_settingsFile, setting, floatSetting); - } else { - printLog("Call to setSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); - } + char setting[128]; + sprintf(setting, "%f", floatSetting); + _settingsTable[settingName] = setting; } void Application::setSettingVec3(const char *settingName, glm::vec3 vecSetting) { - if (_settingsFile) - { - char setting[128]; - char vals[] = "%f,%f,%f"; - sprintf(setting, "\n%s=%s", settingName, vals); - printLog(setting, vecSetting.x, vecSetting.y, vecSetting.z); - fprintf(_settingsFile, setting, vecSetting.x, vecSetting.y, vecSetting.z); - } else { - printLog("Call to setSetting function without _settingsFile! Forgot to call openSettingsFile perhaps?\n"); - } + char setting[128]; + sprintf(setting, "%f,%f,%f", vecSetting.x, vecSetting.y, vecSetting.z); + _settingsTable[settingName] = setting; } // Every second, check the frame rates and other stuff @@ -2330,7 +2319,6 @@ void Application::saveSettings() { // Handle any persistent settings saving here when we get a call to terminate. // This should probably be moved to a map stored in memory at some point to cache settings. - openSettingsFile("wt"); _myAvatar.writeAvatarDataToFile(); setSettingBool("_gyroLook", _gyroLook->isChecked()); @@ -2363,20 +2351,12 @@ void Application::saveSettings() setSettingBool("_viewFrustumFromOffset", _viewFrustumFromOffset->isChecked()); - setSettingBool("wantsViewDeltaSending", _myAvatar.getWantDelta()); - - setSettingBool("wantsResIn", _myAvatar.getWantResIn()); - - setSettingBool("wantsMonochrome", _myAvatar.getWantColor()); - - setSettingBool("renderPipelineWarnings", _voxels.getRenderPipelineWarnings()); - - closeSettingsFile(); + saveSettingsFile(); } void Application::readSettings() { - openSettingsFile("rt"); + readSettingsFile(); _myAvatar.readAvatarDataFromFile(); bool settingState; @@ -2425,18 +2405,5 @@ void Application::readSettings() getSettingBool("_viewFrustumFromOffset", settingState, _viewFrustumFromOffset->isChecked()); _viewFrustumFromOffset->setChecked(settingState); - getSettingBool("wantsResIn", settingState, false); - setWantsResIn(settingState); - - getSettingBool("wantsMonochrome", settingState, false); - setWantsMonochrome(settingState); - - getSettingBool("renderPipelineWarnings", settingState, false); - setRenderWarnings(settingState); - - getSettingBool("wantsViewDeltaSending", settingState, false); - setWantsDelta(settingState); - - closeSettingsFile(); } diff --git a/interface/src/Application.h b/interface/src/Application.h index 3934ff1610..bde3f989d2 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -11,6 +11,7 @@ #include #include +#include #include @@ -183,11 +184,12 @@ private: static void attachNewHeadToAgent(Agent *newAgent); static void* networkReceive(void* args); - bool openSettingsFile(const char* mode); - void closeSettingsFile(); + // These two functions are technically not necessary, but they help keep things in one place. + void readSettings(); //! This function is largely to help consolidate getting settings in one place. + void saveSettings(); //! This function is to consolidate any settings setting in one place. - void saveSettings(); - void readSettings(); + void readSettingsFile(); //! This function reads data from the settings file, splitting data into key value pairs using '=' as a delimiter. + void saveSettingsFile(); //! This function writes all changes in the settings table to the settings file, serializing all settings added through the setSetting functions. QMainWindow* _window; QGLWidget* _glWidget; @@ -214,7 +216,7 @@ private: QAction* _destructiveAddVoxel; // when doing voxel editing do we want them to be destructive QAction* _frustumOn; // Whether or not to display the debug view frustum QAction* _viewFrustumFromOffset; // Whether or not to offset the view of the frustum - QAction* _cameraFrustum; // which frustum to look at + QAction* _cameraFrustum; // which frustum to look at QAction* _frustumRenderModeAction; SerialInterface _serialPort; @@ -306,7 +308,11 @@ private: int _bytesPerSecond; int _bytesCount; - FILE* _settingsFile; + /*! + * Store settings in a map, storing keys and values as strings. + * Interpret values as needed on demand. through the appropriate getters and setters. + */ + std::map _settingsTable; }; #endif /* defined(__interface__Application__) */ From 8ac83357764896c26d1fca306b246519b732f07e Mon Sep 17 00:00:00 2001 From: Geenz Date: Mon, 27 May 2013 19:18:36 -0400 Subject: [PATCH 05/10] Check how many matches were found for the given data type we're checking for. 1 for bool and float, 3 for vec3. Return false and assign default values if this isn't true. --- interface/src/Application.cpp | 48 +++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 2049dc2e92..e9b7fc0053 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -855,13 +855,18 @@ bool Application::getSettingBool(const char *settingName, bool &boolSetting, boo if (_settingsTable[settingName] != "") { int readBool; - sscanf(_settingsTable[settingName].data(), "%d", &readBool); + int res = sscanf(_settingsTable[settingName].data(), "%d", &readBool); - if (readBool == 1) + printLog("Found setting %d times!", res); + + if (res == 1) { - boolSetting = true; - } else if (readBool == 0) { - boolSetting = false; + if (readBool == 1) + { + boolSetting = true; + } else if (readBool == 0) { + boolSetting = false; + } } } else { boolSetting = defaultSetting; @@ -876,10 +881,18 @@ bool Application::getSettingFloat(const char *settingName, float &floatSetting, if (_settingsTable[settingName] != "") { float readFloat; - sscanf(_settingsTable[settingName].data(), "%f", &readFloat); + int res = sscanf(_settingsTable[settingName].data(), "%f", &readFloat); - if (!isnan(readFloat)) { - floatSetting = readFloat; + printLog("Found setting %d times!", res); + + if (res == 1) + { + if (!isnan(readFloat)) { + floatSetting = readFloat; + } else { + floatSetting = defaultSetting; + return false; + } } else { floatSetting = defaultSetting; return false; @@ -897,10 +910,18 @@ bool Application::getSettingVec3(const char *settingName, glm::vec3 &vecSetting, if (_settingsTable[settingName] != "") { glm::vec3 readVec; - sscanf(_settingsTable[settingName].data(), "%f,%f,%f", &readVec.x, &readVec.y, &readVec.z); + int res = sscanf(_settingsTable[settingName].data(), "%f,%f,%f", &readVec.x, &readVec.y, &readVec.z); - if (!isnan(readVec.x) && !isnan(readVec.y) && !isnan(readVec.z)) { - vecSetting = readVec; + printLog("Found setting %d times!", res); + + if (res == 3) + { + if (!isnan(readVec.x) && !isnan(readVec.y) && !isnan(readVec.z)) { + vecSetting = readVec; + } else { + vecSetting = defaultSetting; + return false; + } } else { vecSetting = defaultSetting; return false; @@ -2351,6 +2372,8 @@ void Application::saveSettings() setSettingBool("_viewFrustumFromOffset", _viewFrustumFromOffset->isChecked()); + setSettingBool("_cameraFrustum", _cameraFrustum->isChecked()); + saveSettingsFile(); } @@ -2405,5 +2428,8 @@ void Application::readSettings() getSettingBool("_viewFrustumFromOffset", settingState, _viewFrustumFromOffset->isChecked()); _viewFrustumFromOffset->setChecked(settingState); + getSettingBool("_cameraFrustum", settingState, _cameraFrustum->isChecked()); + _cameraFrustum->setChecked(settingState); + } From c33d2ee25ef5a62f48ed6955f914ac6002513e77 Mon Sep 17 00:00:00 2001 From: Geenz Date: Wed, 29 May 2013 16:46:47 -0400 Subject: [PATCH 06/10] Coding standard cleanup based upon ZappoMan's suggestions. --- interface/src/Application.cpp | 120 ++++++++++++++++------------------ interface/src/Application.h | 12 ++-- 2 files changed, 62 insertions(+), 70 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index e9b7fc0053..2a978ee17b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -778,26 +778,22 @@ void Application::wheelEvent(QWheelEvent* event) { const char AVATAR_DATA_FILENAME[] = "avatar.ifd"; -void Application::readSettingsFile() -{ +void Application::readSettingsFile() { FILE* settingsFile = fopen(AVATAR_DATA_FILENAME, "rt"); - if (settingsFile) - { + if (settingsFile) { char line[LINE_MAX]; while (fgets(line, LINE_MAX, settingsFile) != NULL) { - if (strcmp(line, " \n") > 0) - { + if (strcmp(line, " \n") > 0) { char *token = NULL; char *settingLine = NULL; char *toFree = NULL; settingLine = strdup(line); - if (settingLine != NULL) - { + if (settingLine != NULL) { toFree = settingLine; int i = 0; @@ -835,12 +831,10 @@ void Application::readSettingsFile() fclose(settingsFile); } -void Application::saveSettingsFile() -{ +void Application::saveSettingsFile() { FILE* settingsFile = fopen(AVATAR_DATA_FILENAME, "wt"); - if (settingsFile) - { + if (settingsFile) { for (std::map::iterator i = _settingsTable.begin(); i != _settingsTable.end(); i++) { fprintf(settingsFile, "\n%s=%s", i->first.data(), i->second.data()); @@ -850,109 +844,107 @@ void Application::saveSettingsFile() fclose(settingsFile); } -bool Application::getSettingBool(const char *settingName, bool &boolSetting, bool defaultSetting) -{ - if (_settingsTable[settingName] != "") - { +bool Application::getSettingBool(const char* setting, bool& value, const bool defaultSetting) const { + std::map::const_iterator iter = _settingsTable.find(setting); + + if (iter != _settingsTable.end()) { int readBool; - int res = sscanf(_settingsTable[settingName].data(), "%d", &readBool); - printLog("Found setting %d times!", res); + int res = sscanf(iter->second.data(), "%d", &readBool); - if (res == 1) - { - if (readBool == 1) - { - boolSetting = true; + const char EXPECTED_ITEMS = 1; + + if (res == EXPECTED_ITEMS) { + if (readBool == 1) { + value = true; } else if (readBool == 0) { - boolSetting = false; + value = false; } } } else { - boolSetting = defaultSetting; + value = defaultSetting; return false; } return true; } -bool Application::getSettingFloat(const char *settingName, float &floatSetting, float defaultSetting) -{ - if (_settingsTable[settingName] != "") - { +bool Application::getSettingFloat(const char* setting, float& value, const float defaultSetting) const { + std::map::const_iterator iter = _settingsTable.find(setting); + + if (iter != _settingsTable.end()) { float readFloat; - int res = sscanf(_settingsTable[settingName].data(), "%f", &readFloat); - printLog("Found setting %d times!", res); + int res = sscanf(iter->second.data(), "%f", &readFloat); - if (res == 1) - { + const char EXPECTED_ITEMS = 1; + + if (res == EXPECTED_ITEMS) { if (!isnan(readFloat)) { - floatSetting = readFloat; + value = readFloat; } else { - floatSetting = defaultSetting; + value = defaultSetting; return false; } } else { - floatSetting = defaultSetting; + value = defaultSetting; return false; } } else { - floatSetting = defaultSetting; + value = defaultSetting; return false; } return true; } -bool Application::getSettingVec3(const char *settingName, glm::vec3 &vecSetting, glm::vec3 defaultSetting) -{ - if (_settingsTable[settingName] != "") - { +bool Application::getSettingVec3(const char* setting, glm::vec3& value, const glm::vec3& defaultSetting) const { + std::map::const_iterator iter = _settingsTable.find(setting); + + if (iter != _settingsTable.end()) { glm::vec3 readVec; - int res = sscanf(_settingsTable[settingName].data(), "%f,%f,%f", &readVec.x, &readVec.y, &readVec.z); - printLog("Found setting %d times!", res); + int res = sscanf(iter->second.data(), "%f,%f,%f", &readVec.x, &readVec.y, &readVec.z); - if (res == 3) - { + const char EXPECTED_ITEMS = 3; + + if (res == EXPECTED_ITEMS) { if (!isnan(readVec.x) && !isnan(readVec.y) && !isnan(readVec.z)) { - vecSetting = readVec; + value = readVec; } else { - vecSetting = defaultSetting; + value = defaultSetting; return false; } } else { - vecSetting = defaultSetting; + value = defaultSetting; return false; } } else { - vecSetting = defaultSetting; + value = defaultSetting; return false; } return true; } -void Application::setSettingBool(const char *settingName, bool boolSetting) -{ - char setting[128]; - sprintf(setting, "%d", boolSetting); - _settingsTable[settingName] = setting; +const short MAX_SETTINGS_LENGTH = 128; + +void Application::setSettingBool(const char* setting, const bool value) { + char settingValues[MAX_SETTINGS_LENGTH]; + sprintf(settingValues, "%d", value); + _settingsTable[setting] = settingValues; } -void Application::setSettingFloat(const char *settingName, float floatSetting) -{ - char setting[128]; - sprintf(setting, "%f", floatSetting); - _settingsTable[settingName] = setting; +void Application::setSettingFloat(const char* setting, const float value) { + char settingValues[MAX_SETTINGS_LENGTH]; + sprintf(settingValues, "%f", value); + _settingsTable[setting] = settingValues; } -void Application::setSettingVec3(const char *settingName, glm::vec3 vecSetting) -{ - char setting[128]; - sprintf(setting, "%f,%f,%f", vecSetting.x, vecSetting.y, vecSetting.z); - _settingsTable[settingName] = setting; +void Application::setSettingVec3(const char* setting, const glm::vec3& value) { + char settingValues[MAX_SETTINGS_LENGTH]; + sprintf(settingValues, "%f,%f,%f", value.x, value.y, value.z); + _settingsTable[setting] = settingValues; } // Every second, check the frame rates and other stuff diff --git a/interface/src/Application.h b/interface/src/Application.h index bde3f989d2..ffa9b4eda3 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -73,7 +73,7 @@ public: @param boolSetting The referenced variable where the setting will be stored. @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to false. */ - bool getSettingBool(const char* settingName, bool &boolSetting, bool defaultSetting = false); + bool getSettingBool(const char* setting, bool &value, const bool defaultSetting = false) const; /*! @fn getSettingFloat @@ -82,7 +82,7 @@ public: @param floatSetting The referenced variable where the setting will be stored. @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to 0.0f. */ - bool getSettingFloat(const char* settingName, float &floatSetting, float defaultSetting = 0.0f); + bool getSettingFloat(const char* setting, float &value, const float defaultSetting = 0.0f) const; /*! @fn getSettingVec3 @@ -91,7 +91,7 @@ public: @param vecSetting The referenced variable where the setting will be stored. @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to <0.0f, 0.0f, 0.0f> */ - bool getSettingVec3(const char* settingName, glm::vec3 &vecSetting, glm::vec3 defaultSetting = glm::vec3(0.0f, 0.0f, 0.0f)); + bool getSettingVec3(const char* setting, glm::vec3 &value, const glm::vec3& defaultSetting = glm::vec3(0.0f, 0.0f, 0.0f)) const; /*! @fn setSettingBool @@ -99,7 +99,7 @@ public: @param settingName The desired setting to populate a value for. @param boolSetting The value to set. */ - void setSettingBool(const char* settingName, bool boolSetting); + void setSettingBool(const char* setting, const bool value); /*! @fn setSettingFloat @@ -107,7 +107,7 @@ public: @param settingName The desired setting to populate a value for. @param floatSetting The value to set. */ - void setSettingFloat(const char* settingName, float floatSetting); + void setSettingFloat(const char* setting, const float value); /*! @fn setSettingVec3 @@ -115,7 +115,7 @@ public: @param settingName The desired setting to populate a value for. @param vecSetting The value to set. */ - void setSettingVec3(const char* settingName, glm::vec3 vecSetting); + void setSettingVec3(const char* setting, const glm::vec3& value); private slots: From 0a3dbcd675a1aec9bb7d1fdb695ab3c01a2e67d6 Mon Sep 17 00:00:00 2001 From: Geenz Date: Thu, 30 May 2013 17:00:32 -0400 Subject: [PATCH 07/10] Removed unused readYaw variable. --- interface/src/Avatar.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index 05dbeb8fe1..371bd59660 100644 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -1249,7 +1249,6 @@ void Avatar::writeAvatarDataToFile() { void Avatar::readAvatarDataFromFile() { glm::vec3 readPosition; glm::vec3 readRotation; - float readYaw; Application::getInstance()->getSettingVec3("avatarPos", readPosition, glm::vec3(6.1f, 0, 1.4f)); Application::getInstance()->getSettingVec3("avatarRotation", readRotation, glm::vec3(0, 0, 0)); From f009177aa75f79a38a094087dfd65613eee8ea52 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Thu, 30 May 2013 16:19:07 -0700 Subject: [PATCH 08/10] Added check for lost transmitter --- interface/src/Application.cpp | 2 ++ interface/src/Avatar.cpp | 1 + interface/src/Transmitter.cpp | 25 ++++++++++++++++++++++--- interface/src/Transmitter.h | 2 ++ 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1e9e119777..72f5fc1a5c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -877,6 +877,8 @@ void Application::idle() { _serialPort.readData(deltaTime); } + // Update transmitter + // Sample hardware, update view frustum if needed, and send avatar data to mixer/agents updateAvatar(deltaTime); diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index 8f6ac7c991..b2e60641a5 100644 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -279,6 +279,7 @@ void Avatar::simulate(float deltaTime, Transmitter* transmitter) { // Add thrusts from Transmitter if (transmitter) { + transmitter->checkForLostTransmitter(); glm::vec3 rotation = transmitter->getEstimatedRotation(); const float TRANSMITTER_MIN_RATE = 1.f; const float TRANSMITTER_MIN_YAW_RATE = 4.f; diff --git a/interface/src/Transmitter.cpp b/interface/src/Transmitter.cpp index 5f6def92f7..d44227982f 100644 --- a/interface/src/Transmitter.cpp +++ b/interface/src/Transmitter.cpp @@ -20,11 +20,25 @@ Transmitter::Transmitter() : _isConnected(false), _lastRotationRate(0,0,0), _lastAcceleration(0,0,0), - _estimatedRotation(0,0,0) + _estimatedRotation(0,0,0), + _lastReceivedPacket(NULL) { } +void Transmitter::checkForLostTransmitter() { + // If we are in motion, check for loss of transmitter packets + if (glm::length(_estimatedRotation) > 0.f) { + timeval now; + gettimeofday(&now, NULL); + const int TIME_TO_ASSUME_LOST_MSECS = 2000; + int msecsSinceLast = diffclock(_lastReceivedPacket, &now); + if (msecsSinceLast > TIME_TO_ASSUME_LOST_MSECS) { + resetLevels(); + printLog("Transmitter signal lost.\n"); + } + } +} void Transmitter::resetLevels() { _lastRotationRate *= 0.f; _estimatedRotation *= 0.f; @@ -34,6 +48,11 @@ void Transmitter::processIncomingData(unsigned char* packetData, int numBytes) { const int PACKET_HEADER_SIZE = 1; // Packet's first byte is 'T' const int ROTATION_MARKER_SIZE = 1; // 'R' = Rotation (clockwise about x,y,z) const int ACCELERATION_MARKER_SIZE = 1; // 'A' = Acceleration (x,y,z) + if (!_lastReceivedPacket) { + _lastReceivedPacket = new timeval; + } + gettimeofday(_lastReceivedPacket, NULL); + if (numBytes == PACKET_HEADER_SIZE + ROTATION_MARKER_SIZE + ACCELERATION_MARKER_SIZE + sizeof(_lastRotationRate) + sizeof(_lastAcceleration) + sizeof(_touchState.x) + sizeof(_touchState.y) + sizeof(_touchState.state)) { @@ -69,12 +88,12 @@ void Transmitter::processIncomingData(unsigned char* packetData, int numBytes) { _estimatedRotation.y *= (1.f - DECAY_RATE * DELTA_TIME); if (!_isConnected) { - printf("Transmitter V2 Connected.\n"); + printLog("Transmitter Connected.\n"); _isConnected = true; _estimatedRotation *= 0.0; } } else { - printf("Transmitter V2 packet read error, %d bytes.\n", numBytes); + printLog("Transmitter packet read error, %d bytes.\n", numBytes); } } diff --git a/interface/src/Transmitter.h b/interface/src/Transmitter.h index 0db0762ab1..95d80249e8 100644 --- a/interface/src/Transmitter.h +++ b/interface/src/Transmitter.h @@ -26,6 +26,7 @@ class Transmitter public: Transmitter(); void render(); + void checkForLostTransmitter(); void resetLevels(); void renderLevels(int width, int height); bool isConnected() { return _isConnected; }; @@ -41,6 +42,7 @@ private: glm::vec3 _lastAcceleration; glm::vec3 _estimatedRotation; TouchState _touchState; + timeval* _lastReceivedPacket; #endif /* defined(__hifi__Transmitter__) */ }; From fefa74135c27e929a7353b0cca162bc581cfcc8c Mon Sep 17 00:00:00 2001 From: Geenz Date: Thu, 30 May 2013 19:47:25 -0400 Subject: [PATCH 09/10] Moved to function overloads instead of unique function names. --- interface/src/Application.cpp | 72 +++++++++++++++++------------------ interface/src/Application.h | 12 +++--- interface/src/Avatar.cpp | 8 ++-- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7bb9879e06..c3ff499a83 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -792,7 +792,7 @@ void Application::saveSettingsFile() { fclose(settingsFile); } -bool Application::getSettingBool(const char* setting, bool& value, const bool defaultSetting) const { +bool Application::getSetting(const char* setting, bool& value, const bool defaultSetting) const { std::map::const_iterator iter = _settingsTable.find(setting); if (iter != _settingsTable.end()) { @@ -817,7 +817,7 @@ bool Application::getSettingBool(const char* setting, bool& value, const bool de return true; } -bool Application::getSettingFloat(const char* setting, float& value, const float defaultSetting) const { +bool Application::getSetting(const char* setting, float& value, const float defaultSetting) const { std::map::const_iterator iter = _settingsTable.find(setting); if (iter != _settingsTable.end()) { @@ -846,7 +846,7 @@ bool Application::getSettingFloat(const char* setting, float& value, const float return true; } -bool Application::getSettingVec3(const char* setting, glm::vec3& value, const glm::vec3& defaultSetting) const { +bool Application::getSetting(const char* setting, glm::vec3& value, const glm::vec3& defaultSetting) const { std::map::const_iterator iter = _settingsTable.find(setting); if (iter != _settingsTable.end()) { @@ -877,19 +877,19 @@ bool Application::getSettingVec3(const char* setting, glm::vec3& value, const gl const short MAX_SETTINGS_LENGTH = 128; -void Application::setSettingBool(const char* setting, const bool value) { +void Application::setSetting(const char* setting, const bool value) { char settingValues[MAX_SETTINGS_LENGTH]; sprintf(settingValues, "%d", value); _settingsTable[setting] = settingValues; } -void Application::setSettingFloat(const char* setting, const float value) { +void Application::setSetting(const char* setting, const float value) { char settingValues[MAX_SETTINGS_LENGTH]; sprintf(settingValues, "%f", value); _settingsTable[setting] = settingValues; } -void Application::setSettingVec3(const char* setting, const glm::vec3& value) { +void Application::setSetting(const char* setting, const glm::vec3& value) { char settingValues[MAX_SETTINGS_LENGTH]; sprintf(settingValues, "%f,%f,%f", value.x, value.y, value.z); _settingsTable[setting] = settingValues; @@ -2361,35 +2361,35 @@ void Application::saveSettings() // This should probably be moved to a map stored in memory at some point to cache settings. _myAvatar.writeAvatarDataToFile(); - setSettingBool("_gyroLook", _gyroLook->isChecked()); + setSetting("_gyroLook", _gyroLook->isChecked()); - setSettingBool("_mouseLook", _mouseLook->isChecked()); + setSetting("_mouseLook", _mouseLook->isChecked()); - setSettingBool("_transmitterDrives", _transmitterDrives->isChecked()); + setSetting("_transmitterDrives", _transmitterDrives->isChecked()); - setSettingBool("_renderVoxels", _renderVoxels->isChecked()); + setSetting("_renderVoxels", _renderVoxels->isChecked()); - setSettingBool("_renderVoxelTextures", _renderVoxelTextures->isChecked()); + setSetting("_renderVoxelTextures", _renderVoxelTextures->isChecked()); - setSettingBool("_renderStarsOn", _renderStarsOn->isChecked()); + setSetting("_renderStarsOn", _renderStarsOn->isChecked()); - setSettingBool("_renderAtmosphereOn", _renderAtmosphereOn->isChecked()); + setSetting("_renderAtmosphereOn", _renderAtmosphereOn->isChecked()); - setSettingBool("_renderAvatarsOn", _renderAvatarsOn->isChecked()); + setSetting("_renderAvatarsOn", _renderAvatarsOn->isChecked()); - setSettingBool("_renderStatsOn", _renderStatsOn->isChecked()); + setSetting("_renderStatsOn", _renderStatsOn->isChecked()); - setSettingBool("_renderFrameTimerOn", _renderFrameTimerOn->isChecked()); + setSetting("_renderFrameTimerOn", _renderFrameTimerOn->isChecked()); - setSettingBool("_renderLookatOn", _renderLookatOn->isChecked()); + setSetting("_renderLookatOn", _renderLookatOn->isChecked()); - setSettingBool("_logOn", _logOn->isChecked()); + setSetting("_logOn", _logOn->isChecked()); - setSettingBool("_frustumOn", _frustumOn->isChecked()); + setSetting("_frustumOn", _frustumOn->isChecked()); - setSettingBool("_viewFrustumFromOffset", _viewFrustumFromOffset->isChecked()); + setSetting("_viewFrustumFromOffset", _viewFrustumFromOffset->isChecked()); - setSettingBool("_cameraFrustum", _cameraFrustum->isChecked()); + setSetting("_cameraFrustum", _cameraFrustum->isChecked()); saveSettingsFile(); } @@ -2400,49 +2400,49 @@ void Application::readSettings() _myAvatar.readAvatarDataFromFile(); bool settingState; - getSettingBool("_gyroLook", settingState, _gyroLook->isChecked()); + getSetting("_gyroLook", settingState, _gyroLook->isChecked()); _gyroLook->setChecked(settingState); - getSettingBool("_mouseLook", settingState, _mouseLook->isChecked()); + getSetting("_mouseLook", settingState, _mouseLook->isChecked()); _mouseLook->setChecked(settingState); - getSettingBool("_transmitterDrives", settingState, _transmitterDrives->isChecked()); + getSetting("_transmitterDrives", settingState, _transmitterDrives->isChecked()); _transmitterDrives->setChecked(settingState); - getSettingBool("_renderVoxels", settingState, _renderVoxels->isChecked()); + getSetting("_renderVoxels", settingState, _renderVoxels->isChecked()); _renderVoxels->setChecked(settingState); - getSettingBool("_renderVoxelTextures", settingState, _renderVoxelTextures->isChecked()); + getSetting("_renderVoxelTextures", settingState, _renderVoxelTextures->isChecked()); _renderVoxelTextures->setChecked(settingState); - getSettingBool("_renderStarsOn", settingState, _renderStarsOn->isChecked()); + getSetting("_renderStarsOn", settingState, _renderStarsOn->isChecked()); _renderStarsOn->setChecked(settingState); - getSettingBool("_renderAtmosphereOn", settingState, _renderAtmosphereOn->isChecked()); + getSetting("_renderAtmosphereOn", settingState, _renderAtmosphereOn->isChecked()); _renderAtmosphereOn->setChecked(settingState); - getSettingBool("_renderAvatarsOn", settingState, _renderAvatarsOn->isChecked()); + getSetting("_renderAvatarsOn", settingState, _renderAvatarsOn->isChecked()); _renderAvatarsOn->setChecked(settingState); - getSettingBool("_renderStatsOn", settingState, _renderStatsOn->isChecked()); + getSetting("_renderStatsOn", settingState, _renderStatsOn->isChecked()); _renderStatsOn->setChecked(settingState); - getSettingBool("_renderFrameTimerOn", settingState, _renderFrameTimerOn->isChecked()); + getSetting("_renderFrameTimerOn", settingState, _renderFrameTimerOn->isChecked()); _renderFrameTimerOn->setChecked(settingState); - getSettingBool("_renderLookatOn", settingState, _renderLookatOn->isChecked()); + getSetting("_renderLookatOn", settingState, _renderLookatOn->isChecked()); _renderLookatOn->setChecked(settingState); - getSettingBool("_logOn", settingState, _logOn->isChecked()); + getSetting("_logOn", settingState, _logOn->isChecked()); _logOn->setChecked(settingState); - getSettingBool("_frustumOn", settingState, _frustumOn->isChecked()); + getSetting("_frustumOn", settingState, _frustumOn->isChecked()); _frustumOn->setChecked(settingState); - getSettingBool("_viewFrustumFromOffset", settingState, _viewFrustumFromOffset->isChecked()); + getSetting("_viewFrustumFromOffset", settingState, _viewFrustumFromOffset->isChecked()); _viewFrustumFromOffset->setChecked(settingState); - getSettingBool("_cameraFrustum", settingState, _cameraFrustum->isChecked()); + getSetting("_cameraFrustum", settingState, _cameraFrustum->isChecked()); _cameraFrustum->setChecked(settingState); } diff --git a/interface/src/Application.h b/interface/src/Application.h index f173db9ccb..42daf39f3b 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -75,7 +75,7 @@ public: @param boolSetting The referenced variable where the setting will be stored. @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to false. */ - bool getSettingBool(const char* setting, bool &value, const bool defaultSetting = false) const; + bool getSetting(const char* setting, bool &value, const bool defaultSetting = false) const; /*! @fn getSettingFloat @@ -84,7 +84,7 @@ public: @param floatSetting The referenced variable where the setting will be stored. @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to 0.0f. */ - bool getSettingFloat(const char* setting, float &value, const float defaultSetting = 0.0f) const; + bool getSetting(const char* setting, float &value, const float defaultSetting = 0.0f) const; /*! @fn getSettingVec3 @@ -93,7 +93,7 @@ public: @param vecSetting The referenced variable where the setting will be stored. @param defaultSetting The default setting to assign to boolSetting if this function fails to find the appropriate setting. Defaults to <0.0f, 0.0f, 0.0f> */ - bool getSettingVec3(const char* setting, glm::vec3 &value, const glm::vec3& defaultSetting = glm::vec3(0.0f, 0.0f, 0.0f)) const; + bool getSetting(const char* setting, glm::vec3 &value, const glm::vec3& defaultSetting = glm::vec3(0.0f, 0.0f, 0.0f)) const; /*! @fn setSettingBool @@ -101,7 +101,7 @@ public: @param settingName The desired setting to populate a value for. @param boolSetting The value to set. */ - void setSettingBool(const char* setting, const bool value); + void setSetting(const char* setting, const bool value); /*! @fn setSettingFloat @@ -109,7 +109,7 @@ public: @param settingName The desired setting to populate a value for. @param floatSetting The value to set. */ - void setSettingFloat(const char* setting, const float value); + void setSetting(const char* setting, const float value); /*! @fn setSettingVec3 @@ -117,7 +117,7 @@ public: @param settingName The desired setting to populate a value for. @param vecSetting The value to set. */ - void setSettingVec3(const char* setting, const glm::vec3& value); + void setSetting(const char* setting, const glm::vec3& value); private slots: diff --git a/interface/src/Avatar.cpp b/interface/src/Avatar.cpp index 371bd59660..8d58b0dcd2 100644 --- a/interface/src/Avatar.cpp +++ b/interface/src/Avatar.cpp @@ -1242,16 +1242,16 @@ void Avatar::setHeadFromGyros(glm::vec3* eulerAngles, glm::vec3* angularVelocity } void Avatar::writeAvatarDataToFile() { - Application::getInstance()->setSettingVec3("avatarPos", _position); - Application::getInstance()->setSettingVec3("avatarRotation", glm::vec3(_bodyYaw, _bodyPitch, _bodyRoll)); + Application::getInstance()->setSetting("avatarPos", _position); + Application::getInstance()->setSetting("avatarRotation", glm::vec3(_bodyYaw, _bodyPitch, _bodyRoll)); } void Avatar::readAvatarDataFromFile() { glm::vec3 readPosition; glm::vec3 readRotation; - Application::getInstance()->getSettingVec3("avatarPos", readPosition, glm::vec3(6.1f, 0, 1.4f)); - Application::getInstance()->getSettingVec3("avatarRotation", readRotation, glm::vec3(0, 0, 0)); + Application::getInstance()->getSetting("avatarPos", readPosition, glm::vec3(6.1f, 0, 1.4f)); + Application::getInstance()->getSetting("avatarRotation", readRotation, glm::vec3(0, 0, 0)); _bodyYaw = readRotation.x; _bodyPitch = readRotation.y; From ed904b58eb510e5c7314905c35e6fbb4eac7edb9 Mon Sep 17 00:00:00 2001 From: Geenz Date: Thu, 30 May 2013 19:50:01 -0400 Subject: [PATCH 10/10] Fixed spacing issues per the coding standard. --- interface/src/Application.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c3ff499a83..90475d0ed1 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -735,9 +735,9 @@ void Application::readSettingsFile() { while (fgets(line, LINE_MAX, settingsFile) != NULL) { if (strcmp(line, " \n") > 0) { - char *token = NULL; - char *settingLine = NULL; - char *toFree = NULL; + char* token = NULL; + char* settingLine = NULL; + char* toFree = NULL; settingLine = strdup(line);