summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-07-04 08:52:19 +0200
committerPaul Lemire <paul.lemire@kdab.com>2014-07-05 19:05:52 +0200
commit64440f53b68acea15fa4a612f59cbf560514c4cc (patch)
treec608afc8522740c2a59092f050e69ddc1873aaae
parentf9e136d875b2f716d26f109820c7d990d650ae86 (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.qml58
-rw-r--r--examples/gltf/main.qml2
-rw-r--r--examples/multiviewport/main.qml2
-rw-r--r--examples/simple-qml/main.qml2
-rw-r--r--src/bulletphysics/bulletphysicsaspect.cpp4
-rw-r--r--src/bulletphysics/bulletphysicsaspect.h4
-rw-r--r--src/core/aspects/abstractaspect.cpp5
-rw-r--r--src/core/aspects/abstractaspect.h11
-rw-r--r--src/core/aspects/qaspectmanager.cpp11
-rw-r--r--src/core/aspects/qaspectmanager.h3
-rw-r--r--src/core/window.cpp11
-rw-r--r--src/openal/openalaspect.cpp4
-rw-r--r--src/openal/openalaspect.h4
-rw-r--r--src/quick3d/imports/core/qt3dquick3dcoreplugin.cpp2
-rw-r--r--src/render/backend/renderer.cpp4
-rw-r--r--src/render/backend/renderer.h6
-rw-r--r--src/render/backend/rendereraspect.cpp4
-rw-r--r--src/render/backend/rendereraspect.h4
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();