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 "techniquefilternode_p.h"
5#include "qfilterkey.h"
6#include "qtechniquefilter.h"
7#include <Qt3DRender/private/qtechniquefilter_p.h>
8#include <Qt3DRender/private/managers_p.h>
9#include <Qt3DRender/qparameter.h>
10
11QT_BEGIN_NAMESPACE
12
13
14namespace Qt3DRender {
15namespace Render {
16
17using namespace Qt3DCore;
18
19TechniqueFilter::TechniqueFilter()
20 : FrameGraphNode(FrameGraphNode::TechniqueFilter)
21{
22}
23
24void TechniqueFilter::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
25{
26 const QTechniqueFilter *node = qobject_cast<const QTechniqueFilter *>(object: frontEnd);
27 if (!node)
28 return;
29
30 FrameGraphNode::syncFromFrontEnd(frontEnd, firstTime);
31
32 if (firstTime)
33 m_parameterPack.clear();
34
35 auto parameters = qIdsForNodes(nodes: node->parameters());
36 std::sort(first: std::begin(cont&: parameters), last: std::end(cont&: parameters));
37 if (m_parameterPack.parameters() != parameters) {
38 m_parameterPack.setParameters(parameters);
39 markDirty(changes: AbstractRenderer::FrameGraphDirty);
40 }
41
42 auto filterIds = qIdsForNodes(nodes: node->matchAll());
43 std::sort(first: std::begin(cont&: filterIds), last: std::end(cont&: filterIds));
44 if (m_filters != filterIds) {
45 m_filters = filterIds;
46 markDirty(changes: AbstractRenderer::FrameGraphDirty);
47 }
48}
49
50QList<Qt3DCore::QNodeId> TechniqueFilter::parameters() const
51{
52 return m_parameterPack.parameters();
53}
54
55QList<Qt3DCore::QNodeId> TechniqueFilter::filters() const
56{
57 return m_filters;
58}
59
60void TechniqueFilter::appendFilter(QNodeId criterionId)
61{
62 if (!m_filters.contains(t: criterionId))
63 m_filters.append(t: criterionId);
64}
65
66void TechniqueFilter::removeFilter(Qt3DCore::QNodeId criterionId)
67{
68 m_filters.removeOne(t: criterionId);
69}
70
71} // namespace Render
72} // namespace Qt3DRender
73
74QT_END_NAMESPACE
75

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

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