From f3b6e21a6d4fbe858c8d9305efe81992d3503b40 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Fri, 8 Nov 2013 13:58:48 -0800 Subject: [PATCH 1/2] Voxel click to fly is now an option in the Tools Menu --- interface/src/Application.cpp | 3 ++- interface/src/Menu.cpp | 3 +++ interface/src/Menu.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 5d7b7ee67b..7724ff0cd2 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1132,7 +1132,8 @@ void Application::mousePressEvent(QMouseEvent* event) { glm::vec3 myPosition = _myAvatar.getPosition(); // If there is not an action tool set (add, delete, color), move to this voxel - if (!(Menu::getInstance()->isOptionChecked(MenuOption::VoxelAddMode) || + if (Menu::getInstance()->isOptionChecked(MenuOption::ClickToFly) && + !(Menu::getInstance()->isOptionChecked(MenuOption::VoxelAddMode) || Menu::getInstance()->isOptionChecked(MenuOption::VoxelDeleteMode) || Menu::getInstance()->isOptionChecked(MenuOption::VoxelColorMode))) { _myAvatar.setMoveTarget(myPosition + (newTarget - myPosition) * PERCENTAGE_TO_MOVE_TOWARD); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 48f5a4ed3c..602d2131c2 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -170,6 +170,9 @@ Menu::Menu() : QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G); _voxelModeActionsGroup->addAction(getColorMode); + addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::ClickToFly); + + // connect each of the voxel mode actions to the updateVoxelModeActionsSlot foreach (QAction* action, _voxelModeActionsGroup->actions()) { connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions())); diff --git a/interface/src/Menu.h b/interface/src/Menu.h index dc8f6051a4..6e70fb44e4 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -208,6 +208,7 @@ namespace MenuOption { const QString OffAxisProjection = "Off-Axis Projection"; const QString OldVoxelCullingMode = "Old Voxel Culling Mode"; const QString TurnWithHead = "Turn using Head"; + const QString ClickToFly = "Fly to voxel on click"; const QString Oscilloscope = "Audio Oscilloscope"; const QString Pair = "Pair"; const QString PasteVoxels = "Paste"; From 2991c8af61c014e584592b00d5464022535faa2e Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Fri, 8 Nov 2013 14:12:04 -0800 Subject: [PATCH 2/2] screen does not flash when voxels are clicked --- interface/src/Application.cpp | 14 ++++++++------ interface/src/Audio.cpp | 3 ++- interface/src/Audio.h | 5 ++++- interface/src/avatar/MyAvatar.cpp | 2 +- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 7724ff0cd2..a1f255c52a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1124,7 +1124,7 @@ void Application::mousePressEvent(QMouseEvent* event) { _hoverVoxel.green / 255.f * GREEN_CLICK_FREQUENCY + _hoverVoxel.blue / 255.f * BLUE_CLICK_FREQUENCY) / 3.f; - _audio.startCollisionSound(1.0, frequency, 0.0, HOVER_VOXEL_DECAY); + _audio.startCollisionSound(1.0, frequency, 0.0, HOVER_VOXEL_DECAY, false); _isHoverVoxelSounding = true; const float PERCENTAGE_TO_MOVE_TOWARD = 0.90f; @@ -2039,7 +2039,7 @@ void Application::updateHoverVoxels(float deltaTime, glm::vec3& mouseRayOrigin, _hoverVoxelOriginalColor[1] = _hoverVoxel.green; _hoverVoxelOriginalColor[2] = _hoverVoxel.blue; _hoverVoxelOriginalColor[3] = 1; - _audio.startCollisionSound(1.0, HOVER_VOXEL_FREQUENCY * _hoverVoxel.s * TREE_SCALE, 0.0, HOVER_VOXEL_DECAY); + _audio.startCollisionSound(1.0, HOVER_VOXEL_FREQUENCY * _hoverVoxel.s * TREE_SCALE, 0.0, HOVER_VOXEL_DECAY, false); _isHoverVoxelSounding = true; } } @@ -3176,10 +3176,12 @@ void Application::displayOverlay() { glDisable(GL_LIGHTING); // Display a single screen-size quad to create an alpha blended 'collision' flash - float collisionSoundMagnitude = _audio.getCollisionSoundMagnitude(); - const float VISIBLE_COLLISION_SOUND_MAGNITUDE = 0.5f; - if (collisionSoundMagnitude > VISIBLE_COLLISION_SOUND_MAGNITUDE) { - renderCollisionOverlay(_glWidget->width(), _glWidget->height(), _audio.getCollisionSoundMagnitude()); + if (_audio.getCollisionFlashesScreen()) { + float collisionSoundMagnitude = _audio.getCollisionSoundMagnitude(); + const float VISIBLE_COLLISION_SOUND_MAGNITUDE = 0.5f; + if (collisionSoundMagnitude > VISIBLE_COLLISION_SOUND_MAGNITUDE) { + renderCollisionOverlay(_glWidget->width(), _glWidget->height(), _audio.getCollisionSoundMagnitude()); + } } #ifndef _WIN32 diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index 4006b484b4..d3b23f273a 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -676,11 +676,12 @@ void Audio::addProceduralSounds(int16_t* inputBuffer, // // Starts a collision sound. magnitude is 0-1, with 1 the loudest possible sound. // -void Audio::startCollisionSound(float magnitude, float frequency, float noise, float duration) { +void Audio::startCollisionSound(float magnitude, float frequency, float noise, float duration, bool flashScreen) { _collisionSoundMagnitude = magnitude; _collisionSoundFrequency = frequency; _collisionSoundNoise = noise; _collisionSoundDuration = duration; + _collisionFlashesScreen = flashScreen; } // ----------------------------------------------------------- // Accoustic ping (audio system round trip time determination) diff --git a/interface/src/Audio.h b/interface/src/Audio.h index 6dad16f366..ec8ca6989c 100644 --- a/interface/src/Audio.h +++ b/interface/src/Audio.h @@ -55,10 +55,12 @@ public: void lowPassFilter(int16_t* inputBuffer); - void startCollisionSound(float magnitude, float frequency, float noise, float duration); + void startCollisionSound(float magnitude, float frequency, float noise, float duration, bool flashScreen); float getCollisionSoundMagnitude() { return _collisionSoundMagnitude; } + bool getCollisionFlashesScreen() { return _collisionFlashesScreen; } + void ping(); void init(QGLWidget *parent = 0); @@ -102,6 +104,7 @@ private: float _collisionSoundFrequency; float _collisionSoundNoise; float _collisionSoundDuration; + bool _collisionFlashesScreen; int _proceduralEffectSample; float _heartbeatMagnitude; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 81636d4701..42a5190712 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1020,7 +1020,7 @@ void MyAvatar::updateCollisionSound(const glm::vec3 &penetration, float deltaTim fmin(COLLISION_LOUDNESS * velocityTowardCollision, 1.f), frequency * (1.f + velocityTangentToCollision / velocityTowardCollision), fmin(velocityTangentToCollision / velocityTowardCollision * NOISE_SCALING, 1.f), - 1.f - DURATION_SCALING * powf(frequency, 0.5f) / velocityTowardCollision); + 1.f - DURATION_SCALING * powf(frequency, 0.5f) / velocityTowardCollision, true); } }