From cbb64034b5daf1f93c1a9af35b49197a95f2da9b Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 21 Aug 2013 17:41:26 -0700 Subject: [PATCH 1/2] fix for collisions when wearing Oculus --- interface/src/avatar/MyAvatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 4ab5caf882..00898da333 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -172,7 +172,7 @@ void MyAvatar::simulate(float deltaTime, Transmitter* transmitter, float gyroCam if (_isCollisionsOn) { Camera* myCamera = Application::getInstance()->getCamera(); - if (myCamera->getMode() == CAMERA_MODE_FIRST_PERSON) { + if (myCamera->getMode() == CAMERA_MODE_FIRST_PERSON && !OculusManager::isConnected()) { _collisionRadius = myCamera->getAspectRatio() * (myCamera->getNearClip() / cos(myCamera->getFieldOfView() / 2.f)); _collisionRadius *= COLLISION_RADIUS_SCALAR; } else { From 818355dc1adc53de7760e2441274bbc460ea3fd7 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 23 Aug 2013 15:18:06 -0700 Subject: [PATCH 2/2] implementing @problem's proposed changes to menus --- interface/src/Application.cpp | 6 +- interface/src/Menu.cpp | 378 ++++++++++++++++++---------------- interface/src/Menu.h | 11 +- 3 files changed, 205 insertions(+), 190 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index cc95aec1fd..494a1e6976 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1041,10 +1041,8 @@ void Application::terminate() { LeapManager::terminate(); - if (Menu::getInstance()->isOptionChecked(MenuOption::SettingsAutosave)) { - Menu::getInstance()->saveSettings(); - _settings->sync(); - } + Menu::getInstance()->saveSettings(); + _settings->sync(); if (_enableNetworkThread) { _stopNetworkReceiveThread = true; diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 119f21df60..edb7b3cb67 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -52,12 +52,7 @@ Menu::Menu() : Application *appInstance = Application::getInstance(); QMenu* fileMenu = addMenu("File"); - (addActionToQMenuAndActionHash(fileMenu, - MenuOption::Quit, - Qt::CTRL | Qt::Key_Q, - appInstance, - SLOT(quit())))->setMenuRole(QAction::QuitRole); - + (addActionToQMenuAndActionHash(fileMenu, MenuOption::Preferences, Qt::CTRL | Qt::Key_Comma, @@ -66,159 +61,78 @@ Menu::Menu() : #if defined(Q_OS_MAC) && defined(QT_NO_DEBUG) // show "Check for Updates" in the menu - (addActionToQMenuAndActionHash(fileMenu, MenuOption::CheckForUpdates, 0, this, SLOT(checkForUpdates())))->setMenuRole(QAction::ApplicationSpecificRole); + (addActionToQMenuAndActionHash(fileMenu, + MenuOption::CheckForUpdates, + 0, + this, + SLOT(checkForUpdates())))->setMenuRole(QAction::ApplicationSpecificRole); #endif - QMenu* pairMenu = addMenu("Pair"); - addActionToQMenuAndActionHash(pairMenu, MenuOption::Pair, 0, PairingHandler::getInstance(), SLOT(sendPairRequest())); + addDisabledActionAndSeparator(fileMenu, "Voxels"); + addActionToQMenuAndActionHash(fileMenu, MenuOption::ExportVoxels, Qt::CTRL | Qt::Key_E, appInstance, SLOT(exportVoxels())); + addActionToQMenuAndActionHash(fileMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels())); + addDisabledActionAndSeparator(fileMenu, "Go"); + addActionToQMenuAndActionHash(fileMenu, + MenuOption::GoHome, + Qt::CTRL | Qt::Key_G, + appInstance->getAvatar(), + SLOT(goHome())); - QMenu* optionsMenu = addMenu("Options"); + addDisabledActionAndSeparator(fileMenu, "Settings"); + addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsImport, 0, this, SLOT(importSettings())); + addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsExport, 0, this, SLOT(exportSettings())); - addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::Mirror, Qt::Key_H); - addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::GyroLook, 0, true); - addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::HeadMouse); - addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::TransmitterDrive, 0, true); - addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::Gravity, Qt::SHIFT | Qt::Key_G, true); - addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::TestPing, 0, true); + addDisabledActionAndSeparator(fileMenu, "Devices"); + addActionToQMenuAndActionHash(fileMenu, MenuOption::Pair, 0, PairingHandler::getInstance(), SLOT(sendPairRequest())); + addCheckableActionToQMenuAndActionHash(fileMenu, MenuOption::TransmitterDrive, 0, true); - addCheckableActionToQMenuAndActionHash(optionsMenu, - MenuOption::Fullscreen, - Qt::Key_F, - false, - appInstance, - SLOT(setFullscreen(bool))); + (addActionToQMenuAndActionHash(fileMenu, + MenuOption::Quit, + Qt::CTRL | Qt::Key_Q, + appInstance, + SLOT(quit())))->setMenuRole(QAction::QuitRole); - addCheckableActionToQMenuAndActionHash(optionsMenu, - MenuOption::Webcam, - 0, - false, - appInstance->getWebcam(), - SLOT(setEnabled(bool))); + QMenu* editMenu = addMenu("Edit"); + addActionToQMenuAndActionHash(editMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels())); + addActionToQMenuAndActionHash(editMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels())); + addActionToQMenuAndActionHash(editMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels())); - addCheckableActionToQMenuAndActionHash(optionsMenu, - MenuOption::SkeletonTracking, - 0, - false, - appInstance->getWebcam(), - SLOT(setSkeletonTrackingOn(bool))); - - addCheckableActionToQMenuAndActionHash(optionsMenu, + addDisabledActionAndSeparator(editMenu, "Physics"); + addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::Gravity, Qt::SHIFT | Qt::Key_G, true); + addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::Collisions, 0, true, appInstance->getAvatar(), SLOT(setWantCollisionsOn(bool))); - addActionToQMenuAndActionHash(optionsMenu, - MenuOption::WebcamMode, - 0, - appInstance->getWebcam()->getGrabber(), - SLOT(cycleVideoSendMode())); - addCheckableActionToQMenuAndActionHash(optionsMenu, - MenuOption::WebcamTexture, - 0, - false, - appInstance->getWebcam()->getGrabber(), - SLOT(setDepthOnly(bool))); - - addActionToQMenuAndActionHash(optionsMenu, - MenuOption::GoHome, - Qt::CTRL | Qt::Key_G, - appInstance->getAvatar(), - SLOT(goHome())); - - QMenu* audioMenu = addMenu("Audio"); - addCheckableActionToQMenuAndActionHash(audioMenu, MenuOption::EchoAudio); - - QMenu* renderMenu = addMenu("Render"); - addCheckableActionToQMenuAndActionHash(renderMenu, - MenuOption::Voxels, - Qt::SHIFT | Qt::Key_V, - true, - appInstance, - SLOT(setRenderVoxels(bool))); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::VoxelTextures); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::Stars, 0, true); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::GroundPlane, 0, true); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::Avatars, 0, true); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::AvatarAsBalls); - - addActionToQMenuAndActionHash(renderMenu, - MenuOption::VoxelMode, - 0, - appInstance->getAvatar()->getVoxels(), - SLOT(cycleMode())); - - addActionToQMenuAndActionHash(renderMenu, - MenuOption::FaceMode, - 0, - &appInstance->getAvatar()->getHead().getFace(), - SLOT(cycleRenderMode())); - - addActionToQMenuAndActionHash(renderMenu, - MenuOption::GlowMode, - 0, - appInstance->getGlowEffect(), - SLOT(cycleRenderMode())); - - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::AmbientOcclusion); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::FrameTimer); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::LookAtVectors, 0, true); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::LookAtIndicator, 0, true); - addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::FirstPerson, Qt::Key_P, true); - - addActionToQMenuAndActionHash(renderMenu, - MenuOption::IncreaseAvatarSize, - Qt::Key_Plus, - appInstance->getAvatar(), - SLOT(increaseSize())); - addActionToQMenuAndActionHash(renderMenu, - MenuOption::DecreaseAvatarSize, - Qt::Key_Minus, - appInstance->getAvatar(), - SLOT(decreaseSize())); - addActionToQMenuAndActionHash(renderMenu, - MenuOption::ResetAvatarSize, - 0, - appInstance->getAvatar(), - SLOT(resetSize())); - QMenu* toolsMenu = addMenu("Tools"); - addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Stats, Qt::Key_Slash); - addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Log, Qt::CTRL | Qt::Key_L); - addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Oscilloscope, 0, true); - addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Bandwidth, 0, true); - addActionToQMenuAndActionHash(toolsMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails())); - addActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails())); - - QMenu* voxelMenu = addMenu("Voxels"); _voxelModeActionsGroup = new QActionGroup(this); _voxelModeActionsGroup->setExclusive(false); - QAction* addVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelAddMode, Qt::Key_V); + QAction* addVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelAddMode, Qt::Key_V); _voxelModeActionsGroup->addAction(addVoxelMode); - QAction* deleteVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelDeleteMode, Qt::Key_R); + QAction* deleteVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelDeleteMode, Qt::Key_R); _voxelModeActionsGroup->addAction(deleteVoxelMode); - QAction* colorVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelColorMode, Qt::Key_B); + QAction* colorVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelColorMode, Qt::Key_B); _voxelModeActionsGroup->addAction(colorVoxelMode); - QAction* selectVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelSelectMode, Qt::Key_O); + QAction* selectVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelSelectMode, Qt::Key_O); _voxelModeActionsGroup->addAction(selectVoxelMode); - QAction* getColorMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelGetColorMode, Qt::Key_G); + QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G); _voxelModeActionsGroup->addAction(getColorMode); // connect each of the voxel mode actions to the updateVoxelModeActionsSlot foreach (QAction* action, _voxelModeActionsGroup->actions()) { connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions())); } - - QAction* voxelPaintColor = addActionToQMenuAndActionHash(voxelMenu, + + QAction* voxelPaintColor = addActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelPaintColor, Qt::META | Qt::Key_C, this, @@ -230,29 +144,106 @@ Menu::Menu() : voxelPaintColor->setData(paintColor); voxelPaintColor->setIcon(Swatch::createIcon(paintColor)); - addActionToQMenuAndActionHash(voxelMenu, + addActionToQMenuAndActionHash(toolsMenu, MenuOption::DecreaseVoxelSize, QKeySequence::ZoomOut, appInstance, SLOT(decreaseVoxelSize())); - addActionToQMenuAndActionHash(voxelMenu, + addActionToQMenuAndActionHash(toolsMenu, MenuOption::IncreaseVoxelSize, QKeySequence::ZoomIn, appInstance, SLOT(increaseVoxelSize())); - addActionToQMenuAndActionHash(voxelMenu, MenuOption::ResetSwatchColors, 0, this, SLOT(resetSwatchColors())); - - addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::DestructiveAddVoxel); - - addActionToQMenuAndActionHash(voxelMenu, MenuOption::ExportVoxels, Qt::CTRL | Qt::Key_E, appInstance, SLOT(exportVoxels())); - addActionToQMenuAndActionHash(voxelMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels())); - addActionToQMenuAndActionHash(voxelMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels())); - addActionToQMenuAndActionHash(voxelMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels())); - addActionToQMenuAndActionHash(voxelMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels())); - - QMenu* debugMenu = addMenu("Debug"); + addActionToQMenuAndActionHash(toolsMenu, MenuOption::ResetSwatchColors, 0, this, SLOT(resetSwatchColors())); - QMenu* frustumMenu = debugMenu->addMenu("View Frustum Debugging Tools"); + + QMenu* viewMenu = addMenu("View"); + + addCheckableActionToQMenuAndActionHash(viewMenu, + MenuOption::Fullscreen, + Qt::Key_F, + false, + appInstance, + SLOT(setFullscreen(bool))); + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FirstPerson, Qt::Key_P, true); + + addActionToQMenuAndActionHash(viewMenu, + MenuOption::IncreaseAvatarSize, + Qt::Key_Plus, + appInstance->getAvatar(), + SLOT(increaseSize())); + addActionToQMenuAndActionHash(viewMenu, + MenuOption::DecreaseAvatarSize, + Qt::Key_Minus, + appInstance->getAvatar(), + SLOT(decreaseSize())); + addActionToQMenuAndActionHash(viewMenu, + MenuOption::ResetAvatarSize, + 0, + appInstance->getAvatar(), + SLOT(resetSize())); + + + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Mirror, Qt::Key_H); + + addCheckableActionToQMenuAndActionHash(viewMenu, + MenuOption::SkeletonTracking, + 0, + false, + appInstance->getWebcam(), + SLOT(setSkeletonTrackingOn(bool))); + + addDisabledActionAndSeparator(viewMenu, "Stats"); + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Stats, Qt::Key_Slash); + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Log, Qt::CTRL | Qt::Key_L); + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Oscilloscope, 0, true); + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Bandwidth, 0, true); + addActionToQMenuAndActionHash(viewMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails())); + addActionToQMenuAndActionHash(viewMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails())); + + QMenu* developerMenu = addMenu("Developer"); + addDisabledActionAndSeparator(developerMenu, "Rendering"); + + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::Voxels, + Qt::SHIFT | Qt::Key_V, + true, + appInstance, + SLOT(setRenderVoxels(bool))); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::VoxelTextures); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::AmbientOcclusion); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::Stars, 0, true); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::GroundPlane, 0, true); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::Avatars, 0, true); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::AvatarAsBalls); + + addActionToQMenuAndActionHash(developerMenu, + MenuOption::VoxelMode, + 0, + appInstance->getAvatar()->getVoxels(), + SLOT(cycleMode())); + + addActionToQMenuAndActionHash(developerMenu, + MenuOption::FaceMode, + 0, + &appInstance->getAvatar()->getHead().getFace(), + SLOT(cycleRenderMode())); + + addActionToQMenuAndActionHash(developerMenu, + MenuOption::GlowMode, + 0, + appInstance->getGlowEffect(), + SLOT(cycleRenderMode())); + + + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::LookAtVectors, 0, true); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::LookAtIndicator, 0, true); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::FrameTimer); + + addDisabledActionAndSeparator(developerMenu, "Testing"); + + QMenu* frustumMenu = developerMenu->addMenu("View Frustum Debugging Tools"); addCheckableActionToQMenuAndActionHash(frustumMenu, MenuOption::DisplayFrustum, Qt::SHIFT | Qt::Key_F); addActionToQMenuAndActionHash(frustumMenu, @@ -262,14 +253,14 @@ Menu::Menu() : SLOT(cycleFrustumRenderMode())); updateFrustumRenderModeAction(); - addActionToQMenuAndActionHash(debugMenu, MenuOption::RunTimingTests, 0, this, SLOT(runTests())); - addActionToQMenuAndActionHash(debugMenu, + addActionToQMenuAndActionHash(developerMenu, MenuOption::RunTimingTests, 0, this, SLOT(runTests())); + addActionToQMenuAndActionHash(developerMenu, MenuOption::TreeStats, Qt::SHIFT | Qt::Key_S, appInstance->getVoxels(), SLOT(collectStatsForTreesAndVBOs())); - QMenu* renderDebugMenu = debugMenu->addMenu("Render Debugging Tools"); + QMenu* renderDebugMenu = developerMenu->addMenu("Render Debugging Tools"); addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::PipelineWarnings); addActionToQMenuAndActionHash(renderDebugMenu, @@ -330,41 +321,29 @@ Menu::Menu() : Qt::CTRL | Qt::Key_T, appInstance->getVoxels(), SLOT(trueColorize())); + - addCheckableActionToQMenuAndActionHash(debugMenu, - MenuOption::SendVoxelColors, + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::Webcam, 0, - true, - appInstance->getAvatar(), - SLOT(setWantColor(bool))); - - addCheckableActionToQMenuAndActionHash(debugMenu, - MenuOption::LowRes, + false, + appInstance->getWebcam(), + SLOT(setEnabled(bool))); + + addActionToQMenuAndActionHash(developerMenu, + MenuOption::WebcamMode, + 0, + appInstance->getWebcam()->getGrabber(), + SLOT(cycleVideoSendMode())); + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::WebcamTexture, 0, - true, - appInstance->getAvatar(), - SLOT(setWantLowResMoving(bool))); + false, + appInstance->getWebcam()->getGrabber(), + SLOT(setDepthOnly(bool))); - addCheckableActionToQMenuAndActionHash(debugMenu, - MenuOption::DeltaSending, - 0, - true, - appInstance->getAvatar(), - SLOT(setWantDelta(bool))); - - addCheckableActionToQMenuAndActionHash(debugMenu, - MenuOption::OcclusionCulling, - Qt::SHIFT | Qt::Key_C, - true, - appInstance->getAvatar(), - SLOT(setWantOcclusionCulling(bool))); - - addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::CoverageMap, Qt::SHIFT | Qt::CTRL | Qt::Key_O); - addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::CoverageMapV2, Qt::SHIFT | Qt::CTRL | Qt::Key_P); - addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::SimulateLeapHand); - addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::TestRaveGlove); - - QMenu* audioDebugMenu = debugMenu->addMenu("Audio Debugging Tools"); + QMenu* audioDebugMenu = developerMenu->addMenu("Audio Debugging Tools"); + addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoAudio); addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::ListenModeNormal, Qt::CTRL | Qt::Key_1, @@ -381,12 +360,46 @@ Menu::Menu() : appInstance, SLOT(setListenModeSingleSource())); - QMenu* settingsMenu = addMenu("Settings"); - addCheckableActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsAutosave, 0, true); - addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsLoad, 0, this, SLOT(loadSettings())); - addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsSave, 0, this, SLOT(saveSettings())); - addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsImport, 0, this, SLOT(importSettings())); - addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsExport, 0, this, SLOT(exportSettings())); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::TestPing, 0, true); + + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::SendVoxelColors, + 0, + true, + appInstance->getAvatar(), + SLOT(setWantColor(bool))); + + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::LowRes, + 0, + true, + appInstance->getAvatar(), + SLOT(setWantLowResMoving(bool))); + + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::DeltaSending, + 0, + true, + appInstance->getAvatar(), + SLOT(setWantDelta(bool))); + + addCheckableActionToQMenuAndActionHash(developerMenu, + MenuOption::OcclusionCulling, + Qt::SHIFT | Qt::Key_C, + true, + appInstance->getAvatar(), + SLOT(setWantOcclusionCulling(bool))); + + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::CoverageMap, Qt::SHIFT | Qt::CTRL | Qt::Key_O); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::CoverageMapV2, Qt::SHIFT | Qt::CTRL | Qt::Key_P); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::SimulateLeapHand); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::TestRaveGlove); + + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::GyroLook, 0, true); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::HeadMouse); + + addDisabledActionAndSeparator(developerMenu, "Voxels"); + addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::DestructiveAddVoxel); } void Menu::loadSettings(QSettings* settings) { @@ -553,6 +566,11 @@ void Menu::handleViewFrustumOffsetKeyModifier(int key) { } } +void Menu::addDisabledActionAndSeparator(QMenu* destinationMenu, const QString& actionName) { + destinationMenu->addSeparator(); + (destinationMenu->addAction(actionName))->setEnabled(false); +} + QAction* Menu::addActionToQMenuAndActionHash(QMenu* destinationMenu, const QString actionName, const QKeySequence& shortcut, diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 252c9a8707..e484fe5c04 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -81,6 +81,8 @@ private: void scanMenuBar(settingsAction modifySetting, QSettings* set); void scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set); + /// helper method to have separators with labels that are also compatible with OS X + void addDisabledActionAndSeparator(QMenu* destinationMenu, const QString& actionName); QAction* addActionToQMenuAndActionHash(QMenu* destinationMenu, const QString actionName, const QKeySequence& shortcut = 0, @@ -116,10 +118,10 @@ namespace MenuOption { const QString BandwidthDetails = "Bandwidth Details"; const QString CheckForUpdates = "Check for Updates..."; const QString Collisions = "Collisions"; - const QString CopyVoxels = "Copy Voxels"; + const QString CopyVoxels = "Copy"; const QString CoverageMap = "Render Coverage Map"; const QString CoverageMapV2 = "Render Coverage Map V2"; - const QString CutVoxels = "Cut Voxels"; + const QString CutVoxels = "Cut"; const QString DecreaseAvatarSize = "Decrease Avatar Size"; const QString DecreaseVoxelSize = "Decrease Voxel Size"; const QString DestructiveAddVoxel = "Create Voxel is Destructive"; @@ -161,7 +163,7 @@ namespace MenuOption { const QString OcclusionCulling = "Occlusion Culling"; const QString Oscilloscope = "Audio Oscilloscope"; const QString Pair = "Pair"; - const QString PasteVoxels = "Paste Voxels"; + const QString PasteVoxels = "Paste"; const QString PipelineWarnings = "Show Render Pipeline Warnings"; const QString Preferences = "Preferences..."; const QString RandomizeVoxelColors = "Randomize Voxel TRUE Colors"; @@ -169,9 +171,6 @@ namespace MenuOption { const QString ResetSwatchColors = "Reset Swatch Colors"; const QString RunTimingTests = "Run Timing Tests"; const QString SendVoxelColors = "Colored Voxels"; - const QString SettingsAutosave = "Autosave"; - const QString SettingsLoad = "Load Settings"; - const QString SettingsSave = "Save Settings"; const QString SettingsImport = "Import Settings"; const QString SettingsExport = "Export Settings"; const QString ShowTrueColors = "Show TRUE Colors";