1// Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "renderpassfilternode_p.h"
5#include "qfilterkey.h"
6#include "qrenderpassfilter.h"
7#include <Qt3DRender/private/qrenderpassfilter_p.h>
8#include <Qt3DRender/qparameter.h>
9
10QT_BEGIN_NAMESPACE
11
12
13namespace Qt3DRender {
14namespace Render {
15
16using namespace Qt3DCore;
17
18RenderPassFilter::RenderPassFilter()
19 : FrameGraphNode(FrameGraphNode::RenderPassFilter)
20{
21}
22
23void RenderPassFilter::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
24{
25 const QRenderPassFilter *node = qobject_cast<const QRenderPassFilter *>(object: frontEnd);
26 if (!node)
27 return;
28
29 FrameGraphNode::syncFromFrontEnd(frontEnd, firstTime);
30
31 if (firstTime)
32 m_parameterPack.clear();
33
34 auto parameters = qIdsForNodes(nodes: node->parameters());
35 std::sort(first: std::begin(cont&: parameters), last: std::end(cont&: parameters));
36 if (m_parameterPack.parameters() != parameters) {
37 m_parameterPack.setParameters(parameters);
38 markDirty(changes: AbstractRenderer::FrameGraphDirty);
39 }
40
41 auto filterIds = qIdsForNodes(nodes: node->matchAny());
42 std::sort(first: std::begin(cont&: filterIds), last: std::end(cont&: filterIds));
43 if (m_filters != filterIds) {
44 m_filters = filterIds;
45 markDirty(changes: AbstractRenderer::FrameGraphDirty);
46 }
47}
48
49
50QList<Qt3DCore::QNodeId> RenderPassFilter::filters() const
51{
52 return m_filters;
53}
54
55void RenderPassFilter::appendFilter(Qt3DCore::QNodeId criterionId)
56{
57 if (!m_filters.contains(t: criterionId))
58 m_filters.append(t: criterionId);
59}
60
61void RenderPassFilter::removeFilter(Qt3DCore::QNodeId criterionId)
62{
63 m_filters.removeOne(t: criterionId);
64}
65
66QList<Qt3DCore::QNodeId> RenderPassFilter::parameters() const
67{
68 return m_parameterPack.parameters();
69}
70
71} // namespace Render
72} // namespace Qt3DRender
73
74QT_END_NAMESPACE
75

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qt3d/src/render/framegraph/renderpassfilternode.cpp