diff options
author | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2022-08-16 20:36:54 +0300 |
---|---|---|
committer | Tarja Sundqvist <tarja.sundqvist@qt.io> | 2022-08-16 20:36:54 +0300 |
commit | a537b1e4e0b9821850ddf77ef1f2178df8de3d43 (patch) | |
tree | e57a4443bcb94a4d9291aed4665343244d65a9ac /src/render/jobs/filterlayerentityjob.cpp | |
parent | e1b9039ca879ab3714a3f67301378f43334e4b1d (diff) | |
parent | ff866ee201ba2ab62d3bdd9f6358612fbcd6128e (diff) |
Merge remote-tracking branch 'origin/tqtc/lts-5.15.6' into tqtc/lts-5.15-opensourcev5.15.6-lts-lgpl
Change-Id: I78ddafff7a563a17c7e9ce31249faf05dc6cda69
Diffstat (limited to 'src/render/jobs/filterlayerentityjob.cpp')
-rw-r--r-- | src/render/jobs/filterlayerentityjob.cpp | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/src/render/jobs/filterlayerentityjob.cpp b/src/render/jobs/filterlayerentityjob.cpp index ae3cced59..401bbc148 100644 --- a/src/render/jobs/filterlayerentityjob.cpp +++ b/src/render/jobs/filterlayerentityjob.cpp @@ -75,6 +75,33 @@ void FilterLayerEntityJob::run() std::sort(m_filteredEntities.begin(), m_filteredEntities.end()); } +void FilterLayerEntityJob::filterEntityAgainstLayers(Entity *entity, + const Qt3DCore::QNodeIdVector &layerIds, + const QLayerFilter::FilterMode filterMode) +{ + // Perform filtering + switch (filterMode) { + case QLayerFilter::AcceptAnyMatchingLayers: { + filterAcceptAnyMatchingLayers(entity, layerIds); + break; + } + case QLayerFilter::AcceptAllMatchingLayers: { + filterAcceptAllMatchingLayers(entity, layerIds); + break; + } + case QLayerFilter::DiscardAnyMatchingLayers: { + filterDiscardAnyMatchingLayers(entity, layerIds); + break; + } + case QLayerFilter::DiscardAllMatchingLayers: { + filterDiscardAllMatchingLayers(entity, layerIds); + break; + } + default: + Q_UNREACHABLE(); + } +} + // We accept the entity if it contains any of the layers that are in the layer filter void FilterLayerEntityJob::filterAcceptAnyMatchingLayers(Entity *entity, const Qt3DCore::QNodeIdVector &layerIds) @@ -181,28 +208,8 @@ void FilterLayerEntityJob::filterLayerAndEntity() const QLayerFilter::FilterMode filterMode = layerFilter->filterMode(); // Perform filtering - for (Entity *entity : entitiesToFilter) { - switch (filterMode) { - case QLayerFilter::AcceptAnyMatchingLayers: { - filterAcceptAnyMatchingLayers(entity, layerIds); - break; - } - case QLayerFilter::AcceptAllMatchingLayers: { - filterAcceptAllMatchingLayers(entity, layerIds); - break; - } - case QLayerFilter::DiscardAnyMatchingLayers: { - filterDiscardAnyMatchingLayers(entity, layerIds); - break; - } - case QLayerFilter::DiscardAllMatchingLayers: { - filterDiscardAllMatchingLayers(entity, layerIds); - break; - } - default: - Q_UNREACHABLE(); - } - } + for (Entity *entity : entitiesToFilter) + filterEntityAgainstLayers(entity, layerIds, filterMode); // Entities to filter for the next frame are the filtered result of the // current LayerFilter |