summaryrefslogtreecommitdiffstats
path: root/src/render/jobs/calcboundingvolumejob.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-12-20 12:41:04 +0100
committerMike Krus <mike.krus@kdab.com>2020-02-11 06:08:41 +0000
commitb828609440a4771838c242b3ad9962ecd7a2fe99 (patch)
tree5da6bce0cda327c4cca96696bce512ec243cc1fd /src/render/jobs/calcboundingvolumejob.cpp
parentb0eb152b82cdd9658154ff7d9ef9e764eccc1ebd (diff)
Remove deprecated classes and functions
Mostly old messaging API Change-Id: I17eb2206b2ede56d2f7d36375d5e711d6149019f Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/jobs/calcboundingvolumejob.cpp')
-rw-r--r--src/render/jobs/calcboundingvolumejob.cpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/render/jobs/calcboundingvolumejob.cpp b/src/render/jobs/calcboundingvolumejob.cpp
index 172c4ddca..1e4656247 100644
--- a/src/render/jobs/calcboundingvolumejob.cpp
+++ b/src/render/jobs/calcboundingvolumejob.cpp
@@ -52,6 +52,8 @@
#include <Qt3DRender/private/sphere_p.h>
#include <Qt3DRender/private/buffervisitor_p.h>
#include <Qt3DRender/private/entityaccumulator_p.h>
+#include <Qt3DRender/private/qgeometry_p.h>
+#include <Qt3DCore/private/qaspectmanager_p.h>
#include <QtCore/qmath.h>
#if QT_CONFIG(concurrent)
@@ -350,8 +352,29 @@ struct ReduceUpdateBoundFunctor
} // anonymous
+class CalculateBoundingVolumeJobPrivate : public Qt3DCore::QAspectJobPrivate
+{
+public:
+ CalculateBoundingVolumeJobPrivate() { }
+ ~CalculateBoundingVolumeJobPrivate() override { }
+
+ void postFrame(Qt3DCore::QAspectManager *manager) override
+ {
+ for (Geometry *backend : qAsConst(m_updatedGeometries)) {
+ QGeometry *node = qobject_cast<QGeometry *>(manager->lookupNode(backend->peerId()));
+ if (!node)
+ continue;
+ QGeometryPrivate *dNode = static_cast<QGeometryPrivate *>(Qt3DCore::QNodePrivate::get(node));
+ dNode->setExtent(backend->min(), backend->max());
+ }
+ }
+
+ QVector<Geometry *> m_updatedGeometries;
+};
+
CalculateBoundingVolumeJob::CalculateBoundingVolumeJob()
- : m_manager(nullptr)
+ : Qt3DCore::QAspectJob(*new CalculateBoundingVolumeJobPrivate())
+ , m_manager(nullptr)
, m_node(nullptr)
{
SET_JOB_RUN_STAT_TYPE(this, JobTypes::CalcBoundingVolume, 0)
@@ -380,9 +403,8 @@ void CalculateBoundingVolumeJob::run()
updatedGeometries += calculateLocalBoundingVolume(m_manager, child);
}
- // Send extent updates to frontend
- for (Geometry *geometry : updatedGeometries)
- geometry->notifyExtentChanged();
+ Q_D(CalculateBoundingVolumeJob);
+ d->m_updatedGeometries = std::move(updatedGeometries);
}
void CalculateBoundingVolumeJob::setRoot(Entity *node)