diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-07-04 08:52:19 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2014-07-05 19:05:52 +0200 |
commit | 64440f53b68acea15fa4a612f59cbf560514c4cc (patch) | |
tree | c608afc8522740c2a59092f050e69ddc1873aaae | |
parent | f9e136d875b2f716d26f109820c7d990d650ae86 (diff) |
Force root object of aspects to be an Entity
This will have two benefits :
* Reduce confusion for users who might not know when to use a Node or an
Entity
* Simplify the backend which otherwise is forced to check for Nodes and Entity
when only Entity matter
Change-Id: I5877a48934806ab4a2292396fda5e33098e0bb71
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | examples/assimp/main.qml | 58 | ||||
-rw-r--r-- | examples/gltf/main.qml | 2 | ||||
-rw-r--r-- | examples/multiviewport/main.qml | 2 | ||||
-rw-r--r-- | examples/simple-qml/main.qml | 2 | ||||
-rw-r--r-- | src/bulletphysics/bulletphysicsaspect.cpp | 4 | ||||
-rw-r--r-- | src/bulletphysics/bulletphysicsaspect.h | 4 | ||||
-rw-r--r-- | src/core/aspects/abstractaspect.cpp | 5 | ||||
-rw-r--r-- | src/core/aspects/abstractaspect.h | 11 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager.cpp | 11 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager.h | 3 | ||||
-rw-r--r-- | src/core/window.cpp | 11 | ||||
-rw-r--r-- | src/openal/openalaspect.cpp | 4 | ||||
-rw-r--r-- | src/openal/openalaspect.h | 4 | ||||
-rw-r--r-- | src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp | 2 | ||||
-rw-r--r-- | src/render/backend/renderer.cpp | 4 | ||||
-rw-r--r-- | src/render/backend/renderer.h | 6 | ||||
-rw-r--r-- | src/render/backend/rendereraspect.cpp | 4 | ||||
-rw-r--r-- | src/render/backend/rendereraspect.h | 4 |
18 files changed, 66 insertions, 75 deletions
diff --git a/examples/assimp/main.qml b/examples/assimp/main.qml index a51cf78e1..22ef28997 100644 --- a/examples/assimp/main.qml +++ b/examples/assimp/main.qml @@ -43,40 +43,34 @@ import Qt3D 2.0 import Qt3D.Render 2.0 import QtQuick 2.1 as QQ2 -Node +Entity { - id: root - objectName: "root" - - Entity - { - components: FrameGraph { - activeFrameGraph: Viewport { - rect: Qt.rect(0, 0, 1, 1) - CameraSelector { - camera: Entity { - id : camera - components : [ - Transform { - LookAt { - position: Qt.vector3d( 0.0, 0.0, -20.0 ) - upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) - viewCenter: Qt.vector3d( 0.0, 0.0, 10.0 ) - } - Rotate { - angle : -30 - axis : Qt.vector3d(0, 1, 0) - } - }, - CameraLens { - projectionType: CameraLens.PerspectiveProjection - fieldOfView: 60 - aspectRatio: 16/9 - nearPlane : 0.01 - farPlane : 1000.0 + components: FrameGraph { + activeFrameGraph: Viewport { + rect: Qt.rect(0, 0, 1, 1) + CameraSelector { + camera: Entity { + id : camera + components : [ + Transform { + LookAt { + position: Qt.vector3d( 0.0, 0.0, -20.0 ) + upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) + viewCenter: Qt.vector3d( 0.0, 0.0, 10.0 ) + } + Rotate { + angle : -30 + axis : Qt.vector3d(0, 1, 0) } - ] - } + }, + CameraLens { + projectionType: CameraLens.PerspectiveProjection + fieldOfView: 60 + aspectRatio: 16/9 + nearPlane : 0.01 + farPlane : 1000.0 + } + ] } } } diff --git a/examples/gltf/main.qml b/examples/gltf/main.qml index d9697acef..857465565 100644 --- a/examples/gltf/main.qml +++ b/examples/gltf/main.qml @@ -49,7 +49,7 @@ import Qt3D.Render 2.0 // QtQuick 2.1 all over the place. import QtQuick 2.1 as QQ2 -Node { +Entity { id: root objectName: "root" diff --git a/examples/multiviewport/main.qml b/examples/multiviewport/main.qml index 02c45216c..c709456be 100644 --- a/examples/multiviewport/main.qml +++ b/examples/multiviewport/main.qml @@ -44,7 +44,7 @@ import Qt3D 2.0 import Qt3D.Render 2.0 -Node { +Entity { id : rootNode CameraLens { diff --git a/examples/simple-qml/main.qml b/examples/simple-qml/main.qml index 5a8c8688f..ec3223672 100644 --- a/examples/simple-qml/main.qml +++ b/examples/simple-qml/main.qml @@ -50,7 +50,7 @@ import Qt3D.Render 2.0 // QtQuick 2.1 all over the place. import QtQuick 2.1 as QQ2 -Node { +Entity { id: root objectName: "root" diff --git a/src/bulletphysics/bulletphysicsaspect.cpp b/src/bulletphysics/bulletphysicsaspect.cpp index d5a057923..38b8ffe73 100644 --- a/src/bulletphysics/bulletphysicsaspect.cpp +++ b/src/bulletphysics/bulletphysicsaspect.cpp @@ -62,12 +62,12 @@ QVector<QJobPtr> BulletPhysicsAspect::jobsToExecute() return jobs; } -void BulletPhysicsAspect::registerAspectHelper(Node *rootObject) +void BulletPhysicsAspect::registerAspectHelper(Entity *rootObject) { } -void BulletPhysicsAspect::unregisterAspectHelper(Node *rootObject) +void BulletPhysicsAspect::unregisterAspectHelper(Entity *rootObject) { } diff --git a/src/bulletphysics/bulletphysicsaspect.h b/src/bulletphysics/bulletphysicsaspect.h index 624cf2795..38ac7111f 100644 --- a/src/bulletphysics/bulletphysicsaspect.h +++ b/src/bulletphysics/bulletphysicsaspect.h @@ -62,8 +62,8 @@ public: // AbstractAspect interface protected: - void registerAspectHelper(Node *rootObject) Q_DECL_OVERRIDE; - void unregisterAspectHelper(Node *rootObject) Q_DECL_OVERRIDE; + void registerAspectHelper(Entity *rootObject) Q_DECL_OVERRIDE; + void unregisterAspectHelper(Entity *rootObject) Q_DECL_OVERRIDE; void initializeHelper(QAspectManager *aspectManager) Q_DECL_OVERRIDE; void cleanupHelper() Q_DECL_OVERRIDE; }; diff --git a/src/core/aspects/abstractaspect.cpp b/src/core/aspects/abstractaspect.cpp index 7da43296a..181b09fde 100644 --- a/src/core/aspects/abstractaspect.cpp +++ b/src/core/aspects/abstractaspect.cpp @@ -40,6 +40,7 @@ ****************************************************************************/ #include "abstractaspect.h" +#include "entity.h" QT_BEGIN_NAMESPACE @@ -52,7 +53,7 @@ AbstractAspect::AbstractAspect(AspectType aspectType, QObject *parent) { } -void AbstractAspect::registerAspect(Node *rootObject) +void AbstractAspect::registerAspect(Entity *rootObject) { if (rootObject == m_root) return; @@ -61,7 +62,7 @@ void AbstractAspect::registerAspect(Node *rootObject) registerAspectHelper(rootObject); } -void AbstractAspect::unregisterAspect(Node *rootObject) +void AbstractAspect::unregisterAspect(Entity *rootObject) { unregisterAspectHelper(rootObject); m_root = rootObject; diff --git a/src/core/aspects/abstractaspect.h b/src/core/aspects/abstractaspect.h index 913ad2b89..ad5395090 100644 --- a/src/core/aspects/abstractaspect.h +++ b/src/core/aspects/abstractaspect.h @@ -55,6 +55,7 @@ namespace Qt3D { class QAspectManager; class Node; +class Entity; class QT3DCORESHARED_EXPORT AbstractAspect : public QObject, public QJobProviderInterface { @@ -77,8 +78,8 @@ public: AspectType aspectType() const { return m_aspectType; } QAspectManager *aspectManager() const { return m_aspectManager; } - void registerAspect(Node *rootObject); - void unregisterAspect(Node *rootObject); + void registerAspect(Entity *rootObject); + void unregisterAspect(Entity *rootObject); void initialize(QAspectManager *aspectManager); void cleanup(); @@ -86,15 +87,15 @@ public: virtual void setWindow(QWindow* win); protected: - virtual void registerAspectHelper(Node *rootObject) = 0; - virtual void unregisterAspectHelper(Node *rootObject) = 0; + virtual void registerAspectHelper(Entity *rootObject) = 0; + virtual void unregisterAspectHelper(Entity *rootObject) = 0; virtual void initializeHelper(QAspectManager *aspectManager) = 0; virtual void cleanupHelper() = 0; private: QAspectManager *m_aspectManager; - Node *m_root; + Entity *m_root; AspectType m_aspectType; }; diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp index 7e7852e28..e2eac1e61 100644 --- a/src/core/aspects/qaspectmanager.cpp +++ b/src/core/aspects/qaspectmanager.cpp @@ -48,7 +48,7 @@ #include "qjobmanagerinterface.h" #include "qscheduler.h" #include "qtickclock.h" -#include "node.h" +#include "entity.h" #include "corelogging.h" #include <QEventLoop> @@ -91,7 +91,11 @@ void QAspectManager::setRoot(QObject *rootObject, QWaitCondition *waitCondition) { qCDebug(Aspects) << Q_FUNC_INFO; - Node *root = qobject_cast<Node *>(rootObject); + Entity *root = qobject_cast<Entity *>(rootObject); + + if (!root) + qWarning() << "Root object is not an Entity"; + if (root == m_root) return; @@ -113,8 +117,7 @@ void QAspectManager::setRoot(QObject *rootObject, QWaitCondition *waitCondition) m_root = root; - if (rootObject) { - // TODO Load all aspect plugins that are found and required. + if (m_root) { Q_FOREACH (AbstractAspect *aspect, m_aspects) aspect->initialize(this); diff --git a/src/core/aspects/qaspectmanager.h b/src/core/aspects/qaspectmanager.h index 5f5d5ebd3..9b9ca34bf 100644 --- a/src/core/aspects/qaspectmanager.h +++ b/src/core/aspects/qaspectmanager.h @@ -58,6 +58,7 @@ class Node; class QChangeArbiter; class QJobManagerInterface; class QScheduler; +class Entity; class QAspectManager : public QObject { @@ -81,7 +82,7 @@ public slots: private: QList<AbstractAspect *> m_aspects; - Node *m_root; + Entity *m_root; QWindow *m_window; QScheduler *m_scheduler; QJobManagerInterface *m_jobManager; diff --git a/src/core/window.cpp b/src/core/window.cpp index 76610606e..d32b05838 100644 --- a/src/core/window.cpp +++ b/src/core/window.cpp @@ -126,17 +126,6 @@ void Window::setRootObject( QObject* obj ) m_controller->setCamera(m_camera); m_updateTimer->start(); } - -// -// Entity *ball = node->findChild<Entity *>(QStringLiteral("ball")); -// if (ball) { -// QList<Component *> components = ball->components(); -// qDebug() << components; -// } - - //Node *node = qobject_cast<Node *>(m_root.data()); - //if (node) - //node->dump(); } void Window::resizeEvent( QResizeEvent* e ) diff --git a/src/openal/openalaspect.cpp b/src/openal/openalaspect.cpp index 12770f5fe..716edeb54 100644 --- a/src/openal/openalaspect.cpp +++ b/src/openal/openalaspect.cpp @@ -62,12 +62,12 @@ QVector<QJobPtr> OpenALAspect::jobsToExecute() return jobs; } -void OpenALAspect::registerAspectHelper(Node *rootObject) +void OpenALAspect::registerAspectHelper(Entity *rootObject) { } -void OpenALAspect::unregisterAspectHelper(Node *rootObject) +void OpenALAspect::unregisterAspectHelper(Entity *rootObject) { } diff --git a/src/openal/openalaspect.h b/src/openal/openalaspect.h index c5cab24de..8148be486 100644 --- a/src/openal/openalaspect.h +++ b/src/openal/openalaspect.h @@ -62,8 +62,8 @@ public: // AbstractAspect interface protected: - void registerAspectHelper(Node *rootObject) Q_DECL_OVERRIDE; - void unregisterAspectHelper(Node *rootObject) Q_DECL_OVERRIDE; + void registerAspectHelper(Entity *rootObject) Q_DECL_OVERRIDE; + void unregisterAspectHelper(Entity *rootObject) Q_DECL_OVERRIDE; void initializeHelper(QAspectManager *aspectManager) Q_DECL_OVERRIDE; void cleanupHelper() Q_DECL_OVERRIDE; }; diff --git a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp index 2833ffad4..d7a88229d 100644 --- a/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp +++ b/src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp @@ -73,6 +73,8 @@ void Qt3DQuick3DCorePlugin::registerTypes(const char *uri) qmlRegisterType<Qt3D::Quick::Quick3DConfiguration>(uri, 2, 0, "Configuration"); qmlRegisterExtendedType<Qt3D::Entity, Qt3D::Quick::Quick3DEntity>(uri, 2, 0, "Entity"); qmlRegisterExtendedType<Qt3D::Transform, Qt3D::Quick::Quick3DTransform>(uri, 2, 0, "Transform"); + // Ideally we want to make Node an uncreatable type + // We would need qmlRegisterUncreatableExtendedType for that qmlRegisterExtendedType<Qt3D::Node, Qt3D::Quick::Quick3DNode>(uri, 2, 0, "Node"); qmlRegisterExtendedType<Qt3D::Camera, Qt3D::Quick::Quick3DNode>(uri, 2, 0, "Camera"); qmlRegisterType<Qt3D::CameraLens>(uri, 2, 0, "CameraLens"); diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index 105297b18..eebdf4b2a 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -293,7 +293,7 @@ Render::FrameGraphNode *Renderer::frameGraphRoot() const } // QAspectThread context -void Renderer::setSceneGraphRoot(Node *sgRoot) +void Renderer::setSceneGraphRoot(Entity *sgRoot) { Q_ASSERT(sgRoot); @@ -321,7 +321,7 @@ void Renderer::setSceneGraphRoot(Node *sgRoot) // - World bounding volumes } -Node *Renderer::sceneGraphRoot() const +Entity *Renderer::sceneGraphRoot() const { return m_sceneGraphRoot; } diff --git a/src/render/backend/renderer.h b/src/render/backend/renderer.h index 6bef35b33..a3317609a 100644 --- a/src/render/backend/renderer.h +++ b/src/render/backend/renderer.h @@ -125,8 +125,8 @@ public: void setFrameGraphRoot(Render::FrameGraphNode *fgRoot); Render::FrameGraphNode *frameGraphRoot() const; - void setSceneGraphRoot(Qt3D::Node *sgRoot); - Qt3D::Node *sceneGraphRoot() const; + void setSceneGraphRoot(Entity *sgRoot); + Entity *sceneGraphRoot() const; RenderNode *renderSceneRoot() const { return m_renderSceneRoot; } void render(); @@ -179,7 +179,7 @@ private: // Frame graph root Render::FrameGraphNode *m_frameGraphRoot; - Qt3D::Node *m_sceneGraphRoot; + Entity *m_sceneGraphRoot; RenderNode *m_renderSceneRoot; QHash<QMaterial*, RenderMaterial*> m_materialHash; diff --git a/src/render/backend/rendereraspect.cpp b/src/render/backend/rendereraspect.cpp index f7459188b..46bd7f3d9 100644 --- a/src/render/backend/rendereraspect.cpp +++ b/src/render/backend/rendereraspect.cpp @@ -123,13 +123,13 @@ QVector<QJobPtr> RendererAspect::jobsToExecute() return jobs; } -void RendererAspect::registerAspectHelper(Node *rootObject) +void RendererAspect::registerAspectHelper(Entity *rootObject) { Render::Renderer *renderer = m_renderThread->renderer(); renderer->setSceneGraphRoot(rootObject); } -void RendererAspect::unregisterAspectHelper(Node *rootObject) +void RendererAspect::unregisterAspectHelper(Entity *rootObject) { Q_UNUSED(rootObject); } diff --git a/src/render/backend/rendereraspect.h b/src/render/backend/rendereraspect.h index 6eb2f5e00..da981cd4d 100644 --- a/src/render/backend/rendereraspect.h +++ b/src/render/backend/rendereraspect.h @@ -66,8 +66,8 @@ public: QVector<QJobPtr> jobsToExecute() Q_DECL_OVERRIDE; protected: - void registerAspectHelper(Node *rootObject) Q_DECL_OVERRIDE; - void unregisterAspectHelper(Node *rootObject) Q_DECL_OVERRIDE; + void registerAspectHelper(Entity *rootObject) Q_DECL_OVERRIDE; + void unregisterAspectHelper(Entity *rootObject) Q_DECL_OVERRIDE; void initializeHelper(QAspectManager *aspectManager); void cleanupHelper(); |