summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qsceneloader.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-29 17:19:36 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-10-03 21:18:41 +0200
commit7b26f6a1746419161a8f875e341b3e31220f4141 (patch)
treef784e568015e1f7f199abb388b97fefdb158c84e /src/render/frontend/qsceneloader.cpp
parentc16689bb1ccf31416df7b8c69fe032898cf87dec (diff)
QNode refactoring
Move almost everything to private classes. Assimp loading restored. All examples working. QNode hierachy is now handled through QObject::setParent, addChild, removeChild are part of the private api. Note: commented QChangeArbiter unit tests as they can no longer work with this patch and will restore them when QChangeArbiter will have been made private. Task-number: QTBUG-41470 Task-number: QTBUG-41523 Change-Id: I4430974b3aa7f3744c38714b451b122e0cb4d0c9 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qsceneloader.cpp')
-rw-r--r--src/render/frontend/qsceneloader.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/render/frontend/qsceneloader.cpp b/src/render/frontend/qsceneloader.cpp
index ecc2c397f..ea9eb708f 100644
--- a/src/render/frontend/qsceneloader.cpp
+++ b/src/render/frontend/qsceneloader.cpp
@@ -64,21 +64,16 @@ void QSceneLoader::sceneChangeEvent(const QSceneChangePtr &change)
if (e->type() == ComponentUpdated) {
if (e->propertyName() == QByteArrayLiteral("scene")) {
QEntity *scene = e->value().value<QEntity *>();
+ // TO DO: We should send a QNodePtr so that it is release automatically
if (scene != Q_NULLPTR && d->m_scene != Q_NULLPTR) {
QList<QUuid> entities = d->m_scene->entitiesForComponent(d->m_uuid);
- if (entities.size() > 1)
+ if (entities.size() > 1) // TO DO: QComponent shareable property
qCWarning(Render::Frontend) << "It is strongly discouraged to share SceneLoader component between entities";
Q_FOREACH (const QUuid &id, entities) {
QEntity *parentEntity = qobject_cast<QEntity *>(d->m_scene->lookupNode(id));
if (parentEntity != Q_NULLPTR) {
- scene->dumpObjectTree();
-
- qDebug() << "BUILDING SUBTREE DEEP CLONE";
- QEntity *cloneScene = qobject_cast<QEntity *>(scene->clone(false));
- cloneScene->dumpObjectTree();
- // TO DO : Make that work
- qDebug() << "<<<<<<<<<<<<<<<<< " << QThread::currentThread() << parentEntity->thread() << scene->thread() << cloneScene->thread();
-// parentEntity->addChild(cloneScene);
+ QEntity *cloneScene = qobject_cast<QEntity *>(QNodePrivate::get(scene)->clone());
+ QNodePrivate::get(parentEntity)->insertTree(cloneScene);
}
}
}
@@ -89,11 +84,10 @@ void QSceneLoader::sceneChangeEvent(const QSceneChangePtr &change)
}
}
-QNode *QSceneLoader::doClone(bool isClone) const
+QNode *QSceneLoader::doClone() const
{
QSceneLoader *clone = new QSceneLoader();
- clone->copy(this);
- clone->d_func()->m_isClone = isClone;
+ clone->d_func()->copy(d_func());
return clone;
}