History

Merge branch 'master' of git://github.com/highfidelity/hifi into audio-buffer-size

Ryan Huffman committed 11 years ago

Commit defb2cb2 parents bbfe2ff 162854c158 files · +501 −11918Browse files

Showing the changes to interface/src/Menu.cpp (1 of 158 files). Show all

Unified · Split

interface/src/Menu.cpp+27−73
@@ -109,8 +109,7 @@ Menu::Menu() : · 108 unmodified lines
109#if defined(Q_OS_MAC) || defined(Q_OS_WIN)109#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
110 _speechRecognizer(),110 _speechRecognizer(),
111#endif111#endif
112 _maxVoxels(DEFAULT_MAX_VOXELS_PER_SYSTEM),112 _octreeSizeScale(DEFAULT_OCTREE_SIZE_SCALE),
113 _voxelSizeScale(DEFAULT_OCTREE_SIZE_SCALE),
114 _oculusUIAngularSize(DEFAULT_OCULUS_UI_ANGULAR_SIZE),113 _oculusUIAngularSize(DEFAULT_OCULUS_UI_ANGULAR_SIZE),
115 _sixenseReticleMoveSpeed(DEFAULT_SIXENSE_RETICLE_MOVE_SPEED),114 _sixenseReticleMoveSpeed(DEFAULT_SIXENSE_RETICLE_MOVE_SPEED),
116 _invertSixenseButtons(DEFAULT_INVERT_SIXENSE_MOUSE_BUTTONS),115 _invertSixenseButtons(DEFAULT_INVERT_SIXENSE_MOUSE_BUTTONS),
@@ -119,7 +118,7 @@ Menu::Menu() : · 2 unmodified lines
119 _avatarLODIncreaseFPS(ADJUST_LOD_UP_FPS),118 _avatarLODIncreaseFPS(ADJUST_LOD_UP_FPS),
120 _avatarLODDistanceMultiplier(DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER),119 _avatarLODDistanceMultiplier(DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER),
121 _boundaryLevelAdjust(0),120 _boundaryLevelAdjust(0),
122 _maxVoxelPacketsPerSecond(DEFAULT_MAX_VOXEL_PPS),121 _maxOctreePacketsPerSecond(DEFAULT_MAX_OCTREE_PPS),
123 _lastAdjust(usecTimestampNow()),122 _lastAdjust(usecTimestampNow()),
124 _lastAvatarDetailDrop(usecTimestampNow()),123 _lastAvatarDetailDrop(usecTimestampNow()),
125 _fpsAverage(FIVE_SECONDS_OF_FRAMES),124 _fpsAverage(FIVE_SECONDS_OF_FRAMES),
@@ -316,8 +315,6 @@ Menu::Menu() : · 190 unmodified lines
316 avatar, SLOT(onToggleRagdoll()));315 avatar, SLOT(onToggleRagdoll()));
317 addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithAvatars,316 addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithAvatars,
318 0, true, avatar, SLOT(updateCollisionGroups()));317 0, true, avatar, SLOT(updateCollisionGroups()));
319 addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithVoxels,
320 0, false, avatar, SLOT(updateCollisionGroups()));
321 addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithEnvironment,318 addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithEnvironment,
322 0, false, avatar, SLOT(updateCollisionGroups()));319 0, false, avatar, SLOT(updateCollisionGroups()));
323 320
@@ -391,6 +388,9 @@ Menu::Menu() : · 67 unmodified lines
391 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Avatars, 0, true);388 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Avatars, 0, true);
392 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, true);389 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, true);
393 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Entities, 0, true);390 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Entities, 0, true);
391 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AmbientOcclusion);
392 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::DontFadeOnOctreeServerChanges);
393 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::DisableAutoAdjustLOD);
394 394
395 QMenu* shadowMenu = renderOptionsMenu->addMenu("Shadows");395 QMenu* shadowMenu = renderOptionsMenu->addMenu("Shadows");
396 QActionGroup* shadowGroup = new QActionGroup(shadowMenu);396 QActionGroup* shadowGroup = new QActionGroup(shadowMenu);
@@ -425,12 +425,6 @@ Menu::Menu() : · 28 unmodified lines
425 resolutionGroup->addAction(addCheckableActionToQMenuAndActionHash(resolutionMenu, MenuOption::RenderResolutionQuarter, 0, false));425 resolutionGroup->addAction(addCheckableActionToQMenuAndActionHash(resolutionMenu, MenuOption::RenderResolutionQuarter, 0, false));
426 426
427 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Stars, Qt::Key_Asterisk, true);427 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Stars, Qt::Key_Asterisk, true);
428 addCheckableActionToQMenuAndActionHash(renderOptionsMenu,
429 MenuOption::Voxels,
430 Qt::SHIFT | Qt::Key_V,
431 true,
432 appInstance,
433 SLOT(setRenderVoxels(bool)));
434 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::EnableGlowEffect, 0, true, 428 addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::EnableGlowEffect, 0, true,
435 DependencyManager::get<GlowEffect>().data(), SLOT(toggleGlowEffect(bool)));429 DependencyManager::get<GlowEffect>().data(), SLOT(toggleGlowEffect(bool)));
436 430
@@ -457,12 +451,6 @@ Menu::Menu() : · 20 unmodified lines
457 addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtVectors, 0, false);451 addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtVectors, 0, false);
458 addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderFocusIndicator, 0, false);452 addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderFocusIndicator, 0, false);
459 453
460 QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxels");
461 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::VoxelTextures);
462 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::AmbientOcclusion);
463 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontFadeOnVoxelServerChanges);
464 addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DisableAutoAdjustLOD);
465
466 QMenu* metavoxelOptionsMenu = developerMenu->addMenu("Metavoxels");454 QMenu* metavoxelOptionsMenu = developerMenu->addMenu("Metavoxels");
467 addCheckableActionToQMenuAndActionHash(metavoxelOptionsMenu, MenuOption::DisplayHermiteData, 0, false,455 addCheckableActionToQMenuAndActionHash(metavoxelOptionsMenu, MenuOption::DisplayHermiteData, 0, false,
468 Application::getInstance()->getMetavoxels(), SLOT(refreshVoxelData()));456 Application::getInstance()->getMetavoxels(), SLOT(refreshVoxelData()));
@@ -636,11 +624,6 @@ Menu::Menu() : · 167 unmodified lines
636 624
637 connect(appInstance->getAudio(), SIGNAL(muteToggled()), this, SLOT(audioMuteToggled()));625 connect(appInstance->getAudio(), SIGNAL(muteToggled()), this, SLOT(audioMuteToggled()));
638 626
639 addActionToQMenuAndActionHash(developerMenu, MenuOption::PasteToVoxel,
640 Qt::CTRL | Qt::SHIFT | Qt::Key_V,
641 this,
642 SLOT(pasteToVoxel()));
643
644#ifndef Q_OS_MAC627#ifndef Q_OS_MAC
645 QMenu* helpMenu = addMenu("Help");628 QMenu* helpMenu = addMenu("Help");
646 QAction* helpAction = helpMenu->addAction(MenuOption::AboutApp);629 QAction* helpAction = helpMenu->addAction(MenuOption::AboutApp);
@@ -681,9 +664,8 @@ void Menu::loadSettings(QSettings* settings) { · 34 unmodified lines
681 _realWorldFieldOfView = loadSetting(settings, "realWorldFieldOfView", DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES);664 _realWorldFieldOfView = loadSetting(settings, "realWorldFieldOfView", DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES);
682 _faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION);665 _faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION);
683 _faceshiftHostname = settings->value("faceshiftHostname", DEFAULT_FACESHIFT_HOSTNAME).toString();666 _faceshiftHostname = settings->value("faceshiftHostname", DEFAULT_FACESHIFT_HOSTNAME).toString();
684 _maxVoxels = loadSetting(settings, "maxVoxels", DEFAULT_MAX_VOXELS_PER_SYSTEM);667 _maxOctreePacketsPerSecond = loadSetting(settings, "maxOctreePPS", DEFAULT_MAX_OCTREE_PPS);
685 _maxVoxelPacketsPerSecond = loadSetting(settings, "maxVoxelsPPS", DEFAULT_MAX_VOXEL_PPS);668 _octreeSizeScale = loadSetting(settings, "octreeSizeScale", DEFAULT_OCTREE_SIZE_SCALE);
686 _voxelSizeScale = loadSetting(settings, "voxelSizeScale", DEFAULT_OCTREE_SIZE_SCALE);
687 _automaticAvatarLOD = settings->value("automaticAvatarLOD", true).toBool();669 _automaticAvatarLOD = settings->value("automaticAvatarLOD", true).toBool();
688 _avatarLODDecreaseFPS = loadSetting(settings, "avatarLODDecreaseFPS", DEFAULT_ADJUST_AVATAR_LOD_DOWN_FPS);670 _avatarLODDecreaseFPS = loadSetting(settings, "avatarLODDecreaseFPS", DEFAULT_ADJUST_AVATAR_LOD_DOWN_FPS);
689 _avatarLODIncreaseFPS = loadSetting(settings, "avatarLODIncreaseFPS", ADJUST_LOD_UP_FPS);671 _avatarLODIncreaseFPS = loadSetting(settings, "avatarLODIncreaseFPS", ADJUST_LOD_UP_FPS);
@@ -750,9 +732,8 @@ void Menu::saveSettings(QSettings* settings) { · 60 unmodified lines
750 settings->setValue("fieldOfView", _fieldOfView);732 settings->setValue("fieldOfView", _fieldOfView);
751 settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection);733 settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection);
752 settings->setValue("faceshiftHostname", _faceshiftHostname);734 settings->setValue("faceshiftHostname", _faceshiftHostname);
753 settings->setValue("maxVoxels", _maxVoxels);735 settings->setValue("maxOctreePPS", _maxOctreePacketsPerSecond);
754 settings->setValue("maxVoxelsPPS", _maxVoxelPacketsPerSecond);736 settings->setValue("octreeSizeScale", _octreeSizeScale);
755 settings->setValue("voxelSizeScale", _voxelSizeScale);
756 settings->setValue("automaticAvatarLOD", _automaticAvatarLOD);737 settings->setValue("automaticAvatarLOD", _automaticAvatarLOD);
757 settings->setValue("avatarLODDecreaseFPS", _avatarLODDecreaseFPS);738 settings->setValue("avatarLODDecreaseFPS", _avatarLODDecreaseFPS);
758 settings->setValue("avatarLODIncreaseFPS", _avatarLODIncreaseFPS);739 settings->setValue("avatarLODIncreaseFPS", _avatarLODIncreaseFPS);
@@ -1266,33 +1247,6 @@ void Menu::nameLocation() { · 507 unmodified lines
1266 _newLocationDialog->showNormal();1247 _newLocationDialog->showNormal();
1267}1248}
1268 1249
1269void Menu::pasteToVoxel() {
1270 QInputDialog pasteToOctalCodeDialog(Application::getInstance()->getWindow());
1271 pasteToOctalCodeDialog.setWindowTitle("Paste to Voxel");
1272 pasteToOctalCodeDialog.setLabelText("Octal Code:");
1273 QString octalCode = "";
1274 pasteToOctalCodeDialog.setTextValue(octalCode);
1275 pasteToOctalCodeDialog.setWindowFlags(Qt::Sheet);
1276 pasteToOctalCodeDialog.resize(pasteToOctalCodeDialog.parentWidget()->size().width() * DIALOG_RATIO_OF_WINDOW,
1277 pasteToOctalCodeDialog.size().height());
1278
1279 int dialogReturn = pasteToOctalCodeDialog.exec();
1280 if (dialogReturn == QDialog::Accepted && !pasteToOctalCodeDialog.textValue().isEmpty()) {
1281 // we got an octalCode to paste to...
1282 QString locationToPaste = pasteToOctalCodeDialog.textValue();
1283 unsigned char* octalCodeDestination = hexStringToOctalCode(locationToPaste);
1284
1285 // check to see if it was a legit octcode...
1286 if (locationToPaste == octalCodeToHexString(octalCodeDestination)) {
1287 Application::getInstance()->pasteVoxelsToOctalCode(octalCodeDestination);
1288 } else {
1289 qDebug() << "Problem with octcode...";
1290 }
1291 }
1292
1293 sendFakeEnterEvent();
1294}
1295
1296void Menu::toggleLoginMenuItem() {1250void Menu::toggleLoginMenuItem() {
1297 AccountManager& accountManager = AccountManager::getInstance();1251 AccountManager& accountManager = AccountManager::getInstance();
1298 1252
@@ -1462,8 +1416,8 @@ QString Menu::getLODFeedbackText() { · 163 unmodified lines
1462 }1416 }
1463 1417
1464 // distance feedback1418 // distance feedback
1465 float voxelSizeScale = getVoxelSizeScale();1419 float octreeSizeScale = getOctreeSizeScale();
1466 float relativeToDefault = voxelSizeScale / DEFAULT_OCTREE_SIZE_SCALE;1420 float relativeToDefault = octreeSizeScale / DEFAULT_OCTREE_SIZE_SCALE;
1467 QString result;1421 QString result;
1468 if (relativeToDefault > 1.01) {1422 if (relativeToDefault > 1.01) {
1469 result = QString("%1 further %2").arg(relativeToDefault,8,'f',2).arg(granularityFeedback);1423 result = QString("%1 further %2").arg(relativeToDefault,8,'f',2).arg(granularityFeedback);
@@ -1514,29 +1468,29 @@ void Menu::autoAdjustLOD(float currentFPS) { · 44 unmodified lines
1514 quint64 elapsed = now - _lastAdjust;1468 quint64 elapsed = now - _lastAdjust;
1515 1469
1516 if (elapsed > ADJUST_LOD_DOWN_DELAY && _fpsAverage.getAverage() < ADJUST_LOD_DOWN_FPS1470 if (elapsed > ADJUST_LOD_DOWN_DELAY && _fpsAverage.getAverage() < ADJUST_LOD_DOWN_FPS
1517 && _voxelSizeScale > ADJUST_LOD_MIN_SIZE_SCALE) {1471 && _octreeSizeScale > ADJUST_LOD_MIN_SIZE_SCALE) {
1518 1472
1519 _voxelSizeScale *= ADJUST_LOD_DOWN_BY;1473 _octreeSizeScale *= ADJUST_LOD_DOWN_BY;
1520 1474
1521 if (_voxelSizeScale < ADJUST_LOD_MIN_SIZE_SCALE) {1475 if (_octreeSizeScale < ADJUST_LOD_MIN_SIZE_SCALE) {
1522 _voxelSizeScale = ADJUST_LOD_MIN_SIZE_SCALE;1476 _octreeSizeScale = ADJUST_LOD_MIN_SIZE_SCALE;
1523 }1477 }
1524 changed = true;1478 changed = true;
1525 _lastAdjust = now;1479 _lastAdjust = now;
1526 qDebug() << "adjusting LOD down... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage()1480 qDebug() << "adjusting LOD down... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage()
1527 << "_voxelSizeScale=" << _voxelSizeScale;1481 << "_octreeSizeScale=" << _octreeSizeScale;
1528 }1482 }
1529 1483
1530 if (elapsed > ADJUST_LOD_UP_DELAY && _fpsAverage.getAverage() > ADJUST_LOD_UP_FPS1484 if (elapsed > ADJUST_LOD_UP_DELAY && _fpsAverage.getAverage() > ADJUST_LOD_UP_FPS
1531 && _voxelSizeScale < ADJUST_LOD_MAX_SIZE_SCALE) {1485 && _octreeSizeScale < ADJUST_LOD_MAX_SIZE_SCALE) {
1532 _voxelSizeScale *= ADJUST_LOD_UP_BY;1486 _octreeSizeScale *= ADJUST_LOD_UP_BY;
1533 if (_voxelSizeScale > ADJUST_LOD_MAX_SIZE_SCALE) {1487 if (_octreeSizeScale > ADJUST_LOD_MAX_SIZE_SCALE) {
1534 _voxelSizeScale = ADJUST_LOD_MAX_SIZE_SCALE;1488 _octreeSizeScale = ADJUST_LOD_MAX_SIZE_SCALE;
1535 }1489 }
1536 changed = true;1490 changed = true;
1537 _lastAdjust = now;1491 _lastAdjust = now;
1538 qDebug() << "adjusting LOD up... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage()1492 qDebug() << "adjusting LOD up... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage()
1539 << "_voxelSizeScale=" << _voxelSizeScale;1493 << "_octreeSizeScale=" << _octreeSizeScale;
1540 }1494 }
1541 1495
1542 if (changed) {1496 if (changed) {
@@ -1553,8 +1507,8 @@ void Menu::resetLODAdjust() { · 10 unmodified lines
1553 _lastAvatarDetailDrop = _lastAdjust = usecTimestampNow();1507 _lastAvatarDetailDrop = _lastAdjust = usecTimestampNow();
1554}1508}
1555 1509
1556void Menu::setVoxelSizeScale(float sizeScale) {1510void Menu::setOctreeSizeScale(float sizeScale) {
1557 _voxelSizeScale = sizeScale;1511 _octreeSizeScale = sizeScale;
1558 _shouldRenderTableNeedsRebuilding = true;1512 _shouldRenderTableNeedsRebuilding = true;
1559 bumpSettings();1513 bumpSettings();
1560}1514}
@@ -1565,14 +1519,14 @@ void Menu::setBoundaryLevelAdjust(int boundaryLevelAdjust) { · 4 unmodified lines
1565 bumpSettings();1519 bumpSettings();
1566}1520}
1567 1521
1568// TODO: This is essentially the same logic used to render voxels, but since models are more detailed then voxels1522// TODO: This is essentially the same logic used to render octree cells, but since models are more detailed then octree cells
1569// I've added a voxelToModelRatio that adjusts how much closer to a model you have to be to see it.1523// I've added a voxelToModelRatio that adjusts how much closer to a model you have to be to see it.
1570bool Menu::shouldRenderMesh(float largestDimension, float distanceToCamera) {1524bool Menu::shouldRenderMesh(float largestDimension, float distanceToCamera) {
1571 const float voxelToMeshRatio = 4.0f; // must be this many times closer to a mesh than a voxel to see it.1525 const float octreeToMeshRatio = 4.0f; // must be this many times closer to a mesh than a voxel to see it.
1572 float voxelSizeScale = getVoxelSizeScale();1526 float octreeSizeScale = getOctreeSizeScale();
1573 int boundaryLevelAdjust = getBoundaryLevelAdjust();1527 int boundaryLevelAdjust = getBoundaryLevelAdjust();
1574 float maxScale = (float)TREE_SCALE;1528 float maxScale = (float)TREE_SCALE;
1575 float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, voxelSizeScale) / voxelToMeshRatio;1529 float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale) / octreeToMeshRatio;
1576 1530
1577 if (_shouldRenderTableNeedsRebuilding) {1531 if (_shouldRenderTableNeedsRebuilding) {
1578 _shouldRenderTable.clear();1532 _shouldRenderTable.clear();