From 7be538bfee06de8ccba751a7bb18e6389afd2626 Mon Sep 17 00:00:00 2001 From: Mike Krus Date: Thu, 28 Nov 2019 11:57:21 +0000 Subject: Check nodes are enabled when update BVH and world transforms Change-Id: I83f8083bd0759e596f7c51ad25bb076a208a81df Reviewed-by: Paul Lemire --- src/render/jobs/expandboundingvolumejob.cpp | 4 ++-- src/render/jobs/updateworldboundingvolumejob.cpp | 4 +++- src/render/jobs/updateworldtransformjob.cpp | 3 +++ 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src') 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 &updatedTransforms) { + if (!node->isEnabled()) + return; + Matrix4x4 worldTransform(parentTransform); Transform *nodeTransform = node->renderComponent(); -- cgit v1.2.3