Merge pull request #1232 from PhilipRosedale/master

Voxel click to fly defaults OFF, in tools menu
This commit is contained in:
ZappoMan 2013-11-08 14:46:43 -08:00
commit 24114bf7d9
6 changed files with 21 additions and 10 deletions

View file

@ -1124,7 +1124,7 @@ void Application::mousePressEvent(QMouseEvent* event) {
_hoverVoxel.green / 255.f * GREEN_CLICK_FREQUENCY + _hoverVoxel.green / 255.f * GREEN_CLICK_FREQUENCY +
_hoverVoxel.blue / 255.f * BLUE_CLICK_FREQUENCY) / 3.f; _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; _isHoverVoxelSounding = true;
const float PERCENTAGE_TO_MOVE_TOWARD = 0.90f; const float PERCENTAGE_TO_MOVE_TOWARD = 0.90f;
@ -1132,7 +1132,8 @@ void Application::mousePressEvent(QMouseEvent* event) {
glm::vec3 myPosition = _myAvatar.getPosition(); glm::vec3 myPosition = _myAvatar.getPosition();
// If there is not an action tool set (add, delete, color), move to this voxel // 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::VoxelDeleteMode) ||
Menu::getInstance()->isOptionChecked(MenuOption::VoxelColorMode))) { Menu::getInstance()->isOptionChecked(MenuOption::VoxelColorMode))) {
_myAvatar.setMoveTarget(myPosition + (newTarget - myPosition) * PERCENTAGE_TO_MOVE_TOWARD); _myAvatar.setMoveTarget(myPosition + (newTarget - myPosition) * PERCENTAGE_TO_MOVE_TOWARD);
@ -2038,7 +2039,7 @@ void Application::updateHoverVoxels(float deltaTime, glm::vec3& mouseRayOrigin,
_hoverVoxelOriginalColor[1] = _hoverVoxel.green; _hoverVoxelOriginalColor[1] = _hoverVoxel.green;
_hoverVoxelOriginalColor[2] = _hoverVoxel.blue; _hoverVoxelOriginalColor[2] = _hoverVoxel.blue;
_hoverVoxelOriginalColor[3] = 1; _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; _isHoverVoxelSounding = true;
} }
} }
@ -3175,11 +3176,13 @@ void Application::displayOverlay() {
glDisable(GL_LIGHTING); glDisable(GL_LIGHTING);
// Display a single screen-size quad to create an alpha blended 'collision' flash // Display a single screen-size quad to create an alpha blended 'collision' flash
if (_audio.getCollisionFlashesScreen()) {
float collisionSoundMagnitude = _audio.getCollisionSoundMagnitude(); float collisionSoundMagnitude = _audio.getCollisionSoundMagnitude();
const float VISIBLE_COLLISION_SOUND_MAGNITUDE = 0.5f; const float VISIBLE_COLLISION_SOUND_MAGNITUDE = 0.5f;
if (collisionSoundMagnitude > VISIBLE_COLLISION_SOUND_MAGNITUDE) { if (collisionSoundMagnitude > VISIBLE_COLLISION_SOUND_MAGNITUDE) {
renderCollisionOverlay(_glWidget->width(), _glWidget->height(), _audio.getCollisionSoundMagnitude()); renderCollisionOverlay(_glWidget->width(), _glWidget->height(), _audio.getCollisionSoundMagnitude());
} }
}
#ifndef _WIN32 #ifndef _WIN32
if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) { if (Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {

View file

@ -676,11 +676,12 @@ void Audio::addProceduralSounds(int16_t* inputBuffer,
// //
// Starts a collision sound. magnitude is 0-1, with 1 the loudest possible sound. // 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; _collisionSoundMagnitude = magnitude;
_collisionSoundFrequency = frequency; _collisionSoundFrequency = frequency;
_collisionSoundNoise = noise; _collisionSoundNoise = noise;
_collisionSoundDuration = duration; _collisionSoundDuration = duration;
_collisionFlashesScreen = flashScreen;
} }
// ----------------------------------------------------------- // -----------------------------------------------------------
// Accoustic ping (audio system round trip time determination) // Accoustic ping (audio system round trip time determination)

View file

@ -55,10 +55,12 @@ public:
void lowPassFilter(int16_t* inputBuffer); 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; } float getCollisionSoundMagnitude() { return _collisionSoundMagnitude; }
bool getCollisionFlashesScreen() { return _collisionFlashesScreen; }
void ping(); void ping();
void init(QGLWidget *parent = 0); void init(QGLWidget *parent = 0);
@ -102,6 +104,7 @@ private:
float _collisionSoundFrequency; float _collisionSoundFrequency;
float _collisionSoundNoise; float _collisionSoundNoise;
float _collisionSoundDuration; float _collisionSoundDuration;
bool _collisionFlashesScreen;
int _proceduralEffectSample; int _proceduralEffectSample;
float _heartbeatMagnitude; float _heartbeatMagnitude;

View file

@ -170,6 +170,9 @@ Menu::Menu() :
QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G); QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G);
_voxelModeActionsGroup->addAction(getColorMode); _voxelModeActionsGroup->addAction(getColorMode);
addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::ClickToFly);
// connect each of the voxel mode actions to the updateVoxelModeActionsSlot // connect each of the voxel mode actions to the updateVoxelModeActionsSlot
foreach (QAction* action, _voxelModeActionsGroup->actions()) { foreach (QAction* action, _voxelModeActionsGroup->actions()) {
connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions())); connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions()));

View file

@ -208,6 +208,7 @@ namespace MenuOption {
const QString OffAxisProjection = "Off-Axis Projection"; const QString OffAxisProjection = "Off-Axis Projection";
const QString OldVoxelCullingMode = "Old Voxel Culling Mode"; const QString OldVoxelCullingMode = "Old Voxel Culling Mode";
const QString TurnWithHead = "Turn using Head"; const QString TurnWithHead = "Turn using Head";
const QString ClickToFly = "Fly to voxel on click";
const QString Oscilloscope = "Audio Oscilloscope"; const QString Oscilloscope = "Audio Oscilloscope";
const QString Pair = "Pair"; const QString Pair = "Pair";
const QString PasteVoxels = "Paste"; const QString PasteVoxels = "Paste";

View file

@ -1020,7 +1020,7 @@ void MyAvatar::updateCollisionSound(const glm::vec3 &penetration, float deltaTim
fmin(COLLISION_LOUDNESS * velocityTowardCollision, 1.f), fmin(COLLISION_LOUDNESS * velocityTowardCollision, 1.f),
frequency * (1.f + velocityTangentToCollision / velocityTowardCollision), frequency * (1.f + velocityTangentToCollision / velocityTowardCollision),
fmin(velocityTangentToCollision / velocityTowardCollision * NOISE_SCALING, 1.f), 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);
} }
} }