From 72c555c231c69d13f9924b0aeb2ce199890e9a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20M=C3=A4=C3=A4tt=C3=A4?= Date: Wed, 2 Nov 2016 14:51:46 +0200 Subject: Add resource accessor to backend node and nodemanagers Change-Id: I483483ac0bb43dd7cb76c971a1141f0e4af64b34 Reviewed-by: Kevin Ottens --- src/render/backend/backendnode.cpp | 11 ++++++++++- src/render/backend/backendnode_p.h | 4 ++++ src/render/backend/nodemanagers.cpp | 7 +++++++ src/render/backend/nodemanagers_p.h | 6 ++++++ 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/render/backend/backendnode.cpp b/src/render/backend/backendnode.cpp index 606016092..0dc8da237 100644 --- a/src/render/backend/backendnode.cpp +++ b/src/render/backend/backendnode.cpp @@ -37,7 +37,10 @@ ** ****************************************************************************/ -#include "backendnode_p.h" +#include +#include +#include +#include QT_BEGIN_NAMESPACE @@ -72,6 +75,12 @@ void BackendNode::markDirty(AbstractRenderer::BackendNodeDirtySet changes) m_renderer->markDirty(changes, this); } +QSharedPointer BackendNode::resourceAccessor() +{ + Render::Renderer *r = static_cast(renderer()); + return r->nodeManagers()->resourceAccessor(); +} + } // namespace Render } // namespace Qt3DRender diff --git a/src/render/backend/backendnode_p.h b/src/render/backend/backendnode_p.h index 1273144a4..05bea3266 100644 --- a/src/render/backend/backendnode_p.h +++ b/src/render/backend/backendnode_p.h @@ -61,6 +61,8 @@ namespace Qt3DRender { namespace Render { +class RenderBackendResourceAccessor; + class Q_AUTOTEST_EXPORT BackendNode : public Qt3DCore::QBackendNode { public: @@ -70,6 +72,8 @@ public: void setRenderer(AbstractRenderer *renderer); AbstractRenderer *renderer() const; + QSharedPointer resourceAccessor(); + protected: void markDirty(AbstractRenderer::BackendNodeDirtySet changes); AbstractRenderer *m_renderer; diff --git a/src/render/backend/nodemanagers.cpp b/src/render/backend/nodemanagers.cpp index 0234db979..534bb4b9f 100644 --- a/src/render/backend/nodemanagers.cpp +++ b/src/render/backend/nodemanagers.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include @@ -89,6 +90,7 @@ NodeManagers::NodeManagers() , m_lightManager(new LightManager()) , m_computeJobManager(new ComputeCommandManager()) , m_renderStateManager(new RenderStateManager()) + , m_resourceAccessor(new ResourceAccessor(this)) { } @@ -129,6 +131,11 @@ NodeManagers::~NodeManagers() delete m_renderNodesManager; } +QSharedPointer NodeManagers::resourceAccessor() +{ + return m_resourceAccessor; +} + template<> CameraManager *NodeManagers::manager() const Q_DECL_NOTHROW { diff --git a/src/render/backend/nodemanagers_p.h b/src/render/backend/nodemanagers_p.h index 7e1259a1d..a57628607 100644 --- a/src/render/backend/nodemanagers_p.h +++ b/src/render/backend/nodemanagers_p.h @@ -129,6 +129,8 @@ class Light; class ComputeCommand; class RenderStateNode; +class ResourceAccessor; + class QT3DRENDERSHARED_PRIVATE_EXPORT NodeManagers { public: @@ -203,6 +205,8 @@ public: inline ComputeCommandManager *computeJobManager() const Q_DECL_NOEXCEPT { return m_computeJobManager; } inline RenderStateManager *renderStateManager() const Q_DECL_NOEXCEPT { return m_renderStateManager; } + QSharedPointer resourceAccessor(); + private: CameraManager *m_cameraManager; EntityManager *m_renderNodesManager; @@ -237,6 +241,8 @@ private: LightManager *m_lightManager; ComputeCommandManager *m_computeJobManager; RenderStateManager *m_renderStateManager; + + QSharedPointer m_resourceAccessor; }; // Specializations -- cgit v1.2.3