diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-29 17:19:36 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-10-03 21:18:41 +0200 |
commit | 7b26f6a1746419161a8f875e341b3e31220f4141 (patch) | |
tree | f784e568015e1f7f199abb388b97fefdb158c84e /src/render/frontend/qsceneloader.cpp | |
parent | c16689bb1ccf31416df7b8c69fe032898cf87dec (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.cpp | 18 |
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; } |