summaryrefslogtreecommitdiffstats
path: root/src/render/materialsystem/renderpass.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-24 14:55:12 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-04-27 11:19:38 +0000
commit69efa162f9ac0659814968512604afde4419aa27 (patch)
treeced162e3b81642dcad1cdde415a08fd42bb4548b /src/render/materialsystem/renderpass.cpp
parent5e6567c809d8771343aed756e30a6fdb7d034873 (diff)
RenderPass use new added/removed change types
Again, we should be able to avoid the NodeRemoved/NodeAdded changes for the QShaderProgram* property and rely upon the automatic handling. Leaving this for a followup round of changes. Change-Id: I8a9eb2b8471a47c84032191513d86b59e15a087e Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/materialsystem/renderpass.cpp')
-rw-r--r--src/render/materialsystem/renderpass.cpp51
1 files changed, 25 insertions, 26 deletions
diff --git a/src/render/materialsystem/renderpass.cpp b/src/render/materialsystem/renderpass.cpp
index cfc5d6164..22f3bb252 100644
--- a/src/render/materialsystem/renderpass.cpp
+++ b/src/render/materialsystem/renderpass.cpp
@@ -49,6 +49,8 @@
#include <Qt3DRender/private/renderstateset_p.h>
#include <Qt3DCore/qnodepropertychange.h>
+#include <Qt3DCore/qnodeaddedpropertychange.h>
+#include <Qt3DCore/qnoderemovedpropertychange.h>
QT_BEGIN_NAMESPACE
@@ -81,7 +83,7 @@ void RenderPass::updateFromPeer(Qt3DCore::QNode *peer)
// The RenderPass clones frontend bindings in case the frontend ever removes them
// TO DO: We probably need a QParameterMapper manager
Q_FOREACH (QFilterKey *c, pass->filterKeys())
- appendAnnotation(c->id());
+ appendFilterKey(c->id());
Q_FOREACH (QRenderState *renderState, pass->renderStates())
appendRenderState(renderState->id());
Q_FOREACH (QParameter *p, pass->parameters())
@@ -101,33 +103,30 @@ void RenderPass::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &c
void RenderPass::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
{
- QNodePropertyChangePtr propertyChange = qSharedPointerCast<QNodePropertyChange>(e);
switch (e->type()) {
-
case NodeAdded: {
- if (propertyChange->propertyName() == QByteArrayLiteral("filterKeys")) {
- appendAnnotation(propertyChange->value().value<QNodeId>());
- } else if (propertyChange->propertyName() == QByteArrayLiteral("shaderProgram")) {
- m_shaderUuid = propertyChange->value().value<QNodeId>();
- } else if (propertyChange->propertyName() == QByteArrayLiteral("renderState")) {
- QNodePtr nodePtr = propertyChange->value().value<QNodePtr>();
- appendRenderState(nodePtr->id());
- } else if (propertyChange->propertyName() == QByteArrayLiteral("parameter")) {
- m_parameterPack.appendParameter(propertyChange->value().value<QNodeId>());
- }
+ const auto change = qSharedPointerCast<QNodeAddedPropertyChange>(e);
+ if (change->propertyName() == QByteArrayLiteral("filterKeys"))
+ appendFilterKey(change->addedNodeId());
+ else if (change->propertyName() == QByteArrayLiteral("shaderProgram"))
+ m_shaderUuid = change->addedNodeId();
+ else if (change->propertyName() == QByteArrayLiteral("renderState"))
+ appendRenderState(change->addedNodeId());
+ else if (change->propertyName() == QByteArrayLiteral("parameter"))
+ m_parameterPack.appendParameter(change->addedNodeId());
break;
}
case NodeRemoved: {
- if (propertyChange->propertyName() == QByteArrayLiteral("filterKeys")) {
- removeAnnotation(propertyChange->value().value<QNodeId>());
- } else if (propertyChange->propertyName() == QByteArrayLiteral("shaderProgram")) {
+ const auto change = qSharedPointerCast<QNodeRemovedPropertyChange>(e);
+ if (change->propertyName() == QByteArrayLiteral("filterKeys"))
+ removeFilterKey(change->removedNodeId());
+ else if (change->propertyName() == QByteArrayLiteral("shaderProgram"))
m_shaderUuid = QNodeId();
- } else if (propertyChange->propertyName() == QByteArrayLiteral("renderState")) {
- removeRenderState(propertyChange->value().value<QNodeId>());
- } else if (propertyChange->propertyName() == QByteArrayLiteral("parameter")) {
- m_parameterPack.removeParameter(propertyChange->value().value<QNodeId>());
- }
+ else if (change->propertyName() == QByteArrayLiteral("renderState"))
+ removeRenderState(change->removedNodeId());
+ else if (change->propertyName() == QByteArrayLiteral("parameter"))
+ m_parameterPack.removeParameter(change->removedNodeId());
break;
}
@@ -154,15 +153,15 @@ QVector<Qt3DCore::QNodeId> RenderPass::parameters() const
return m_parameterPack.parameters();
}
-void RenderPass::appendAnnotation(Qt3DCore::QNodeId annotationId)
+void RenderPass::appendFilterKey(Qt3DCore::QNodeId filterKeyId)
{
- if (!m_filterKeyList.contains(annotationId))
- m_filterKeyList.append(annotationId);
+ if (!m_filterKeyList.contains(filterKeyId))
+ m_filterKeyList.append(filterKeyId);
}
-void RenderPass::removeAnnotation(Qt3DCore::QNodeId annotationId)
+void RenderPass::removeFilterKey(Qt3DCore::QNodeId filterKeyId)
{
- m_filterKeyList.removeOne(annotationId);
+ m_filterKeyList.removeOne(filterKeyId);
}
} // namespace Render