From dde1c8b42f1f15fada810fc0bbec87d35b627d43 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 28 Sep 2015 15:02:06 -0700 Subject: [PATCH] Fix use of EntityTree in import/export operations The EntityTree needs to be references by a shared_ptr somewhere. The EntityTree does not start with a root element by default, which some operations rely on to work as expected. --- interface/src/Application.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 53e40b5bd3..84441e78c7 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2337,7 +2337,8 @@ bool Application::exportEntities(const QString& filename, const QVector entities; auto entityTree = _entities.getTree(); - EntityTree exportTree; + auto exportTree = std::make_shared(); + exportTree->createRootElement(); glm::vec3 root(TREE_SCALE, TREE_SCALE, TREE_SCALE); for (auto entityID : entityIDs) { @@ -2364,10 +2365,10 @@ bool Application::exportEntities(const QString& filename, const QVectorgetProperties(); properties.setPosition(properties.getPosition() - root); - exportTree.addEntity(entityItem->getEntityItemID(), properties); + exportTree->addEntity(entityItem->getEntityItemID(), properties); } - exportTree.writeToJSONFile(filename.toLocal8Bit().constData()); + exportTree->writeToJSONFile(filename.toLocal8Bit().constData()); // restore the main window's active state _window->activateWindow(); @@ -2380,15 +2381,16 @@ bool Application::exportEntities(const QString& filename, float x, float y, floa if (entities.size() > 0) { glm::vec3 root(x, y, z); - EntityTree exportTree; + auto exportTree = std::make_shared(); + exportTree->createRootElement(); for (int i = 0; i < entities.size(); i++) { EntityItemProperties properties = entities.at(i)->getProperties(); EntityItemID id = entities.at(i)->getEntityItemID(); properties.setPosition(properties.getPosition() - root); - exportTree.addEntity(id, properties); + exportTree->addEntity(id, properties); } - exportTree.writeToSVOFile(filename.toLocal8Bit().constData()); + exportTree->writeToSVOFile(filename.toLocal8Bit().constData()); } else { qCDebug(interfaceapp) << "No models were selected"; return false;