Showing the changes to interface/src/Menu.cpp (1 of 158 files). Show all
Unified · Split
| @@ -109,8 +109,7 @@ Menu::Menu() : · 108 unmodified lines | ||
| 109 | 109 | #if defined(Q_OS_MAC) || defined(Q_OS_WIN) |
| 110 | 110 | _speechRecognizer(), |
| 111 | 111 | #endif |
| 112 | − _maxVoxels(DEFAULT_MAX_VOXELS_PER_SYSTEM), | |
| 113 | − _voxelSizeScale(DEFAULT_OCTREE_SIZE_SCALE), | |
| 112 | + _octreeSizeScale(DEFAULT_OCTREE_SIZE_SCALE), | |
| 114 | 113 | _oculusUIAngularSize(DEFAULT_OCULUS_UI_ANGULAR_SIZE), |
| 115 | 114 | _sixenseReticleMoveSpeed(DEFAULT_SIXENSE_RETICLE_MOVE_SPEED), |
| 116 | 115 | _invertSixenseButtons(DEFAULT_INVERT_SIXENSE_MOUSE_BUTTONS), |
| @@ -119,7 +118,7 @@ Menu::Menu() : · 2 unmodified lines | ||
| 119 | 118 | _avatarLODIncreaseFPS(ADJUST_LOD_UP_FPS), |
| 120 | 119 | _avatarLODDistanceMultiplier(DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER), |
| 121 | 120 | _boundaryLevelAdjust(0), |
| 122 | − _maxVoxelPacketsPerSecond(DEFAULT_MAX_VOXEL_PPS), | |
| 121 | + _maxOctreePacketsPerSecond(DEFAULT_MAX_OCTREE_PPS), | |
| 123 | 122 | _lastAdjust(usecTimestampNow()), |
| 124 | 123 | _lastAvatarDetailDrop(usecTimestampNow()), |
| 125 | 124 | _fpsAverage(FIVE_SECONDS_OF_FRAMES), |
| @@ -316,8 +315,6 @@ Menu::Menu() : · 190 unmodified lines | ||
| 316 | 315 | avatar, SLOT(onToggleRagdoll())); |
| 317 | 316 | addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithAvatars, |
| 318 | 317 | 0, true, avatar, SLOT(updateCollisionGroups())); |
| 319 | − addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithVoxels, | |
| 320 | − 0, false, avatar, SLOT(updateCollisionGroups())); | |
| 321 | 318 | addCheckableActionToQMenuAndActionHash(collisionsMenu, MenuOption::CollideWithEnvironment, |
| 322 | 319 | 0, false, avatar, SLOT(updateCollisionGroups())); |
| 323 | 320 | |
| @@ -391,6 +388,9 @@ Menu::Menu() : · 67 unmodified lines | ||
| 391 | 388 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Avatars, 0, true); |
| 392 | 389 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, true); |
| 393 | 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 | 395 | QMenu* shadowMenu = renderOptionsMenu->addMenu("Shadows"); |
| 396 | 396 | QActionGroup* shadowGroup = new QActionGroup(shadowMenu); |
| @@ -425,12 +425,6 @@ Menu::Menu() : · 28 unmodified lines | ||
| 425 | 425 | resolutionGroup->addAction(addCheckableActionToQMenuAndActionHash(resolutionMenu, MenuOption::RenderResolutionQuarter, 0, false)); |
| 426 | 426 | |
| 427 | 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 | 428 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::EnableGlowEffect, 0, true, |
| 435 | 429 | DependencyManager::get<GlowEffect>().data(), SLOT(toggleGlowEffect(bool))); |
| 436 | 430 | |
| @@ -457,12 +451,6 @@ Menu::Menu() : · 20 unmodified lines | ||
| 457 | 451 | addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtVectors, 0, false); |
| 458 | 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 | 454 | QMenu* metavoxelOptionsMenu = developerMenu->addMenu("Metavoxels"); |
| 467 | 455 | addCheckableActionToQMenuAndActionHash(metavoxelOptionsMenu, MenuOption::DisplayHermiteData, 0, false, |
| 468 | 456 | Application::getInstance()->getMetavoxels(), SLOT(refreshVoxelData())); |
| @@ -636,11 +624,6 @@ Menu::Menu() : · 167 unmodified lines | ||
| 636 | 624 | |
| 637 | 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 | 627 | #ifndef Q_OS_MAC |
| 645 | 628 | QMenu* helpMenu = addMenu("Help"); |
| 646 | 629 | QAction* helpAction = helpMenu->addAction(MenuOption::AboutApp); |
| @@ -681,9 +664,8 @@ void Menu::loadSettings(QSettings* settings) { · 34 unmodified lines | ||
| 681 | 664 | _realWorldFieldOfView = loadSetting(settings, "realWorldFieldOfView", DEFAULT_REAL_WORLD_FIELD_OF_VIEW_DEGREES); |
| 682 | 665 | _faceshiftEyeDeflection = loadSetting(settings, "faceshiftEyeDeflection", DEFAULT_FACESHIFT_EYE_DEFLECTION); |
| 683 | 666 | _faceshiftHostname = settings->value("faceshiftHostname", DEFAULT_FACESHIFT_HOSTNAME).toString(); |
| 684 | − _maxVoxels = loadSetting(settings, "maxVoxels", DEFAULT_MAX_VOXELS_PER_SYSTEM); | |
| 685 | − _maxVoxelPacketsPerSecond = loadSetting(settings, "maxVoxelsPPS", DEFAULT_MAX_VOXEL_PPS); | |
| 686 | − _voxelSizeScale = loadSetting(settings, "voxelSizeScale", DEFAULT_OCTREE_SIZE_SCALE); | |
| 667 | + _maxOctreePacketsPerSecond = loadSetting(settings, "maxOctreePPS", DEFAULT_MAX_OCTREE_PPS); | |
| 668 | + _octreeSizeScale = loadSetting(settings, "octreeSizeScale", DEFAULT_OCTREE_SIZE_SCALE); | |
| 687 | 669 | _automaticAvatarLOD = settings->value("automaticAvatarLOD", true).toBool(); |
| 688 | 670 | _avatarLODDecreaseFPS = loadSetting(settings, "avatarLODDecreaseFPS", DEFAULT_ADJUST_AVATAR_LOD_DOWN_FPS); |
| 689 | 671 | _avatarLODIncreaseFPS = loadSetting(settings, "avatarLODIncreaseFPS", ADJUST_LOD_UP_FPS); |
| @@ -750,9 +732,8 @@ void Menu::saveSettings(QSettings* settings) { · 60 unmodified lines | ||
| 750 | 732 | settings->setValue("fieldOfView", _fieldOfView); |
| 751 | 733 | settings->setValue("faceshiftEyeDeflection", _faceshiftEyeDeflection); |
| 752 | 734 | settings->setValue("faceshiftHostname", _faceshiftHostname); |
| 753 | − settings->setValue("maxVoxels", _maxVoxels); | |
| 754 | − settings->setValue("maxVoxelsPPS", _maxVoxelPacketsPerSecond); | |
| 755 | − settings->setValue("voxelSizeScale", _voxelSizeScale); | |
| 735 | + settings->setValue("maxOctreePPS", _maxOctreePacketsPerSecond); | |
| 736 | + settings->setValue("octreeSizeScale", _octreeSizeScale); | |
| 756 | 737 | settings->setValue("automaticAvatarLOD", _automaticAvatarLOD); |
| 757 | 738 | settings->setValue("avatarLODDecreaseFPS", _avatarLODDecreaseFPS); |
| 758 | 739 | settings->setValue("avatarLODIncreaseFPS", _avatarLODIncreaseFPS); |
| @@ -1266,33 +1247,6 @@ void Menu::nameLocation() { · 507 unmodified lines | ||
| 1266 | 1247 | _newLocationDialog->showNormal(); |
| 1267 | 1248 | } |
| 1268 | 1249 | |
| 1269 | −void 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 | − | |
| 1296 | 1250 | void Menu::toggleLoginMenuItem() { |
| 1297 | 1251 | AccountManager& accountManager = AccountManager::getInstance(); |
| 1298 | 1252 | |
| @@ -1462,8 +1416,8 @@ QString Menu::getLODFeedbackText() { · 163 unmodified lines | ||
| 1462 | 1416 | } |
| 1463 | 1417 | |
| 1464 | 1418 | // distance feedback |
| 1465 | − float voxelSizeScale = getVoxelSizeScale(); | |
| 1466 | − float relativeToDefault = voxelSizeScale / DEFAULT_OCTREE_SIZE_SCALE; | |
| 1419 | + float octreeSizeScale = getOctreeSizeScale(); | |
| 1420 | + float relativeToDefault = octreeSizeScale / DEFAULT_OCTREE_SIZE_SCALE; | |
| 1467 | 1421 | QString result; |
| 1468 | 1422 | if (relativeToDefault > 1.01) { |
| 1469 | 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 | 1468 | quint64 elapsed = now - _lastAdjust; |
| 1515 | 1469 | |
| 1516 | 1470 | 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) { | |
| 1522 | − _voxelSizeScale = ADJUST_LOD_MIN_SIZE_SCALE; | |
| 1475 | + if (_octreeSizeScale < ADJUST_LOD_MIN_SIZE_SCALE) { | |
| 1476 | + _octreeSizeScale = ADJUST_LOD_MIN_SIZE_SCALE; | |
| 1523 | 1477 | } |
| 1524 | 1478 | changed = true; |
| 1525 | 1479 | _lastAdjust = now; |
| 1526 | 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 | 1484 | if (elapsed > ADJUST_LOD_UP_DELAY && _fpsAverage.getAverage() > ADJUST_LOD_UP_FPS |
| 1531 | − && _voxelSizeScale < ADJUST_LOD_MAX_SIZE_SCALE) { | |
| 1532 | − _voxelSizeScale *= ADJUST_LOD_UP_BY; | |
| 1533 | − if (_voxelSizeScale > ADJUST_LOD_MAX_SIZE_SCALE) { | |
| 1534 | − _voxelSizeScale = ADJUST_LOD_MAX_SIZE_SCALE; | |
| 1485 | + && _octreeSizeScale < ADJUST_LOD_MAX_SIZE_SCALE) { | |
| 1486 | + _octreeSizeScale *= ADJUST_LOD_UP_BY; | |
| 1487 | + if (_octreeSizeScale > ADJUST_LOD_MAX_SIZE_SCALE) { | |
| 1488 | + _octreeSizeScale = ADJUST_LOD_MAX_SIZE_SCALE; | |
| 1535 | 1489 | } |
| 1536 | 1490 | changed = true; |
| 1537 | 1491 | _lastAdjust = now; |
| 1538 | 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 | 1496 | if (changed) { |
| @@ -1553,8 +1507,8 @@ void Menu::resetLODAdjust() { · 10 unmodified lines | ||
| 1553 | 1507 | _lastAvatarDetailDrop = _lastAdjust = usecTimestampNow(); |
| 1554 | 1508 | } |
| 1555 | 1509 | |
| 1556 | −void Menu::setVoxelSizeScale(float sizeScale) { | |
| 1557 | − _voxelSizeScale = sizeScale; | |
| 1510 | +void Menu::setOctreeSizeScale(float sizeScale) { | |
| 1511 | + _octreeSizeScale = sizeScale; | |
| 1558 | 1512 | _shouldRenderTableNeedsRebuilding = true; |
| 1559 | 1513 | bumpSettings(); |
| 1560 | 1514 | } |
| @@ -1565,14 +1519,14 @@ void Menu::setBoundaryLevelAdjust(int boundaryLevelAdjust) { · 4 unmodified lines | ||
| 1565 | 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 voxels | |
| 1522 | +// TODO: This is essentially the same logic used to render octree cells, but since models are more detailed then octree cells | |
| 1569 | 1523 | // I've added a voxelToModelRatio that adjusts how much closer to a model you have to be to see it. |
| 1570 | 1524 | bool 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. | |
| 1572 | − float voxelSizeScale = getVoxelSizeScale(); | |
| 1525 | + const float octreeToMeshRatio = 4.0f; // must be this many times closer to a mesh than a voxel to see it. | |
| 1526 | + float octreeSizeScale = getOctreeSizeScale(); | |
| 1573 | 1527 | int boundaryLevelAdjust = getBoundaryLevelAdjust(); |
| 1574 | 1528 | float maxScale = (float)TREE_SCALE; |
| 1575 | − float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, voxelSizeScale) / voxelToMeshRatio; | |
| 1529 | + float visibleDistanceAtMaxScale = boundaryDistanceForRenderLevel(boundaryLevelAdjust, octreeSizeScale) / octreeToMeshRatio; | |
| 1576 | 1530 | |
| 1577 | 1531 | if (_shouldRenderTableNeedsRebuilding) { |
| 1578 | 1532 | _shouldRenderTable.clear(); |