summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-11-06 10:01:52 +0100
committerPaul Lemire <paul.lemire@kdab.com>2015-11-16 11:17:41 +0000
commit680eeef20c993227a880efc0212414154d047b13 (patch)
tree6fb1109466ba0b20067090cf78319ef72ca001f1
parent9ac41de755762e45c16c5517d0566975d44e1150 (diff)
Use the FrameCleanupJob to update the QBoundingVolumesDebug
Change-Id: Ib3419e78abd4b1848cfabf05efb8871c2ff87560 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/render/jobs/framecleanupjob.cpp22
-rw-r--r--src/render/jobs/framecleanupjob_p.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/src/render/jobs/framecleanupjob.cpp b/src/render/jobs/framecleanupjob.cpp
index 7fdbb1290..34ded2f81 100644
--- a/src/render/jobs/framecleanupjob.cpp
+++ b/src/render/jobs/framecleanupjob.cpp
@@ -40,6 +40,7 @@
#include <private/shaderdata_p.h>
#include <private/managers_p.h>
#include <private/texturedatamanager_p.h>
+#include <private/sphere_p.h>
QT_BEGIN_NAMESPACE
@@ -68,6 +69,27 @@ void FrameCleanupJob::run()
// Cleanup texture handles
TextureDataManager *textureDataManager = m_renderer->textureDataManager();
textureDataManager->cleanup();
+
+ // Debug bounding volume debug
+ updateBoundingVolumesDebug(m_renderer->renderSceneRoot());
+}
+
+void FrameCleanupJob::updateBoundingVolumesDebug(Entity *node)
+{
+ BoundingVolumeDebug *debugBV = node->renderComponent<BoundingVolumeDebug>();
+ if (debugBV) {
+ Qt3DRender::Render::Sphere s;
+ if (!debugBV->isRecursive()) {
+ s = *node->worldBoundingVolume();
+ } else {
+ s = *node->worldBoundingVolumeWithChildren();
+ }
+ debugBV->setRadius(s.radius());
+ debugBV->setCenter(s.center());
+ }
+
+ Q_FOREACH (Entity *c, node->children())
+ updateBoundingVolumesDebug(c);
}
} // namespace Render
diff --git a/src/render/jobs/framecleanupjob_p.h b/src/render/jobs/framecleanupjob_p.h
index 247ee30cf..6e8581d76 100644
--- a/src/render/jobs/framecleanupjob_p.h
+++ b/src/render/jobs/framecleanupjob_p.h
@@ -71,6 +71,7 @@ protected:
private:
Renderer *m_renderer;
+ void updateBoundingVolumesDebug(Entity *node);
};
typedef QSharedPointer<FrameCleanupJob> FrameCleanupJobPtr;