diff options
-rw-r--r-- | src/core/aspects/qabstractaspect.cpp | 30 | ||||
-rw-r--r-- | src/core/aspects/qabstractaspect.h | 8 | ||||
-rw-r--r-- | src/input/frontend/qinputaspect.cpp | 30 | ||||
-rw-r--r-- | src/input/frontend/qinputaspect.h | 5 | ||||
-rw-r--r-- | src/logic/qlogicaspect.cpp | 31 | ||||
-rw-r--r-- | src/logic/qlogicaspect.h | 6 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 29 | ||||
-rw-r--r-- | src/render/frontend/qrenderaspect.h | 5 |
8 files changed, 39 insertions, 105 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp index 8c2e58939..3db95d315 100644 --- a/src/core/aspects/qabstractaspect.cpp +++ b/src/core/aspects/qabstractaspect.cpp @@ -41,6 +41,8 @@ #include <Qt3DCore/private/qaspectjobmanager_p.h> #include <private/qchangearbiter_p.h> #include <Qt3DCore/private/qscene_p.h> +#include <Qt3DCore/qnodevisitor.h> +#include <Qt3DCore/qscenepropertychange.h> QT_BEGIN_NAMESPACE @@ -92,6 +94,23 @@ void QAbstractAspect::registerBackendType(const QMetaObject &obj, const QBackend d->m_backendCreatorFunctors.insert(className(obj), functor); } +void QAbstractAspect::sceneNodeAdded(QSceneChangePtr &e) +{ + QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); + QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); + QNode *n = nodePtr.data(); + QNodeVisitor visitor; + visitor.traverse(n, this, &QAbstractAspect::visitNode); +} + +void QAbstractAspect::sceneNodeRemoved(QSceneChangePtr &e) +{ + QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); + QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); + QNode *n = nodePtr.data(); + QAbstractAspect::clearBackendNode(n); +} + QVariant QAbstractAspect::executeCommand(const QStringList &args) { Q_UNUSED(args); @@ -167,6 +186,12 @@ void QAbstractAspect::clearBackendNode(QNode *frontend) const } } +void QAbstractAspect::setRootEntity(QEntity *rootObject) +{ + QNodeVisitor visitor; + visitor.traverse(rootObject, this, &QAbstractAspect::visitNode); +} + void QAbstractAspect::registerAspect(QEntity *rootObject) { Q_D(QAbstractAspect); @@ -203,6 +228,11 @@ void QAbstractAspect::onShutdown() { } +void QAbstractAspect::visitNode(QNode *node) +{ + createBackendNode(node); +} + } // of namespace Qt3DCore QT_END_NAMESPACE diff --git a/src/core/aspects/qabstractaspect.h b/src/core/aspects/qabstractaspect.h index 1aec7aa5f..7d121d9ae 100644 --- a/src/core/aspects/qabstractaspect.h +++ b/src/core/aspects/qabstractaspect.h @@ -81,6 +81,9 @@ public: void registerBackendType(const QBackendNodeFunctorPtr &functor); void registerBackendType(const QMetaObject &, const QBackendNodeFunctorPtr &functor); + void sceneNodeAdded(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; + void sceneNodeRemoved(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; + virtual QVariant executeCommand(const QStringList &args); protected: @@ -90,13 +93,16 @@ protected: QBackendNode *getBackendNode(QNode *frontend) const; void clearBackendNode(QNode *frontend) const; + virtual void setRootEntity(QEntity *rootObject); + private: - virtual void setRootEntity(QEntity *rootObject) = 0; virtual void onInitialize(const QVariantMap &data) = 0; virtual void onStartup(); virtual void onShutdown(); virtual void onCleanup() = 0; + virtual void visitNode(QNode *node); + Q_DECLARE_PRIVATE(QAbstractAspect) friend class QAspectManager; }; diff --git a/src/input/frontend/qinputaspect.cpp b/src/input/frontend/qinputaspect.cpp index d07a5b366..220484d4d 100644 --- a/src/input/frontend/qinputaspect.cpp +++ b/src/input/frontend/qinputaspect.cpp @@ -42,8 +42,6 @@ #include "keyboardinput_p.h" #include "mousecontroller_p.h" #include "mouseinput_p.h" -#include <Qt3DCore/qnodevisitor.h> -#include <Qt3DCore/qscenepropertychange.h> #include <Qt3DInput/qkeyboardcontroller.h> #include <Qt3DInput/qkeyboardinput.h> #include <Qt3DInput/qmousecontroller.h> @@ -185,29 +183,6 @@ QVector<QAspectJobPtr> QInputAspect::jobsToExecute(qint64 time) return jobs; } -void QInputAspect::sceneNodeAdded(Qt3DCore::QSceneChangePtr &e) -{ - QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); - QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); - QNode *n = nodePtr.data(); - QNodeVisitor visitor; - visitor.traverse(n, this, &QInputAspect::visitNode); -} - -void QInputAspect::sceneNodeRemoved(Qt3DCore::QSceneChangePtr &e) -{ - QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); - QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); - QNode *n = nodePtr.data(); - QAbstractAspect::clearBackendNode(n); -} - -void QInputAspect::setRootEntity(Qt3DCore::QEntity *rootObject) -{ - QNodeVisitor visitor; - visitor.traverse(rootObject, this, &QInputAspect::visitNode); -} - void QInputAspect::onInitialize(const QVariantMap &) { Q_D(QInputAspect); @@ -232,11 +207,6 @@ void QInputAspect::onCleanup() d->m_inputHandler.reset(Q_NULLPTR); } -void QInputAspect::visitNode(Qt3DCore::QNode *node) -{ - QAbstractAspect::createBackendNode(node); -} - } // namespace Qt3DInput QT_END_NAMESPACE diff --git a/src/input/frontend/qinputaspect.h b/src/input/frontend/qinputaspect.h index 78054e08d..9d0292c46 100644 --- a/src/input/frontend/qinputaspect.h +++ b/src/input/frontend/qinputaspect.h @@ -63,20 +63,15 @@ public: QVector<Qt3DCore::QAspectJobPtr> jobsToExecute(qint64 time) Q_DECL_OVERRIDE; - void sceneNodeAdded(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; - void sceneNodeRemoved(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; - public Q_SLOTS: void setCamera(Qt3DCore::QCamera *camera); private: - void setRootEntity(Qt3DCore::QEntity *rootObject) Q_DECL_OVERRIDE; void onInitialize(const QVariantMap &data) Q_DECL_OVERRIDE; void onStartup() Q_DECL_OVERRIDE; void onShutdown() Q_DECL_OVERRIDE; void onCleanup() Q_DECL_OVERRIDE; - void visitNode(Qt3DCore::QNode *node); void loadInputDevicePlugins(); Q_DECLARE_PRIVATE(QInputAspect) diff --git a/src/logic/qlogicaspect.cpp b/src/logic/qlogicaspect.cpp index c73091b21..a34dffe89 100644 --- a/src/logic/qlogicaspect.cpp +++ b/src/logic/qlogicaspect.cpp @@ -41,9 +41,6 @@ #include "manager_p.h" #include "qlogiccomponent.h" -#include <Qt3DCore/qnodevisitor.h> -#include <Qt3DCore/qscenepropertychange.h> - #include <Qt3DCore/qnode.h> #include <Qt3DCore/private/qchangearbiter_p.h> #include <Qt3DCore/private/qscene_p.h> @@ -106,29 +103,6 @@ QVector<QAspectJobPtr> QLogicAspect::jobsToExecute(qint64 time) return jobs; } -void QLogicAspect::sceneNodeAdded(Qt3DCore::QSceneChangePtr &e) -{ - QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); - QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); - QNode *n = nodePtr.data(); - QNodeVisitor visitor; - visitor.traverse(n, this, &QLogicAspect::visitNode); -} - -void QLogicAspect::sceneNodeRemoved(Qt3DCore::QSceneChangePtr &e) -{ - QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); - QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); - QNode *n = nodePtr.data(); - QAbstractAspect::clearBackendNode(n); -} - -void QLogicAspect::setRootEntity(Qt3DCore::QEntity *rootObject) -{ - QNodeVisitor visitor; - visitor.traverse(rootObject, this, &QLogicAspect::visitNode); -} - void QLogicAspect::onInitialize(const QVariantMap &data) { Q_UNUSED(data); @@ -152,11 +126,6 @@ void QLogicAspect::onShutdown() d->m_executor->clearQueueAndProceed(); } -void QLogicAspect::visitNode(Qt3DCore::QNode *node) -{ - QAbstractAspect::createBackendNode(node); -} - } // namespace Qt3DLogic QT_END_NAMESPACE diff --git a/src/logic/qlogicaspect.h b/src/logic/qlogicaspect.h index eaf74e7a2..3abc5e03b 100644 --- a/src/logic/qlogicaspect.h +++ b/src/logic/qlogicaspect.h @@ -54,21 +54,15 @@ public: QVector<Qt3DCore::QAspectJobPtr> jobsToExecute(qint64 time) Q_DECL_OVERRIDE; - void sceneNodeAdded(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; - void sceneNodeRemoved(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; - protected: void registerBackendTypes(); private: - void setRootEntity(Qt3DCore::QEntity *rootObject) Q_DECL_OVERRIDE; void onInitialize(const QVariantMap &data) Q_DECL_OVERRIDE; void onStartup() Q_DECL_OVERRIDE; void onShutdown() Q_DECL_OVERRIDE; void onCleanup() Q_DECL_OVERRIDE; - void visitNode(Qt3DCore::QNode *node); - Q_DECLARE_PRIVATE(QLogicAspect) QLogicAspect(QLogicAspectPrivate &dd, QObject *parent); }; diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index 13b629373..3d53a0723 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -118,8 +118,6 @@ #include <Qt3DCore/qentity.h> #include <Qt3DCore/qtransform.h> -#include <Qt3DCore/qnodevisitor.h> -#include <Qt3DCore/qscenepropertychange.h> #include <Qt3DCore/qnode.h> #include <Qt3DCore/qservicelocator.h> @@ -394,23 +392,6 @@ QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time) return jobs; } -void QRenderAspect::sceneNodeAdded(Qt3DCore::QSceneChangePtr &e) -{ - QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); - QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); - QNode *n = nodePtr.data(); - QNodeVisitor visitor; - visitor.traverse(n, this, &QRenderAspect::visitNode); -} - -void QRenderAspect::sceneNodeRemoved(Qt3DCore::QSceneChangePtr &e) -{ - QScenePropertyChangePtr propertyChange = e.staticCast<QScenePropertyChange>(); - QNodePtr nodePtr = propertyChange->value().value<QNodePtr>(); - QNode *n = nodePtr.data(); - QAbstractAspect::clearBackendNode(n); -} - qint64 QRenderAspect::time() const { Q_D(const QRenderAspect); @@ -419,10 +400,9 @@ qint64 QRenderAspect::time() const void QRenderAspect::setRootEntity(Qt3DCore::QEntity *rootObject) { - // setSceneGraphRoot is synchronized using the Renderer's mutex + QAbstractAspect::setRootEntity(rootObject); + Q_D(QRenderAspect); - QNodeVisitor visitor; - visitor.traverse(rootObject, this, &QRenderAspect::visitNode); d->m_renderer->setSceneRoot(d->m_renderer->nodeManagers()->lookupResource<Render::Entity, Render::EntityManager>(rootObject->id())); } @@ -474,11 +454,6 @@ void QRenderAspect::onCleanup() d->m_renderer = Q_NULLPTR; } -void QRenderAspect::visitNode(Qt3DCore::QNode *node) -{ - QAbstractAspect::createBackendNode(node); -} - // Returns a vector of jobs to be performed for dirty buffers // 1 dirty buffer == 1 job, all job can be performed in parallel QVector<Qt3DCore::QAspectJobPtr> QRenderAspect::createRenderBufferJobs() diff --git a/src/render/frontend/qrenderaspect.h b/src/render/frontend/qrenderaspect.h index eb548a917..50f1008b7 100644 --- a/src/render/frontend/qrenderaspect.h +++ b/src/render/frontend/qrenderaspect.h @@ -70,9 +70,6 @@ public: QVector<Qt3DCore::QAspectJobPtr> jobsToExecute(qint64 time) Q_DECL_OVERRIDE; - void sceneNodeAdded(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; - void sceneNodeRemoved(Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE; - qint64 time() const; protected: @@ -86,8 +83,6 @@ protected: void onShutdown() Q_DECL_OVERRIDE; void onCleanup() Q_DECL_OVERRIDE; - void visitNode(Qt3DCore::QNode *node); - QVector<Qt3DCore::QAspectJobPtr> createRenderBufferJobs(); QVector<Qt3DCore::QAspectJobPtr> createGeometryRendererJobs(); |