From 684802550454295528c2fbadb85e6a66c6456e24 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Thu, 5 Mar 2015 13:36:16 -0800 Subject: [PATCH] Add exporting by entity ID to Application --- interface/src/Application.cpp | 41 +++++++++++++++++++ interface/src/Application.h | 2 +- .../scripting/ClipboardScriptingInterface.cpp | 2 +- .../scripting/ClipboardScriptingInterface.h | 2 +- 4 files changed, 44 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6f5239a6b2..e63e9f6de5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1633,6 +1633,47 @@ void Application::setActiveFaceTracker() { #endif } +bool Application::exportEntities(const QString& filename, const QVector& entityIDs) { + QVector entities; + + auto entityTree = _entities.getTree(); + EntityTree exportTree; + + glm::vec3 root(TREE_SCALE, TREE_SCALE, TREE_SCALE); + for (auto entityID : entityIDs) { + auto entityItem = entityTree->findEntityByEntityItemID(entityID); + if (!entityItem) { + continue; + } + + auto properties = entityItem->getProperties(); + auto position = properties.getPosition(); + + root.x = glm::min(root.x, position.x); + root.y = glm::min(root.y, position.y); + root.z = glm::min(root.z, position.z); + + entities << entityItem; + } + + if (entities.size() == 0) { + return false; + } + + for (auto entityItem : entities) { + auto properties = entityItem->getProperties(); + + properties.setPosition(properties.getPosition() - root); + exportTree.addEntity(entityItem->getEntityItemID(), properties); + } + + exportTree.writeToSVOFile(filename.toLocal8Bit().constData()); + + // restore the main window's active state + _window->activateWindow(); + return true; +} + bool Application::exportEntities(const QString& filename, float x, float y, float z, float scale) { QVector entities; _entities.getTree()->findEntities(AACube(glm::vec3(x / (float)TREE_SCALE, diff --git a/interface/src/Application.h b/interface/src/Application.h index e027f85538..73a3f1658b 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -324,7 +324,7 @@ public slots: void packetSent(quint64 length); QVector pasteEntities(float x, float y, float z); - bool exportEntities(const QString& filename, const QStringList& entityIDs); + bool exportEntities(const QString& filename, const QVector& entityIDs); bool exportEntities(const QString& filename, float x, float y, float z, float scale); bool importEntities(const QString& filename); diff --git a/interface/src/scripting/ClipboardScriptingInterface.cpp b/interface/src/scripting/ClipboardScriptingInterface.cpp index a06a0500f3..5c9370771c 100644 --- a/interface/src/scripting/ClipboardScriptingInterface.cpp +++ b/interface/src/scripting/ClipboardScriptingInterface.cpp @@ -14,7 +14,7 @@ ClipboardScriptingInterface::ClipboardScriptingInterface() { } -bool ClipboardScriptingInterface::exportEntities(const QString& filename, QStringList entityIDs) { +bool ClipboardScriptingInterface::exportEntities(const QString& filename, const QVector& entityIDs) { return Application::getInstance()->exportEntities(filename, entityIDs); } diff --git a/interface/src/scripting/ClipboardScriptingInterface.h b/interface/src/scripting/ClipboardScriptingInterface.h index bb993c32a4..9fe676ad03 100644 --- a/interface/src/scripting/ClipboardScriptingInterface.h +++ b/interface/src/scripting/ClipboardScriptingInterface.h @@ -23,7 +23,7 @@ signals: public slots: bool importEntities(const QString& filename); - bool exportEntities(const QString& filename, QStringList entityIDs); + bool exportEntities(const QString& filename, const QVector& entityIDs); bool exportEntities(const QString& filename, float x, float y, float z, float s); QVector pasteEntities(float x, float y, float z, float s); };