Showing the changes to interface/src/Menu.cpp (1 of 55 files). Show all
Unified · Split
| @@ -62,7 +62,8 @@ Menu* Menu::getInstance() { · 61 unmodified lines | |||
| 62 | const ViewFrustumOffset DEFAULT_FRUSTUM_OFFSET = {-135.0f, 0.0f, 0.0f, 25.0f, 0.0f}; | 62 | const ViewFrustumOffset DEFAULT_FRUSTUM_OFFSET = {-135.0f, 0.0f, 0.0f, 25.0f, 0.0f}; |
| 63 | const float DEFAULT_FACESHIFT_EYE_DEFLECTION = 0.25f; | 63 | const float DEFAULT_FACESHIFT_EYE_DEFLECTION = 0.25f; |
| 64 | const float DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER = 1.0f; | 64 | const float DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER = 1.0f; |
| 65 | const int FIVE_SECONDS_OF_FRAMES = 5 * 60; | 65 | const int ONE_SECOND_OF_FRAMES = 60; |
| 66 | const int FIVE_SECONDS_OF_FRAMES = 5 * ONE_SECOND_OF_FRAMES; | ||
| 66 | 67 | ||
| 67 | Menu::Menu() : | 68 | Menu::Menu() : |
| 68 | _actionHash(), | 69 | _actionHash(), |
| @@ -82,9 +83,9 @@ Menu::Menu() : · 13 unmodified lines | |||
| 82 | _lastAdjust(usecTimestampNow()), | 83 | _lastAdjust(usecTimestampNow()), |
| 83 | _lastAvatarDetailDrop(usecTimestampNow()), | 84 | _lastAvatarDetailDrop(usecTimestampNow()), |
| 84 | _fpsAverage(FIVE_SECONDS_OF_FRAMES), | 85 | _fpsAverage(FIVE_SECONDS_OF_FRAMES), |
| 86 | _fastFPSAverage(ONE_SECOND_OF_FRAMES), | ||
| 85 | _loginAction(NULL), | 87 | _loginAction(NULL), |
| 86 | _preferencesDialog(NULL) | 88 | _preferencesDialog(NULL) |
| 87 | |||
| 88 | { | 89 | { |
| 89 | Application *appInstance = Application::getInstance(); | 90 | Application *appInstance = Application::getInstance(); |
| 90 | 91 | ||
| @@ -1050,19 +1051,21 @@ void Menu::autoAdjustLOD(float currentFPS) { · 959 unmodified lines | |||
| 1050 | currentFPS = ASSUMED_FPS; | 1051 | currentFPS = ASSUMED_FPS; |
| 1051 | } | 1052 | } |
| 1052 | _fpsAverage.updateAverage(currentFPS); | 1053 | _fpsAverage.updateAverage(currentFPS); |
| 1054 | _fastFPSAverage.updateAverage(currentFPS); | ||
| 1053 | 1055 | ||
| 1054 | quint64 now = usecTimestampNow(); | 1056 | quint64 now = usecTimestampNow(); |
| 1055 | 1057 | ||
| 1056 | if (_fpsAverage.getAverage() < ADJUST_LOD_DOWN_FPS) { | 1058 | const quint64 ADJUST_AVATAR_LOD_DOWN_DELAY = 1000 * 1000; |
| 1057 | if (now - _lastAvatarDetailDrop > ADJUST_LOD_DOWN_DELAY) { | 1059 | if (_fastFPSAverage.getAverage() < ADJUST_LOD_DOWN_FPS) { |
| 1060 | if (now - _lastAvatarDetailDrop > ADJUST_AVATAR_LOD_DOWN_DELAY) { | ||
| 1058 | // attempt to lower the detail in proportion to the fps difference | 1061 | // attempt to lower the detail in proportion to the fps difference |
| 1059 | float targetFps = (ADJUST_LOD_DOWN_FPS + ADJUST_LOD_UP_FPS) * 0.5f; | 1062 | float targetFps = (ADJUST_LOD_DOWN_FPS + ADJUST_LOD_UP_FPS) * 0.5f; |
| 1060 | _avatarLODDistanceMultiplier *= (targetFps / _fpsAverage.getAverage()); | 1063 | _avatarLODDistanceMultiplier *= (targetFps / _fastFPSAverage.getAverage()); |
| 1061 | _lastAvatarDetailDrop = now; | 1064 | _lastAvatarDetailDrop = now; |
| 1062 | } | 1065 | } |
| 1063 | } else if (_fpsAverage.getAverage() > ADJUST_LOD_UP_FPS) { | 1066 | } else if (_fastFPSAverage.getAverage() > ADJUST_LOD_UP_FPS) { |
| 1064 | // let the detail level creep slowly upwards | 1067 | // let the detail level creep slowly upwards |
| 1065 | const float DISTANCE_DECREASE_RATE = 0.01f; | 1068 | const float DISTANCE_DECREASE_RATE = 0.02f; |
| 1066 | const float MINIMUM_DISTANCE_MULTIPLIER = 0.1f; | 1069 | const float MINIMUM_DISTANCE_MULTIPLIER = 0.1f; |
| 1067 | _avatarLODDistanceMultiplier = qMax(MINIMUM_DISTANCE_MULTIPLIER, | 1070 | _avatarLODDistanceMultiplier = qMax(MINIMUM_DISTANCE_MULTIPLIER, |
| 1068 | _avatarLODDistanceMultiplier - DISTANCE_DECREASE_RATE); | 1071 | _avatarLODDistanceMultiplier - DISTANCE_DECREASE_RATE); |