diff options
Diffstat (limited to 'src/render/framegraph/sortpolicy.cpp')
-rw-r--r-- | src/render/framegraph/sortpolicy.cpp | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/src/render/framegraph/sortpolicy.cpp b/src/render/framegraph/sortpolicy.cpp index b81d1f6cb..3c7975945 100644 --- a/src/render/framegraph/sortpolicy.cpp +++ b/src/render/framegraph/sortpolicy.cpp @@ -53,18 +53,19 @@ SortPolicy::SortPolicy() { } -void SortPolicy::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) +void SortPolicy::syncFromFrontEnd(const QNode *frontEnd, bool firstTime) { - if (e->type() == Qt3DCore::PropertyUpdated) { - Qt3DCore::QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QPropertyUpdatedChange>(e); - if (propertyChange->propertyName() == QByteArrayLiteral("sortTypes")) { - auto sortTypesInt = propertyChange->value().value<QVector<int>>(); - m_sortTypes.clear(); - transformVector(sortTypesInt, m_sortTypes); - markDirty(AbstractRenderer::FrameGraphDirty); - } + const QSortPolicy *node = qobject_cast<const QSortPolicy *>(frontEnd); + if (!node) + return; + + FrameGraphNode::syncFromFrontEnd(frontEnd, firstTime); + + const auto sortTypes = node->sortTypes(); + if (sortTypes != m_sortTypes) { + m_sortTypes = sortTypes; + markDirty(AbstractRenderer::FrameGraphDirty); } - FrameGraphNode::sceneChangeEvent(e); } QVector<QSortPolicy::SortType> SortPolicy::sortTypes() const @@ -72,14 +73,6 @@ QVector<QSortPolicy::SortType> SortPolicy::sortTypes() const return m_sortTypes; } -void SortPolicy::initializeFromPeer(const QNodeCreatedChangeBasePtr &change) -{ - FrameGraphNode::initializeFromPeer(change); - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QSortPolicyData>>(change); - const QSortPolicyData &data = typedChange->data; - m_sortTypes = data.sortTypes; -} - } // namepace Render } // namespace Qt3DRender |