Merge pull request #521 from ZappoMan/master

Fixed issue with corrupt settings file, added offset camera details to settings
This commit is contained in:
birarda 2013-06-10 14:56:33 -07:00
commit cd82a08144
4 changed files with 55 additions and 27 deletions

View file

@ -2573,20 +2573,43 @@ void Application::saveAction(QSettings* set, QAction* action) {
set->setValue(action->text(), action->isChecked());
}
void Application::loadSettings(QSettings* set) {
if (!set) set = getSettings();
void Application::loadSettings(QSettings* settings) {
if (!settings) {
settings = getSettings();
}
_headCameraPitchYawScale = set->value("headCameraPitchYawScale", 0.0f).toFloat();
scanMenuBar(&Application::loadAction, set);
getAvatar()->loadData(set);
_headCameraPitchYawScale = loadSetting(settings, "headCameraPitchYawScale", 0.0f);
settings->beginGroup("View Frustum Offset Camera");
// in case settings is corrupt or missing loadSetting() will check for NaN
_viewFrustumOffsetYaw = loadSetting(settings, "viewFrustumOffsetYaw" , 0.0f);
_viewFrustumOffsetPitch = loadSetting(settings, "viewFrustumOffsetPitch" , 0.0f);
_viewFrustumOffsetRoll = loadSetting(settings, "viewFrustumOffsetRoll" , 0.0f);
_viewFrustumOffsetDistance = loadSetting(settings, "viewFrustumOffsetDistance", 0.0f);
_viewFrustumOffsetUp = loadSetting(settings, "viewFrustumOffsetUp" , 0.0f);
settings->endGroup();
scanMenuBar(&Application::loadAction, settings);
getAvatar()->loadData(settings);
}
void Application::saveSettings(QSettings* set) {
if (!set) set = getSettings();
set->setValue("headCameraPitchYawScale", _headCameraPitchYawScale);
scanMenuBar(&Application::saveAction, set);
getAvatar()->saveData(set);
void Application::saveSettings(QSettings* settings) {
if (!settings) {
settings = getSettings();
}
settings->setValue("headCameraPitchYawScale", _headCameraPitchYawScale);
settings->beginGroup("View Frustum Offset Camera");
settings->setValue("viewFrustumOffsetYaw", _viewFrustumOffsetYaw);
settings->setValue("viewFrustumOffsetPitch", _viewFrustumOffsetPitch);
settings->setValue("viewFrustumOffsetRoll", _viewFrustumOffsetRoll);
settings->setValue("viewFrustumOffsetDistance", _viewFrustumOffsetDistance);
settings->setValue("viewFrustumOffsetUp", _viewFrustumOffsetUp);
settings->endGroup();
scanMenuBar(&Application::saveAction, settings);
getAvatar()->saveData(settings);
}
void Application::importSettings() {

View file

@ -1212,22 +1212,20 @@ void Avatar::renderBody(bool lookingInMirror, bool renderAvatarBalls) {
}
void Avatar::loadData(QSettings* settings) {
settings->beginGroup("Avatar");
void Avatar::loadData(QSettings* set) {
set->beginGroup("Avatar");
// in case settings is corrupt or missing loadSetting() will check for NaN
_bodyYaw = loadSetting(settings, "bodyYaw" , 0.0f);
_bodyPitch = loadSetting(settings, "bodyPitch", 0.0f);
_bodyRoll = loadSetting(settings, "bodyRoll" , 0.0f);
_position.x = loadSetting(settings, "position_x", 0.0f);
_position.y = loadSetting(settings, "position_y", 0.0f);
_position.z = loadSetting(settings, "position_z", 0.0f);
_bodyYaw = set->value("bodyYaw", _bodyYaw).toFloat();
_bodyPitch = set->value("bodyPitch", _bodyPitch).toFloat();
_bodyRoll = set->value("bodyRoll", _bodyRoll).toFloat();
_voxels.setVoxelURL(settings->value("voxelURL").toUrl());
_position.x = set->value("position_x", _position.x).toFloat();
_position.y = set->value("position_y", _position.y).toFloat();
_position.z = set->value("position_z", _position.z).toFloat();
_voxels.setVoxelURL(set->value("voxelURL").toUrl());
set->endGroup();
settings->endGroup();
}
void Avatar::getBodyBallTransform(AvatarJointID jointID, glm::vec3& position, glm::quat& rotation) const {

View file

@ -497,7 +497,10 @@ void runTimingTests() {
}
float loadSetting(QSettings* settings, const char* name, float defaultValue) {
float value = settings->value(name, 0.0f).toFloat();
if (isnan(value)) {
value = defaultValue;
}
return value;
}

View file

@ -17,6 +17,7 @@
#include <glm/glm.hpp>
#include <glm/gtc/quaternion.hpp>
#include <QSettings>
// the standard sans serif font family
#define SANS_FONT_FAMILY "Helvetica"
@ -66,4 +67,7 @@ void renderCircle(glm::vec3 position, float radius, glm::vec3 surfaceNormal, int
void runTimingTests();
float loadSetting(QSettings* settings, const char* name, float defaultValue);
#endif