From e1d8022409182e097ca765ed1c04e4fa4c7ccbd3 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 30 Dec 2014 14:11:31 -0800 Subject: [PATCH] working on removing voxels --- assignment-client/src/Agent.cpp | 21 +-- assignment-client/src/Agent.h | 3 - interface/src/Application.cpp | 273 +------------------------------- interface/src/Application.h | 37 ----- 4 files changed, 5 insertions(+), 329 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index f3efccf31a..36166b7ac4 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +//#include #include // TODO: consider moving to scriptengine.h @@ -37,7 +37,6 @@ static const int RECEIVED_AUDIO_STREAM_CAPACITY_FRAMES = 10; Agent::Agent(const QByteArray& packet) : ThreadedAssignment(packet), - _voxelEditSender(), _entityEditSender(), _receivedAudioStream(NETWORK_BUFFER_LENGTH_SAMPLES_STEREO, RECEIVED_AUDIO_STREAM_CAPACITY_FRAMES, InboundAudioStream::Settings(0, false, RECEIVED_AUDIO_STREAM_CAPACITY_FRAMES, false, @@ -48,7 +47,6 @@ Agent::Agent(const QByteArray& packet) : // be the parent of the script engine so it gets moved when we do _scriptEngine.setParent(this); - _scriptEngine.getVoxelsScriptingInterface()->setPacketSender(&_voxelEditSender); _scriptEngine.getEntityScriptingInterface()->setPacketSender(&_entityEditSender); } @@ -69,11 +67,6 @@ void Agent::readPendingDatagrams() { if (matchedNode) { // PacketType_JURISDICTION, first byte is the node type... switch (receivedPacket[headerBytes]) { - case NodeType::VoxelServer: - _scriptEngine.getVoxelsScriptingInterface()->getJurisdictionListener()-> - queueReceivedPacket(matchedNode,receivedPacket); - break; - break; case NodeType::EntityServer: _scriptEngine.getEntityScriptingInterface()->getJurisdictionListener()-> queueReceivedPacket(matchedNode, receivedPacket); @@ -93,7 +86,6 @@ void Agent::readPendingDatagrams() { sourceNode->setLastHeardMicrostamp(usecTimestampNow()); } else if (datagramPacketType == PacketTypeOctreeStats - || datagramPacketType == PacketTypeVoxelData || datagramPacketType == PacketTypeEntityData || datagramPacketType == PacketTypeEntityErase ) { @@ -127,10 +119,6 @@ void Agent::readPendingDatagrams() { _entityViewer.processDatagram(mutablePacket, sourceNode); } - if (datagramPacketType == PacketTypeVoxelData) { - _voxelViewer.processDatagram(mutablePacket, sourceNode); - } - } else if (datagramPacketType == PacketTypeMixedAudio || datagramPacketType == PacketTypeSilentAudioFrame) { _receivedAudioStream.parseData(receivedPacket); @@ -168,7 +156,6 @@ void Agent::run() { nodeList->addSetOfNodeTypesToNodeInterestSet(NodeSet() << NodeType::AudioMixer << NodeType::AvatarMixer - << NodeType::VoxelServer << NodeType::EntityServer ); @@ -221,12 +208,6 @@ void Agent::run() { _scriptEngine.registerGlobalObject("SoundCache", &SoundCache::getInstance()); - _scriptEngine.registerGlobalObject("VoxelViewer", &_voxelViewer); - // connect the VoxelViewer and the VoxelScriptingInterface to each other - _voxelViewer.setJurisdictionListener(_scriptEngine.getVoxelsScriptingInterface()->getJurisdictionListener()); - _voxelViewer.init(); - _scriptEngine.getVoxelsScriptingInterface()->setVoxelTree(_voxelViewer.getTree()); - _scriptEngine.registerGlobalObject("EntityViewer", &_entityViewer); _entityViewer.setJurisdictionListener(_scriptEngine.getEntityScriptingInterface()->getJurisdictionListener()); _entityViewer.init(); diff --git a/assignment-client/src/Agent.h b/assignment-client/src/Agent.h index 28af2a392d..61780f515d 100644 --- a/assignment-client/src/Agent.h +++ b/assignment-client/src/Agent.h @@ -60,10 +60,7 @@ public slots: private: ScriptEngine _scriptEngine; - VoxelEditPacketSender _voxelEditSender; EntityEditPacketSender _entityEditSender; - - VoxelTreeHeadlessViewer _voxelViewer; EntityTreeHeadlessViewer _entityViewer; MixedAudioStream _receivedAudioStream; diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6ddf116acd..729b8f990c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -62,7 +62,6 @@ #include #include #include -#include #include #include #include @@ -151,15 +150,10 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _frameCount(0), _fps(60.0f), _justStarted(true), - _voxelImportDialog(NULL), - _voxelImporter(), - _importSucceded(false), - _sharedVoxelSystem(TREE_SCALE, DEFAULT_MAX_VOXELS_PER_SYSTEM, &_clipboard), _entities(true, this, this), _entityCollisionSystem(), _entityClipboardRenderer(false, this, this), _entityClipboard(), - _wantToKillLocalVoxels(false), _viewFrustum(), _lastQueriedViewFrustum(), _lastQueriedTime(usecTimestampNow()), @@ -177,7 +171,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _audio(), _enableProcessVoxelsThread(true), _octreeProcessor(), - _voxelHideShowThread(&_voxels), _packetsPerSecond(0), _bytesPerSecond(0), _nodeBoundsDisplay(this), @@ -275,8 +268,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : connect(nodeList, &NodeList::nodeAdded, this, &Application::nodeAdded); connect(nodeList, &NodeList::nodeKilled, this, &Application::nodeKilled); connect(nodeList, SIGNAL(nodeKilled(SharedNodePointer)), SLOT(nodeKilled(SharedNodePointer))); - connect(nodeList, SIGNAL(nodeAdded(SharedNodePointer)), &_voxels, SLOT(nodeAdded(SharedNodePointer))); - connect(nodeList, SIGNAL(nodeKilled(SharedNodePointer)), &_voxels, SLOT(nodeKilled(SharedNodePointer))); connect(nodeList, &NodeList::uuidChanged, _myAvatar, &MyAvatar::setSessionUUID); connect(nodeList, &NodeList::limitOfSilentDomainCheckInsReached, nodeList, &NodeList::reset); @@ -313,10 +304,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _settings = new QSettings(this); _numChangedSettings = 0; - // Check to see if the user passed in a command line option for loading a local - // Voxel File. - _voxelsFilename = getCmdOption(argc, constArgv, "-i"); - #ifdef _WIN32 WSADATA WsaData; int wsaresult = WSAStartup(MAKEWORD(2,2), &WsaData); @@ -327,8 +314,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : << NodeType::VoxelServer << NodeType::EntityServer << NodeType::MetavoxelServer); - // connect to the packet sent signal of the _voxelEditSender and the _entityEditSender - connect(&_voxelEditSender, &VoxelEditPacketSender::packetSent, this, &Application::packetSent); + // connect to the packet sent signal of the _entityEditSender connect(&_entityEditSender, &EntityEditPacketSender::packetSent, this, &Application::packetSent); // move the silentNodeTimer to the _nodeThread @@ -373,8 +359,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : // initialization continues in initializeGL when OpenGL context is ready - // Tell our voxel edit sender about our known jurisdictions - _voxelEditSender.setVoxelServerJurisdictions(&_voxelServerJurisdictions); + // Tell our entity edit sender about our known jurisdictions _entityEditSender.setServerJurisdictions(&_entityServerJurisdictions); // For now we're going to set the PPS for outbound packets to be super high, this is @@ -386,9 +371,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _overlays.init(glCanvas.data()); // do this before scripts load - LocalVoxelsList::getInstance()->addPersistantTree(DOMAIN_TREE_NAME, _voxels.getTree()); - LocalVoxelsList::getInstance()->addPersistantTree(CLIPBOARD_TREE_NAME, &_clipboard); - _runningScriptsWidget->setRunningScripts(getRunningScripts()); connect(_runningScriptsWidget, &RunningScriptsWidget::stopScriptName, this, &Application::stopScript); @@ -446,9 +428,6 @@ Application::~Application() { // make sure we don't call the idle timer any more delete idleTimer; - _sharedVoxelSystem.changeTree(new VoxelTree); - delete _voxelImportDialog; - // let the avatar mixer know we're out MyAvatar::sendKillAvatar(); @@ -467,11 +446,8 @@ Application::~Application() { _audio.thread()->wait(); _octreeProcessor.terminate(); - _voxelHideShowThread.terminate(); - _voxelEditSender.terminate(); _entityEditSender.terminate(); - VoxelTreeElement::removeDeleteHook(&_voxels); // we don't need to do this processing on shutdown Menu::getInstance()->deleteLater(); _myAvatar = NULL; @@ -481,9 +457,6 @@ void Application::saveSettings() { Menu::getInstance()->saveSettings(); _rearMirrorTools->saveSettings(_settings); - if (_voxelImportDialog) { - _voxelImportDialog->saveSettings(_settings); - } _settings->sync(); _numChangedSettings = 0; } @@ -568,14 +541,8 @@ void Application::initializeGL() { // create thread for parsing of voxel data independent of the main network and rendering threads _octreeProcessor.initialize(_enableProcessVoxelsThread); - _voxelEditSender.initialize(_enableProcessVoxelsThread); - _voxelHideShowThread.initialize(_enableProcessVoxelsThread); _entityEditSender.initialize(_enableProcessVoxelsThread); - if (_enableProcessVoxelsThread) { - qDebug("Voxel parsing thread created."); - } - // call our timer function every second QTimer* timer = new QTimer(this); connect(timer, SIGNAL(timeout()), SLOT(timer())); @@ -797,10 +764,6 @@ void Application::updateProjectionMatrix(Camera& camera, bool updateViewFrustum) void Application::controlledBroadcastToNodes(const QByteArray& packet, const NodeSet& destinationNodeTypes) { foreach(NodeType_t type, destinationNodeTypes) { - // Intercept data to voxel server when voxels are disabled - if (type == NodeType::VoxelServer && !Menu::getInstance()->isOptionChecked(MenuOption::Voxels)) { - continue; - } // Perform the broadcast for one type int nReceivingNodes = NodeList::getInstance()->broadcastToNodes(packet, NodeSet() << type); @@ -812,7 +775,6 @@ void Application::controlledBroadcastToNodes(const QByteArray& packet, const Nod case NodeType::AvatarMixer: channel = BandwidthMeter::AVATARS; break; - case NodeType::VoxelServer: case NodeType::EntityServer: channel = BandwidthMeter::VOXELS; break; @@ -1093,11 +1055,6 @@ void Application::keyPressEvent(QKeyEvent* event) { Menu::getInstance()->triggerOption(MenuOption::DisplayFrustum); } break; - case Qt::Key_V: - if (isShifted) { - Menu::getInstance()->triggerOption(MenuOption::Voxels); - } - break; case Qt::Key_P: Menu::getInstance()->triggerOption(MenuOption::FirstPerson); break; @@ -1442,7 +1399,7 @@ void Application::dropEvent(QDropEvent *event) { void Application::sendPingPackets() { QByteArray pingPacket = NodeList::getInstance()->constructPingPacket(); controlledBroadcastToNodes(pingPacket, NodeSet() - << NodeType::VoxelServer << NodeType::EntityServer + << NodeType::EntityServer << NodeType::AudioMixer << NodeType::AvatarMixer << NodeType::MetavoxelServer); } @@ -1588,63 +1545,10 @@ void Application::setEnableVRMode(bool enableVRMode) { resizeGL(glCanvas->getDeviceWidth(), glCanvas->getDeviceHeight()); } -void Application::setRenderVoxels(bool voxelRender) { - _voxelEditSender.setShouldSend(voxelRender); - if (!voxelRender) { - doKillLocalVoxels(); - } -} - void Application::setLowVelocityFilter(bool lowVelocityFilter) { SixenseManager::getInstance().setLowVelocityFilter(lowVelocityFilter); } -void Application::doKillLocalVoxels() { - _wantToKillLocalVoxels = true; -} - -void Application::removeVoxel(glm::vec3 position, - float scale) { - VoxelDetail voxel; - voxel.x = position.x / TREE_SCALE; - voxel.y = position.y / TREE_SCALE; - voxel.z = position.z / TREE_SCALE; - voxel.s = scale / TREE_SCALE; - _voxelEditSender.sendVoxelEditMessage(PacketTypeVoxelErase, voxel); - - // delete it locally to see the effect immediately (and in case no voxel server is present) - _voxels.getTree()->deleteVoxelAt(voxel.x, voxel.y, voxel.z, voxel.s); -} - - -void Application::makeVoxel(glm::vec3 position, - float scale, - unsigned char red, - unsigned char green, - unsigned char blue, - bool isDestructive) { - VoxelDetail voxel; - voxel.x = position.x / TREE_SCALE; - voxel.y = position.y / TREE_SCALE; - voxel.z = position.z / TREE_SCALE; - voxel.s = scale / TREE_SCALE; - voxel.red = red; - voxel.green = green; - voxel.blue = blue; - PacketType message = isDestructive ? PacketTypeVoxelSetDestructive : PacketTypeVoxelSet; - _voxelEditSender.sendVoxelEditMessage(message, voxel); - - // create the voxel locally so it appears immediately - _voxels.getTree()->createVoxel(voxel.x, voxel.y, voxel.z, voxel.s, - voxel.red, voxel.green, voxel.blue, - isDestructive); - } - -glm::vec3 Application::getMouseVoxelWorldCoordinates(const VoxelDetail& mouseVoxel) { - return glm::vec3((mouseVoxel.x + mouseVoxel.s / 2.0f) * TREE_SCALE, (mouseVoxel.y + mouseVoxel.s / 2.0f) * TREE_SCALE, - (mouseVoxel.z + mouseVoxel.s / 2.0f) * TREE_SCALE); -} - bool Application::mouseOnScreen() const { if (OculusManager::isConnected()) { GLCanvas::SharedPointer glCanvas = DependencyManager::get(); @@ -1728,88 +1632,6 @@ bool Application::exportEntities(const QString& filename, float x, float y, floa return true; } -bool Application::sendVoxelsOperation(OctreeElement* element, void* extraData) { - VoxelTreeElement* voxel = (VoxelTreeElement*)element; - SendVoxelsOperationArgs* args = (SendVoxelsOperationArgs*)extraData; - if (voxel->isColored()) { - const unsigned char* nodeOctalCode = voxel->getOctalCode(); - unsigned char* codeColorBuffer = NULL; - int codeLength = 0; - int bytesInCode = 0; - int codeAndColorLength; - - // If the newBase is NULL, then don't rebase - if (args->newBaseOctCode) { - codeColorBuffer = rebaseOctalCode(nodeOctalCode, args->newBaseOctCode, true); - codeLength = numberOfThreeBitSectionsInCode(codeColorBuffer); - bytesInCode = bytesRequiredForCodeLength(codeLength); - codeAndColorLength = bytesInCode + SIZE_OF_COLOR_DATA; - } else { - codeLength = numberOfThreeBitSectionsInCode(nodeOctalCode); - bytesInCode = bytesRequiredForCodeLength(codeLength); - codeAndColorLength = bytesInCode + SIZE_OF_COLOR_DATA; - codeColorBuffer = new unsigned char[codeAndColorLength]; - memcpy(codeColorBuffer, nodeOctalCode, bytesInCode); - } - - // copy the colors over - codeColorBuffer[bytesInCode + RED_INDEX] = voxel->getColor()[RED_INDEX]; - codeColorBuffer[bytesInCode + GREEN_INDEX] = voxel->getColor()[GREEN_INDEX]; - codeColorBuffer[bytesInCode + BLUE_INDEX] = voxel->getColor()[BLUE_INDEX]; - getInstance()->_voxelEditSender.queueVoxelEditMessage(PacketTypeVoxelSetDestructive, - codeColorBuffer, codeAndColorLength); - - delete[] codeColorBuffer; - } - return true; // keep going -} - -void Application::exportVoxels(const VoxelDetail& sourceVoxel) { - QString desktopLocation = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); - QString suggestedName = desktopLocation.append("/voxels.svo"); - - QString fileNameString = QFileDialog::getSaveFileName(DependencyManager::get().data(), - tr("Export Voxels"), suggestedName, - tr("Sparse Voxel Octree Files (*.svo)")); - QByteArray fileNameAscii = fileNameString.toLocal8Bit(); - const char* fileName = fileNameAscii.data(); - - VoxelTreeElement* selectedNode = _voxels.getTree()->getVoxelAt(sourceVoxel.x, sourceVoxel.y, sourceVoxel.z, sourceVoxel.s); - if (selectedNode) { - VoxelTree exportTree; - getVoxelTree()->copySubTreeIntoNewTree(selectedNode, &exportTree, true); - exportTree.writeToSVOFile(fileName); - } - - // restore the main window's active state - _window->activateWindow(); -} - -void Application::importVoxels() { - _importSucceded = false; - - if (!_voxelImportDialog) { - _voxelImportDialog = new VoxelImportDialog(_window); - _voxelImportDialog->loadSettings(_settings); - } - - if (!_voxelImportDialog->exec()) { - qDebug() << "Import succeeded." << endl; - _importSucceded = true; - } else { - qDebug() << "Import failed." << endl; - if (_sharedVoxelSystem.getTree() == _voxelImporter.getVoxelTree()) { - _sharedVoxelSystem.killLocalVoxels(); - _sharedVoxelSystem.changeTree(&_clipboard); - } - } - - // restore the main window's active state - _window->activateWindow(); - - emit importDone(); -} - bool Application::importEntities(const QString& filename) { _entityClipboard.eraseAllOctreeElements(); bool success = _entityClipboard.readFromSVOFile(filename.toLocal8Bit().constData()); @@ -1823,71 +1645,6 @@ void Application::pasteEntities(float x, float y, float z) { _entityClipboard.sendEntities(&_entityEditSender, _entities.getTree(), x, y, z); } -void Application::cutVoxels(const VoxelDetail& sourceVoxel) { - copyVoxels(sourceVoxel); - deleteVoxelAt(sourceVoxel); -} - -void Application::copyVoxels(const VoxelDetail& sourceVoxel) { - // switch to and clear the clipboard first... - _sharedVoxelSystem.killLocalVoxels(); - if (_sharedVoxelSystem.getTree() != &_clipboard) { - _clipboard.eraseAllOctreeElements(); - _sharedVoxelSystem.changeTree(&_clipboard); - } - - // then copy onto it if there is something to copy - VoxelTreeElement* selectedNode = _voxels.getTree()->getVoxelAt(sourceVoxel.x, sourceVoxel.y, sourceVoxel.z, sourceVoxel.s); - if (selectedNode) { - getVoxelTree()->copySubTreeIntoNewTree(selectedNode, _sharedVoxelSystem.getTree(), true); - _sharedVoxelSystem.forceRedrawEntireTree(); - } -} - -void Application::pasteVoxelsToOctalCode(const unsigned char* octalCodeDestination) { - // Recurse the clipboard tree, where everything is root relative, and send all the colored voxels to - // the server as an set voxel message, this will also rebase the voxels to the new location - SendVoxelsOperationArgs args; - args.newBaseOctCode = octalCodeDestination; - _sharedVoxelSystem.getTree()->recurseTreeWithOperation(sendVoxelsOperation, &args); - - // Switch back to clipboard if it was an import - if (_sharedVoxelSystem.getTree() != &_clipboard) { - _sharedVoxelSystem.killLocalVoxels(); - _sharedVoxelSystem.changeTree(&_clipboard); - } - - _voxelEditSender.releaseQueuedMessages(); -} - -void Application::pasteVoxels(const VoxelDetail& sourceVoxel) { - unsigned char* calculatedOctCode = NULL; - VoxelTreeElement* selectedNode = _voxels.getTree()->getVoxelAt(sourceVoxel.x, sourceVoxel.y, sourceVoxel.z, sourceVoxel.s); - - // we only need the selected voxel to get the newBaseOctCode, which we can actually calculate from the - // voxel size/position details. If we don't have an actual selectedNode then use the mouseVoxel to create a - // target octalCode for where the user is pointing. - const unsigned char* octalCodeDestination; - if (selectedNode) { - octalCodeDestination = selectedNode->getOctalCode(); - } else { - octalCodeDestination = calculatedOctCode = pointToVoxel(sourceVoxel.x, sourceVoxel.y, sourceVoxel.z, sourceVoxel.s); - } - - pasteVoxelsToOctalCode(octalCodeDestination); - - if (calculatedOctCode) { - delete[] calculatedOctCode; - } -} - -void Application::nudgeVoxelsByVector(const VoxelDetail& sourceVoxel, const glm::vec3& nudgeVec) { - VoxelTreeElement* nodeToNudge = _voxels.getTree()->getVoxelAt(sourceVoxel.x, sourceVoxel.y, sourceVoxel.z, sourceVoxel.s); - if (nodeToNudge) { - _voxels.getTree()->nudgeSubTree(nodeToNudge, nudgeVec, _voxelEditSender); - } -} - void Application::initDisplay() { glEnable(GL_BLEND); glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_CONSTANT_ALPHA, GL_ONE); @@ -1898,23 +1655,6 @@ void Application::initDisplay() { } void Application::init() { - _sharedVoxelSystemViewFrustum.setPosition(glm::vec3(TREE_SCALE / 2.0f, - TREE_SCALE / 2.0f, - 3.0f * TREE_SCALE / 2.0f)); - _sharedVoxelSystemViewFrustum.setNearClip(TREE_SCALE / 2.0f); - _sharedVoxelSystemViewFrustum.setFarClip(3.0f * TREE_SCALE / 2.0f); - _sharedVoxelSystemViewFrustum.setFieldOfView(90.0f); - _sharedVoxelSystemViewFrustum.setOrientation(glm::quat()); - _sharedVoxelSystemViewFrustum.calculate(); - _sharedVoxelSystem.setViewFrustum(&_sharedVoxelSystemViewFrustum); - - VoxelTreeElement::removeUpdateHook(&_sharedVoxelSystem); - - // Cleanup of the original shared tree - _sharedVoxelSystem.init(); - - _voxelImportDialog = new VoxelImportDialog(_window); - _environment.init(); DependencyManager::get()->init(this); @@ -1987,16 +1727,11 @@ void Application::init() { // fire off an immediate domain-server check in now that settings are loaded NodeList::getInstance()->sendDomainServerCheckIn(); - // Set up VoxelSystem after loading preferences so we can get the desired max voxel count - _voxels.setMaxVoxels(Menu::getInstance()->getMaxVoxels()); - _voxels.setDisableFastVoxelPipeline(false); - _voxels.init(); - _entities.init(); _entities.setViewFrustum(getViewFrustum()); EntityTree* entityTree = _entities.getTree(); - _entityCollisionSystem.init(&_entityEditSender, entityTree, _voxels.getTree(), &_audio, &_avatarManager); + _entityCollisionSystem.init(&_entityEditSender, entityTree, NULL, &_audio, &_avatarManager); entityTree->setSimulation(&_entityCollisionSystem); // connect the _entityCollisionSystem to our script engine's EntityScriptingInterface diff --git a/interface/src/Application.h b/interface/src/Application.h index a3c3d51d59..1191752650 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -71,10 +71,7 @@ #include "ui/ToolWindow.h" #include "ui/VoxelImportDialog.h" #include "voxels/VoxelFade.h" -#include "voxels/VoxelHideShowThread.h" -#include "voxels/VoxelImporter.h" #include "voxels/OctreePacketProcessor.h" -#include "voxels/VoxelSystem.h" #include "UndoStackScriptingInterface.h" @@ -174,7 +171,6 @@ public: void removeVoxel(glm::vec3 position, float scale); - glm::vec3 getMouseVoxelWorldCoordinates(const VoxelDetail& mouseVoxel); bool isThrottleRendering() const { return DependencyManager::get()->isThrottleRendering(); } MyAvatar* getAvatar() { return _myAvatar; } @@ -184,22 +180,16 @@ public: ViewFrustum* getViewFrustum() { return &_viewFrustum; } ViewFrustum* getDisplayViewFrustum() { return &_displayViewFrustum; } ViewFrustum* getShadowViewFrustum() { return &_shadowViewFrustum; } - VoxelSystem* getVoxels() { return &_voxels; } const OctreePacketProcessor& getOctreePacketProcessor() const { return _octreeProcessor; } MetavoxelSystem* getMetavoxels() { return &_metavoxels; } EntityTreeRenderer* getEntities() { return &_entities; } - VoxelSystem* getSharedVoxelSystem() { return &_sharedVoxelSystem; } Environment* getEnvironment() { return &_environment; } PrioVR* getPrioVR() { return &_prioVR; } QUndoStack* getUndoStack() { return &_undoStack; } MainWindow* getWindow() { return _window; } - VoxelImporter* getVoxelImporter() { return &_voxelImporter; } - VoxelTree* getClipboard() { return &_clipboard; } EntityTree* getEntityClipboard() { return &_entityClipboard; } EntityTreeRenderer* getEntityClipboardRenderer() { return &_entityClipboardRenderer; } - VoxelTree* getVoxelTree() { return _voxels.getTree(); } - bool getImportSucceded() { return _importSucceded; } bool isMousePressed() const { return _mousePressed; } bool isMouseHidden() const { return DependencyManager::get()->cursor().shape() == Qt::BlankCursor; } @@ -294,9 +284,7 @@ public: glm::vec2 getViewportDimensions() const { return glm::vec2(DependencyManager::get()->getDeviceWidth(), DependencyManager::get()->getDeviceHeight()); } - NodeToJurisdictionMap& getVoxelServerJurisdictions() { return _voxelServerJurisdictions; } NodeToJurisdictionMap& getEntityServerJurisdictions() { return _entityServerJurisdictions; } - void pasteVoxelsToOctalCode(const unsigned char* octalCodeDestination); void skipVersion(QString latestVersion); @@ -346,17 +334,7 @@ public slots: bool exportEntities(const QString& filename, float x, float y, float z, float scale); bool importEntities(const QString& filename); - void importVoxels(); // doesn't include source voxel because it goes to clipboard - void cutVoxels(const VoxelDetail& sourceVoxel); - void copyVoxels(const VoxelDetail& sourceVoxel); - void pasteVoxels(const VoxelDetail& sourceVoxel); - void deleteVoxels(const VoxelDetail& sourceVoxel); - void exportVoxels(const VoxelDetail& sourceVoxel); - void nudgeVoxelsByVector(const VoxelDetail& sourceVoxel, const glm::vec3& nudgeVec); - - void setRenderVoxels(bool renderVoxels); void setLowVelocityFilter(bool lowVelocityFilter); - void doKillLocalVoxels(); void loadDialog(); void loadScriptURLDialog(); void toggleLogDialog(); @@ -418,7 +396,6 @@ private: void updateProjectionMatrix(); void updateProjectionMatrix(Camera& camera, bool updateViewFrustum = true); - static bool sendVoxelsOperation(OctreeElement* node, void* extraData); void sendPingPackets(); void initDisplay(); @@ -493,22 +470,11 @@ private: bool _justStarted; Stars _stars; - VoxelSystem _voxels; - VoxelTree _clipboard; // if I copy/paste - VoxelImportDialog* _voxelImportDialog; - VoxelImporter _voxelImporter; - bool _importSucceded; - VoxelSystem _sharedVoxelSystem; - ViewFrustum _sharedVoxelSystemViewFrustum; - EntityTreeRenderer _entities; EntityCollisionSystem _entityCollisionSystem; EntityTreeRenderer _entityClipboardRenderer; EntityTree _entityClipboard; - QByteArray _voxelsFilename; - bool _wantToKillLocalVoxels; - MetavoxelSystem _metavoxels; ViewFrustum _viewFrustum; // current state of view frustum, perspective, orientation, etc. @@ -569,8 +535,6 @@ private: bool _enableProcessVoxelsThread; OctreePacketProcessor _octreeProcessor; - VoxelHideShowThread _voxelHideShowThread; - VoxelEditPacketSender _voxelEditSender; EntityEditPacketSender _entityEditSender; int _packetsPerSecond; @@ -582,7 +546,6 @@ private: int parseOctreeStats(const QByteArray& packet, const SharedNodePointer& sendingNode); void trackIncomingVoxelPacket(const QByteArray& packet, const SharedNodePointer& sendingNode, bool wasStatsPacket); - NodeToJurisdictionMap _voxelServerJurisdictions; NodeToJurisdictionMap _entityServerJurisdictions; NodeToOctreeSceneStats _octreeServerSceneStats; QReadWriteLock _octreeSceneStatsLock;