summaryrefslogtreecommitdiffstats
path: root/src/render/jobs/filterlayerentityjob.cpp
diff options
context:
space:
mode:
authorTarja Sundqvist <tarja.sundqvist@qt.io>2022-08-16 20:36:54 +0300
committerTarja Sundqvist <tarja.sundqvist@qt.io>2022-08-16 20:36:54 +0300
commita537b1e4e0b9821850ddf77ef1f2178df8de3d43 (patch)
treee57a4443bcb94a4d9291aed4665343244d65a9ac /src/render/jobs/filterlayerentityjob.cpp
parente1b9039ca879ab3714a3f67301378f43334e4b1d (diff)
parentff866ee201ba2ab62d3bdd9f6358612fbcd6128e (diff)
Merge remote-tracking branch 'origin/tqtc/lts-5.15.6' into tqtc/lts-5.15-opensourcev5.15.6-lts-lgpl
Diffstat (limited to 'src/render/jobs/filterlayerentityjob.cpp')
-rw-r--r--src/render/jobs/filterlayerentityjob.cpp51
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