Showing the changes to interface/src/Menu.cpp (1 of 98 files). Show all
Unified · Split
| @@ -68,6 +68,7 @@ const float DEFAULT_FACESHIFT_EYE_DEFLECTION = 0.25f; · 67 unmodified lines | ||
| 68 | 68 | const float DEFAULT_AVATAR_LOD_DISTANCE_MULTIPLIER = 1.0f; |
| 69 | 69 | const int ONE_SECOND_OF_FRAMES = 60; |
| 70 | 70 | const int FIVE_SECONDS_OF_FRAMES = 5 * ONE_SECOND_OF_FRAMES; |
| 71 | +const float MUTE_RADIUS = 50; | |
| 71 | 72 | |
| 72 | 73 | Menu::Menu() : |
| 73 | 74 | _actionHash(), |
| @@ -271,9 +272,6 @@ Menu::Menu() : · 197 unmodified lines | ||
| 271 | 272 | addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Bandwidth, 0, true); |
| 272 | 273 | addActionToQMenuAndActionHash(viewMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails())); |
| 273 | 274 | addActionToQMenuAndActionHash(viewMenu, MenuOption::OctreeStats, 0, this, SLOT(octreeStatsDetails())); |
| 274 | − addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::AudioScope, 0, false, | |
| 275 | − appInstance->getAudio(), | |
| 276 | − SLOT(toggleScope())); | |
| 277 | 275 | |
| 278 | 276 | QMenu* developerMenu = addMenu("Developer"); |
| 279 | 277 | |
| @@ -291,7 +289,6 @@ Menu::Menu() : · 11 unmodified lines | ||
| 291 | 289 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Metavoxels, 0, true); |
| 292 | 290 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::BuckyBalls, 0, false); |
| 293 | 291 | addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Particles, 0, true); |
| 294 | − addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Models, 0, true); | |
| 295 | 292 | addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, Qt::SHIFT | Qt::Key_L, this, SLOT(lodTools())); |
| 296 | 293 | |
| 297 | 294 | QMenu* voxelOptionsMenu = developerMenu->addMenu("Voxel Options"); |
| @@ -308,6 +305,12 @@ Menu::Menu() : · 10 unmodified lines | ||
| 308 | 305 | addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DontFadeOnVoxelServerChanges); |
| 309 | 306 | addCheckableActionToQMenuAndActionHash(voxelOptionsMenu, MenuOption::DisableAutoAdjustLOD); |
| 310 | 307 | |
| 308 | + QMenu* modelOptionsMenu = developerMenu->addMenu("Model Options"); | |
| 309 | + addCheckableActionToQMenuAndActionHash(modelOptionsMenu, MenuOption::Models, 0, true); | |
| 310 | + addCheckableActionToQMenuAndActionHash(modelOptionsMenu, MenuOption::DisplayModelBounds, 0, false); | |
| 311 | + addCheckableActionToQMenuAndActionHash(modelOptionsMenu, MenuOption::DisplayModelElementProxy, 0, false); | |
| 312 | + addCheckableActionToQMenuAndActionHash(modelOptionsMenu, MenuOption::DisplayModelElementChildProxies, 0, false); | |
| 313 | + | |
| 311 | 314 | QMenu* avatarOptionsMenu = developerMenu->addMenu("Avatar Options"); |
| 312 | 315 | |
| 313 | 316 | addCheckableActionToQMenuAndActionHash(avatarOptionsMenu, MenuOption::Avatars, 0, true); |
| @@ -370,20 +373,6 @@ Menu::Menu() : · 56 unmodified lines | ||
| 370 | 373 | addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::PipelineWarnings); |
| 371 | 374 | addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::SuppressShortTimings); |
| 372 | 375 | |
| 373 | − addCheckableActionToQMenuAndActionHash(renderDebugMenu, | |
| 374 | − MenuOption::CullSharedFaces, | |
| 375 | − Qt::CTRL | Qt::SHIFT | Qt::Key_C, | |
| 376 | − false, | |
| 377 | − appInstance->getVoxels(), | |
| 378 | − SLOT(cullSharedFaces())); | |
| 379 | − | |
| 380 | − addCheckableActionToQMenuAndActionHash(renderDebugMenu, | |
| 381 | − MenuOption::ShowCulledSharedFaces, | |
| 382 | − 0, | |
| 383 | − false, | |
| 384 | − appInstance->getVoxels(), | |
| 385 | − SLOT(showCulledSharedFaces())); | |
| 386 | − | |
| 387 | 376 | QMenu* audioDebugMenu = developerMenu->addMenu("Audio Debugging Tools"); |
| 388 | 377 | addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioNoiseReduction, |
| 389 | 378 | 0, |
| @@ -397,13 +386,21 @@ Menu::Menu() : · 7 unmodified lines | ||
| 397 | 386 | false, |
| 398 | 387 | appInstance->getAudio(), |
| 399 | 388 | SLOT(toggleMute())); |
| 389 | + addActionToQMenuAndActionHash(audioDebugMenu, | |
| 390 | + MenuOption::MuteEnvironment, | |
| 391 | + 0, | |
| 392 | + this, | |
| 393 | + SLOT(muteEnvironment())); | |
| 400 | 394 | addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioToneInjection, |
| 401 | 395 | 0, |
| 402 | 396 | false, |
| 403 | 397 | appInstance->getAudio(), |
| 404 | 398 | SLOT(toggleToneInjection())); |
| 399 | + addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioScope, Qt::CTRL | Qt::Key_P, false, | |
| 400 | + appInstance->getAudio(), | |
| 401 | + SLOT(toggleScope())); | |
| 405 | 402 | addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioScopePause, |
| 406 | − Qt::CTRL | Qt::Key_P, | |
| 403 | + Qt::CTRL | Qt::SHIFT | Qt::Key_P , | |
| 407 | 404 | false, |
| 408 | 405 | appInstance->getAudio(), |
| 409 | 406 | SLOT(toggleScopePause())); |
| @@ -894,7 +891,7 @@ void Menu::goToDomainDialog() { · 484 unmodified lines | ||
| 894 | 891 | } |
| 895 | 892 | |
| 896 | 893 | void Menu::goToOrientation(QString orientation) { |
| 897 | − LocationManager::getInstance().goToDestination(orientation); | |
| 894 | + LocationManager::getInstance().goToOrientation(orientation); | |
| 898 | 895 | } |
| 899 | 896 | |
| 900 | 897 | bool Menu::goToDestination(QString destination) { |
| @@ -975,9 +972,7 @@ void Menu::goToUser(const QString& user) { · 74 unmodified lines | ||
| 975 | 972 | /// Open a url, shortcutting any "hifi" scheme URLs to the local application. |
| 976 | 973 | void Menu::openUrl(const QUrl& url) { |
| 977 | 974 | if (url.scheme() == "hifi") { |
| 978 | − QString path = url.toString(QUrl::RemoveScheme); | |
| 979 | − path = path.remove(QRegExp("^:?/*")); | |
| 980 | − goTo(path); | |
| 975 | + goToURL(url.toString()); | |
| 981 | 976 | } else { |
| 982 | 977 | QDesktopServices::openUrl(url); |
| 983 | 978 | } |
| @@ -1002,6 +997,30 @@ void Menu::multipleDestinationsDecision(const QJsonObject& userData, const QJson · 18 unmodified lines | ||
| 1002 | 997 | disconnect(manager, &LocationManager::multipleDestinationsFound, this, &Menu::multipleDestinationsDecision); |
| 1003 | 998 | } |
| 1004 | 999 | |
| 1000 | +void Menu::muteEnvironment() { | |
| 1001 | + int headerSize = numBytesForPacketHeaderGivenPacketType(PacketTypeMuteEnvironment); | |
| 1002 | + int packetSize = headerSize + sizeof(glm::vec3) + sizeof(float); | |
| 1003 | + | |
| 1004 | + glm::vec3 position = Application::getInstance()->getAvatar()->getPosition(); | |
| 1005 | + | |
| 1006 | + char* packet = (char*)malloc(packetSize); | |
| 1007 | + populatePacketHeader(packet, PacketTypeMuteEnvironment); | |
| 1008 | + memcpy(packet + headerSize, &position, sizeof(glm::vec3)); | |
| 1009 | + memcpy(packet + headerSize + sizeof(glm::vec3), &MUTE_RADIUS, sizeof(float)); | |
| 1010 | + | |
| 1011 | + QByteArray mutePacket(packet, packetSize); | |
| 1012 | + | |
| 1013 | + // grab our audio mixer from the NodeList, if it exists | |
| 1014 | + SharedNodePointer audioMixer = NodeList::getInstance()->soloNodeOfType(NodeType::AudioMixer); | |
| 1015 | + | |
| 1016 | + if (audioMixer) { | |
| 1017 | + // send off this mute packet | |
| 1018 | + NodeList::getInstance()->writeDatagram(mutePacket, audioMixer); | |
| 1019 | + } | |
| 1020 | + | |
| 1021 | + free(packet); | |
| 1022 | +} | |
| 1023 | + | |
| 1005 | 1024 | void Menu::goToLocation() { |
| 1006 | 1025 | MyAvatar* myAvatar = Application::getInstance()->getAvatar(); |
| 1007 | 1026 | glm::vec3 avatarPos = myAvatar->getPosition(); |