diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-11-28 11:57:21 +0000 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-11-28 13:03:20 +0000 |
commit | 7be538bfee06de8ccba751a7bb18e6389afd2626 (patch) | |
tree | 9138df9620fe9eda9527b1c0fe476a82078b1cc0 | |
parent | 2fffced20a8bef503d0f9f981e785c5b2692487d (diff) |
Check nodes are enabled when update BVH and world transforms
Change-Id: I83f8083bd0759e596f7c51ad25bb076a208a81df
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/render/jobs/expandboundingvolumejob.cpp | 4 | ||||
-rw-r--r-- | src/render/jobs/updateworldboundingvolumejob.cpp | 4 | ||||
-rw-r--r-- | src/render/jobs/updateworldtransformjob.cpp | 3 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/render/jobs/expandboundingvolumejob.cpp b/src/render/jobs/expandboundingvolumejob.cpp index d63934b54..641a5c272 100644 --- a/src/render/jobs/expandboundingvolumejob.cpp +++ b/src/render/jobs/expandboundingvolumejob.cpp @@ -62,7 +62,7 @@ void expandWorldBoundingVolume(NodeManagers *manager, Entity *node) const auto childrenHandles = node->childrenHandles(); for (const HEntity &handle : childrenHandles) { Entity *c = manager->renderNodesManager()->data(handle); - if (c) + if (c && c->isEnabled()) expandWorldBoundingVolume(manager, c); } @@ -72,7 +72,7 @@ void expandWorldBoundingVolume(NodeManagers *manager, Entity *node) Qt3DRender::Render::Sphere *parentBoundingVolume = node->worldBoundingVolumeWithChildren(); for (const HEntity &handle : childrenHandles) { Entity *c = manager->renderNodesManager()->data(handle); - if (c) + if (c && c->isEnabled()) parentBoundingVolume->expandToContain(*c->worldBoundingVolumeWithChildren()); } } diff --git a/src/render/jobs/updateworldboundingvolumejob.cpp b/src/render/jobs/updateworldboundingvolumejob.cpp index 40dd919bc..65a3ec75d 100644 --- a/src/render/jobs/updateworldboundingvolumejob.cpp +++ b/src/render/jobs/updateworldboundingvolumejob.cpp @@ -52,7 +52,7 @@ UpdateWorldBoundingVolumeJob::UpdateWorldBoundingVolumeJob() : Qt3DCore::QAspectJob() , m_manager(nullptr) { - SET_JOB_RUN_STAT_TYPE(this, JobTypes::UpdateWorldBoundingVolume, 0); + SET_JOB_RUN_STAT_TYPE(this, JobTypes::UpdateWorldBoundingVolume, 0) } void UpdateWorldBoundingVolumeJob::run() @@ -61,6 +61,8 @@ void UpdateWorldBoundingVolumeJob::run() for (const HEntity &handle : handles) { Entity *node = m_manager->data(handle); + if (!node->isEnabled()) + continue; *(node->worldBoundingVolume()) = node->localBoundingVolume()->transformed(*(node->worldTransform())); *(node->worldBoundingVolumeWithChildren()) = *(node->worldBoundingVolume()); // expanded in UpdateBoundingVolumeJob } diff --git a/src/render/jobs/updateworldtransformjob.cpp b/src/render/jobs/updateworldtransformjob.cpp index e3487e68b..ea9aa778c 100644 --- a/src/render/jobs/updateworldtransformjob.cpp +++ b/src/render/jobs/updateworldtransformjob.cpp @@ -67,6 +67,9 @@ struct TransformUpdate void updateWorldTransformAndBounds(NodeManagers *manager, Entity *node, const Matrix4x4 &parentTransform, QVector<TransformUpdate> &updatedTransforms) { + if (!node->isEnabled()) + return; + Matrix4x4 worldTransform(parentTransform); Transform *nodeTransform = node->renderComponent<Transform>(); |