From 38d8041bfb130bf095fb20b8b6ff023bd25ea7e3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 15 Jul 2013 16:41:20 -0700 Subject: [PATCH 1/2] kill local voxels when voxel rendering is turned off --- interface/src/Application.cpp | 9 +++++++-- interface/src/Application.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 4f17cd2221..9771cc8255 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1244,6 +1244,12 @@ void Application::setRenderWarnings(bool renderWarnings) { _voxels.setRenderPipelineWarnings(renderWarnings); } +void Application::setRenderVoxels(bool voxelRender) { + if (voxelRender) { + doKillLocalVoxels(); + } +} + void Application::doKillLocalVoxels() { _wantToKillLocalVoxels = true; } @@ -1554,9 +1560,8 @@ void Application::initMenu() { optionsMenu->addAction("Go Home", this, SLOT(goHome())); QMenu* renderMenu = menuBar->addMenu("Render"); - (_renderVoxels = renderMenu->addAction("Voxels"))->setCheckable(true); + (_renderVoxels = renderMenu->addAction("Voxels", this, SLOT(setRenderVoxels(bool)), Qt::SHIFT | Qt::Key_V))->setCheckable(true); _renderVoxels->setChecked(true); - _renderVoxels->setShortcut(Qt::SHIFT | Qt::Key_V); (_renderVoxelTextures = renderMenu->addAction("Voxel Textures"))->setCheckable(true); (_renderStarsOn = renderMenu->addAction("Stars"))->setCheckable(true); _renderStarsOn->setChecked(true); diff --git a/interface/src/Application.h b/interface/src/Application.h index cb1335887d..4e4101408f 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -128,6 +128,7 @@ private slots: void cycleFrustumRenderMode(); void setRenderWarnings(bool renderWarnings); + void setRenderVoxels(bool renderVoxels); void doKillLocalVoxels(); void doRandomizeVoxelColors(); void doFalseRandomizeVoxelColors(); From 9f9d8e59bd47e025537a99dc6b0d79161fda13b5 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 15 Jul 2013 17:08:55 -0700 Subject: [PATCH 2/2] don't accept voxel packet if rendering is turned off, correct boolean for kill --- interface/src/Application.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9771cc8255..5ad1a46c39 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1245,7 +1245,7 @@ void Application::setRenderWarnings(bool renderWarnings) { } void Application::setRenderVoxels(bool voxelRender) { - if (voxelRender) { + if (!voxelRender) { doKillLocalVoxels(); } } @@ -3224,7 +3224,7 @@ void* Application::networkReceive(void* args) { if (app->_wantToKillLocalVoxels) { app->_voxels.killLocalVoxels(); app->_wantToKillLocalVoxels = false; - } + } if (NodeList::getInstance()->getNodeSocket()->receive(&senderAddress, app->_incomingPacket, &bytesReceived)) { app->_packetCount++; @@ -3246,17 +3246,19 @@ void* Application::networkReceive(void* args) { case PACKET_TYPE_Z_COMMAND: case PACKET_TYPE_ERASE_VOXEL: case PACKET_TYPE_ENVIRONMENT_DATA: { - Node* voxelServer = NodeList::getInstance()->soloNodeOfType(NODE_TYPE_VOXEL_SERVER); - if (voxelServer) { - voxelServer->lock(); - - if (app->_incomingPacket[0] == PACKET_TYPE_ENVIRONMENT_DATA) { - app->_environment.parseData(&senderAddress, app->_incomingPacket, bytesReceived); - } else { - app->_voxels.parseData(app->_incomingPacket, bytesReceived); + if (app->_renderVoxels->isChecked()) { + Node* voxelServer = NodeList::getInstance()->soloNodeOfType(NODE_TYPE_VOXEL_SERVER); + if (voxelServer) { + voxelServer->lock(); + + if (app->_incomingPacket[0] == PACKET_TYPE_ENVIRONMENT_DATA) { + app->_environment.parseData(&senderAddress, app->_incomingPacket, bytesReceived); + } else { + app->_voxels.parseData(app->_incomingPacket, bytesReceived); + } + + voxelServer->unlock(); } - - voxelServer->unlock(); } break; }