summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qabstractsceneloader.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-17 16:38:50 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-09-30 10:21:54 +0200
commit143b5de7bf788c0e07e460c3c6150861a7eaaf7d (patch)
treeb4c87167ae7708b2b65de8e398c919dd75629f6f /src/render/frontend/qabstractsceneloader.cpp
parent7acc347bee7bccca53269ae85417e68102dc79a1 (diff)
Refactored QAbstractSceneLoader and QSceneLoader
QNode, also to make deep clones and shallow clones. Change-Id: I38362485e3f7870da3d49aba95603fe4d61876fe Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qabstractsceneloader.cpp')
-rw-r--r--src/render/frontend/qabstractsceneloader.cpp98
1 files changed, 8 insertions, 90 deletions
diff --git a/src/render/frontend/qabstractsceneloader.cpp b/src/render/frontend/qabstractsceneloader.cpp
index 2b0220c9b..f7bb8eec2 100644
--- a/src/render/frontend/qabstractsceneloader.cpp
+++ b/src/render/frontend/qabstractsceneloader.cpp
@@ -54,9 +54,7 @@ namespace Render {
QAbstractSceneLoaderPrivate::QAbstractSceneLoaderPrivate(QAbstractSceneLoader *qq)
: QComponentPrivate(qq)
- , m_sceneNode(Q_NULLPTR)
- , m_sceneChild(Q_NULLPTR)
- , m_currentParser(Q_NULLPTR)
+ , m_status(QAbstractSceneLoader::Loading)
{
}
@@ -68,8 +66,6 @@ QAbstractSceneLoader::QAbstractSceneLoader(QAbstractSceneLoaderPrivate &dd, QNod
QAbstractSceneLoader::QAbstractSceneLoader(QNode *parent)
: QComponent(*new QAbstractSceneLoaderPrivate(this), parent)
{
- Q_D(QAbstractSceneLoader);
- d->m_sceneNode = this;
}
void QAbstractSceneLoader::copy(const QNode *ref)
@@ -77,7 +73,6 @@ void QAbstractSceneLoader::copy(const QNode *ref)
Q_D(QAbstractSceneLoader);
const QAbstractSceneLoader *s = qobject_cast<const QAbstractSceneLoader *>(ref);
if (s != Q_NULLPTR) {
- d->m_sceneId = s->sceneId();
d->m_source = s->source();
}
}
@@ -88,43 +83,11 @@ QString QAbstractSceneLoader::source() const
return d->m_source;
}
-QString QAbstractSceneLoader::sceneId() const
-{
- Q_D(const QAbstractSceneLoader);
- return d->m_sceneId;
-}
-
-QAbstractSceneLoader *QAbstractSceneLoader::findInTree(QNode *root)
-{
- if (!root)
- return Q_NULLPTR;
-
- QAbstractSceneLoader* s = qobject_cast<QAbstractSceneLoader*>(root);
- if (s)
- return s;
-
- // recursive walk down the tree
- foreach (QNode* nd, root->children()) {
- s = findInTree(nd);
- if (s)
- return s;
- }
-
- return Q_NULLPTR;
-}
-
-void QAbstractSceneLoader::clear()
-{
- Q_D(QAbstractSceneLoader);
- d->m_sceneNode->removeAllChildren();
-}
-
void QAbstractSceneLoader::setSource(QString arg)
{
Q_D(QAbstractSceneLoader);
if (d->m_source != arg) {
d->m_source = arg;
- rebuild();
emit sourceChanged(arg);
QScenePropertyChangePtr change(new QScenePropertyChange(ComponentUpdated, this));
change->setPropertyName(QByteArrayLiteral("source"));
@@ -133,64 +96,19 @@ void QAbstractSceneLoader::setSource(QString arg)
}
}
-void QAbstractSceneLoader::setSceneId(QString arg)
+QAbstractSceneLoader::Status QAbstractSceneLoader::status() const
{
- Q_D(QAbstractSceneLoader);
- if (d->m_sceneId != arg) {
- d->m_sceneId = arg;
- rebuild();
- emit sceneIdChanged(arg);
- }
-}
-
-QNode *QAbstractSceneLoader::node(QString id)
-{
- Q_D(QAbstractSceneLoader);
- if (d->m_currentParser)
- return d->m_currentParser->node(id);
- return Q_NULLPTR;
-}
-
-QNode *QAbstractSceneLoader::scene(QString id)
-{
- Q_D(QAbstractSceneLoader);
- if (d->m_currentParser)
- return d->m_currentParser->scene(id);
- return Q_NULLPTR;
+ Q_D(const QAbstractSceneLoader);
+ return d->m_status;
}
-// Move that into a jobs
-void QAbstractSceneLoader::rebuild()
+void QAbstractSceneLoader::setStatus(QAbstractSceneLoader::Status status)
{
Q_D(QAbstractSceneLoader);
- if (d->m_sceneChild != Q_NULLPTR) {
- d->m_sceneNode->removeChild(d->m_sceneChild);
- d->m_sceneChild->deleteLater();
- }
-
- // Make scene parsers plugins
- QList<AbstractSceneParser *> parsers;
- parsers << new GLTFParser();// << new AssimpParser();
-
- // TO DO: Load Scene Parsers
-
- bool parserFound = false;
- Q_FOREACH (AbstractSceneParser *parser, parsers) {
- if (parser->isPathExtensionSupported(d->m_source)) {
- if (d->m_currentParser != Q_NULLPTR && parser != d->m_currentParser) {
- delete d->m_currentParser;
- d->m_currentParser = parser;
- }
- qCDebug(Render::Io) << Q_FUNC_INFO << parser;
- parser->setFilePath(d->m_source);
- if ((d->m_sceneChild = parser->scene(d->m_sceneId)) != Q_NULLPTR)
- d->m_sceneNode->addChild(d->m_sceneChild);
- parserFound = true;
- break;
- }
+ if (d->m_status != status) {
+ d->m_status = status;
+ emit statusChanged();
}
- if (!parserFound)
- qCWarning(Render::Frontend) << Q_FUNC_INFO << "Scene file format not supported by Qt3D";
}
} // Render