summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-03-30 09:11:10 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-03-31 09:33:45 +0000
commit6e72c1c842bc9585cd33eff6c84665cf347af08b (patch)
tree5b9dd17fca2931aab52ff719c01383b4b007b014
parent826bf2a4f6ab6a816179f8ef30682ee1b4b8e652 (diff)
RenderPassFilter handles creation
Also add convenience setter to ParameterPack. Change-Id: I16084aa6ac4ac2387068bde3ea4dbd23c4feebeb Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/render/backend/parameterpack_p.h5
-rw-r--r--src/render/framegraph/renderpassfilternode.cpp10
-rw-r--r--src/render/framegraph/renderpassfilternode_p.h2
3 files changed, 17 insertions, 0 deletions
diff --git a/src/render/backend/parameterpack_p.h b/src/render/backend/parameterpack_p.h
index da1ec6e44..d09f2b7cb 100644
--- a/src/render/backend/parameterpack_p.h
+++ b/src/render/backend/parameterpack_p.h
@@ -70,6 +70,11 @@ public:
void removeParameter(Qt3DCore::QNodeId parameterId);
QVector<Qt3DCore::QNodeId> parameters() const;
+ void setParameters(const Qt3DCore::QNodeIdVector &parameterIds)
+ {
+ m_peers = parameterIds;
+ }
+
private:
QVector<Qt3DCore::QNodeId> m_peers;
};
diff --git a/src/render/framegraph/renderpassfilternode.cpp b/src/render/framegraph/renderpassfilternode.cpp
index a36560d09..c8bd81b4f 100644
--- a/src/render/framegraph/renderpassfilternode.cpp
+++ b/src/render/framegraph/renderpassfilternode.cpp
@@ -40,6 +40,7 @@
#include "renderpassfilternode_p.h"
#include "qfilterkey.h"
#include "qrenderpassfilter.h"
+#include <Qt3DRender/private/qrenderpassfilter_p.h>
#include <Qt3DCore/qscenepropertychange.h>
#include <Qt3DRender/qparameter.h>
@@ -69,6 +70,15 @@ void RenderPassFilter::updateFromPeer(Qt3DCore::QNode *peer)
m_parameterPack.appendParameter(p->id());
}
+void RenderPassFilter::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
+{
+ const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QRenderPassFilterData>>(change);
+ const auto &data = typedChange->data;
+ setEnabled(change->isNodeEnabled());
+ m_filters = data.matchIds;
+ m_parameterPack.setParameters(data.parameterIds);
+}
+
QVector<Qt3DCore::QNodeId> RenderPassFilter::filters() const
{
return m_filters;
diff --git a/src/render/framegraph/renderpassfilternode_p.h b/src/render/framegraph/renderpassfilternode_p.h
index d1c4e8234..4047beb89 100644
--- a/src/render/framegraph/renderpassfilternode_p.h
+++ b/src/render/framegraph/renderpassfilternode_p.h
@@ -81,6 +81,8 @@ public:
void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE;
private:
+ void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) Q_DECL_FINAL;
+
QVector<Qt3DCore::QNodeId> m_filters;
ParameterPack m_parameterPack;
};