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 "layerfilternode_p.h"
5#include "qlayerfilter.h"
6#include <Qt3DRender/private/qlayerfilter_p.h>
7#include <algorithm>
8
9QT_BEGIN_NAMESPACE
10
11
12namespace Qt3DRender {
13namespace Render {
14
15using namespace Qt3DCore;
16
17LayerFilterNode::LayerFilterNode()
18 : FrameGraphNode(FrameGraphNode::LayerFilter)
19 , m_filterMode(QLayerFilter::AcceptAnyMatchingLayers)
20{
21}
22
23void LayerFilterNode::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
24{
25 const QLayerFilter *node = qobject_cast<const QLayerFilter *>(object: frontEnd);
26 if (!node)
27 return;
28
29 FrameGraphNode::syncFromFrontEnd(frontEnd, firstTime);
30
31 if (m_filterMode != node->filterMode()) {
32 m_filterMode = node->filterMode();
33 markDirty(changes: AbstractRenderer::FrameGraphDirty|AbstractRenderer::LayersDirty);
34 }
35
36 auto layerIds = qIdsForNodes(nodes: node->layers());
37 std::sort(first: std::begin(cont&: layerIds), last: std::end(cont&: layerIds));
38 if (m_layerIds != layerIds) {
39 m_layerIds = layerIds;
40 markDirty(changes: AbstractRenderer::FrameGraphDirty|AbstractRenderer::LayersDirty);
41 }
42}
43
44QNodeIdVector LayerFilterNode::layerIds() const
45{
46 return m_layerIds;
47}
48
49void LayerFilterNode::setLayerIds(const QNodeIdVector &list)
50{
51 m_layerIds = list;
52}
53
54QLayerFilter::FilterMode LayerFilterNode::filterMode() const
55{
56 return m_filterMode;
57}
58
59} // namespace Render
60} // namespace Qt3DRender
61
62QT_END_NAMESPACE
63

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

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