summaryrefslogtreecommitdiffstats
path: root/src/render/geometry
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/geometry')
-rw-r--r--src/render/geometry/geometry.cpp21
-rw-r--r--src/render/geometry/geometry_p.h3
-rw-r--r--src/render/geometry/qattribute.cpp2
-rw-r--r--src/render/geometry/qbuffer.cpp2
-rw-r--r--src/render/geometry/qgeometry.cpp39
-rw-r--r--src/render/geometry/qgeometry.h1
-rw-r--r--src/render/geometry/qgeometry_p.h1
-rw-r--r--src/render/geometry/qgeometryrenderer.cpp2
-rw-r--r--src/render/geometry/qmesh.cpp2
9 files changed, 30 insertions, 43 deletions
diff --git a/src/render/geometry/geometry.cpp b/src/render/geometry/geometry.cpp
index 56ea936be..58bbcc3ad 100644
--- a/src/render/geometry/geometry.cpp
+++ b/src/render/geometry/geometry.cpp
@@ -55,8 +55,6 @@ namespace Render {
Geometry::Geometry()
: BackendNode(ReadWrite)
, m_geometryDirty(false)
- , m_shouldNotifyMinExtentChanged(false)
- , m_shouldNotifyMaxExtentChanged(false)
{
}
@@ -72,8 +70,6 @@ void Geometry::cleanup()
m_boundingPositionAttribute = Qt3DCore::QNodeId();
m_min = QVector3D();
m_max = QVector3D();
- m_shouldNotifyMinExtentChanged = false;
- m_shouldNotifyMaxExtentChanged = false;
}
void Geometry::syncFromFrontEnd(const QNode *frontEnd, bool firstTime)
@@ -113,27 +109,10 @@ void Geometry::updateExtent(const QVector3D &min, const QVector3D &max)
// Send notification to frontend
if (m_min != min) {
m_min = min;
- m_shouldNotifyMinExtentChanged = true;
}
if (m_max != max) {
m_max = max;
- m_shouldNotifyMaxExtentChanged = true;
- }
-}
-
-// Called from calcboundingvolumejob after all bounding volumes have been
-// updated (in an aspect thread)
-void Geometry::notifyExtentChanged()
-{
- if (m_shouldNotifyMinExtentChanged || m_shouldNotifyMaxExtentChanged) {
- auto change = Qt3DCore::QPropertyUpdatedChangePtr::create(peerId());
- change->setDeliveryFlags(Qt3DCore::QSceneChange::Nodes);
- change->setPropertyName("extent");
- change->setValue(QVariant::fromValue(QPair<QVector3D, QVector3D>(m_min, m_max)));
- notifyObservers(change);
- m_shouldNotifyMinExtentChanged = false;
- m_shouldNotifyMaxExtentChanged = false;
}
}
diff --git a/src/render/geometry/geometry_p.h b/src/render/geometry/geometry_p.h
index fdad63286..8b8a1aa38 100644
--- a/src/render/geometry/geometry_p.h
+++ b/src/render/geometry/geometry_p.h
@@ -79,7 +79,6 @@ public:
inline QVector3D max() const { return m_max; }
void updateExtent(const QVector3D &min, const QVector3D &max);
- void notifyExtentChanged();
private:
QVector<Qt3DCore::QNodeId> m_attributes;
@@ -87,8 +86,6 @@ private:
Qt3DCore::QNodeId m_boundingPositionAttribute;
QVector3D m_min;
QVector3D m_max;
- bool m_shouldNotifyMinExtentChanged;
- bool m_shouldNotifyMaxExtentChanged;
};
} // namespace Render
diff --git a/src/render/geometry/qattribute.cpp b/src/render/geometry/qattribute.cpp
index 84d14cfe1..e58c7d324 100644
--- a/src/render/geometry/qattribute.cpp
+++ b/src/render/geometry/qattribute.cpp
@@ -519,3 +519,5 @@ The signal is emitted with \a vertexBaseType when the dataType changed.
} // Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qattribute.cpp" \ No newline at end of file
diff --git a/src/render/geometry/qbuffer.cpp b/src/render/geometry/qbuffer.cpp
index daf6f91c8..17afce2ce 100644
--- a/src/render/geometry/qbuffer.cpp
+++ b/src/render/geometry/qbuffer.cpp
@@ -493,3 +493,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QBuffer::createNodeCreationChange() const
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qbuffer.cpp"
diff --git a/src/render/geometry/qgeometry.cpp b/src/render/geometry/qgeometry.cpp
index ac22f2db1..2438932cb 100644
--- a/src/render/geometry/qgeometry.cpp
+++ b/src/render/geometry/qgeometry.cpp
@@ -64,6 +64,24 @@ QGeometryPrivate::~QGeometryPrivate()
{
}
+void QGeometryPrivate::setExtent(const QVector3D &minExtent, const QVector3D &maxExtent)
+{
+ Q_Q(QGeometry);
+ if (m_minExtent != minExtent) {
+ m_minExtent = minExtent;
+ const auto wasBlocked = q->blockNotifications(true);
+ emit q->minExtentChanged(minExtent);
+ q->blockNotifications(wasBlocked);
+ }
+
+ if (m_maxExtent != maxExtent) {
+ m_maxExtent = maxExtent;
+ const auto wasBlocked = q->blockNotifications(true);
+ emit q->maxExtentChanged(maxExtent);
+ q->blockNotifications(wasBlocked);
+ }
+}
+
/*!
\qmltype Geometry
\instantiates Qt3DRender::QGeometry
@@ -151,26 +169,9 @@ QGeometry::QGeometry(QGeometryPrivate &dd, QNode *parent)
{
}
-void QGeometry::sceneChangeEvent(const QSceneChangePtr &change)
+// TODO Unused remove in Qt6
+void QGeometry::sceneChangeEvent(const QSceneChangePtr &)
{
- Q_D(QGeometry);
- QPropertyUpdatedChangePtr e = qSharedPointerCast<QPropertyUpdatedChange>(change);
- if (e->type() == PropertyUpdated) {
- const bool blocked = blockNotifications(true);
- if (e->propertyName() == QByteArrayLiteral("extent")) {
- const QPair<QVector3D, QVector3D> extent = e->value().value<QPair<QVector3D, QVector3D>>();
-
- if (extent.first != d->m_minExtent) {
- d->m_minExtent = extent.first;
- emit minExtentChanged(extent.first);
- }
- if (extent.second != d->m_maxExtent) {
- d->m_maxExtent = extent.second;
- emit maxExtentChanged(d->m_maxExtent);
- }
- }
- blockNotifications(blocked);
- }
}
/*!
diff --git a/src/render/geometry/qgeometry.h b/src/render/geometry/qgeometry.h
index cae637f1f..a4c69cc73 100644
--- a/src/render/geometry/qgeometry.h
+++ b/src/render/geometry/qgeometry.h
@@ -77,6 +77,7 @@ Q_SIGNALS:
Q_REVISION(13) void maxExtentChanged(const QVector3D &maxExtent);
protected:
explicit QGeometry(QGeometryPrivate &dd, Qt3DCore::QNode *parent = nullptr);
+ // TODO Unused remove in Qt6
void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change) override;
private:
diff --git a/src/render/geometry/qgeometry_p.h b/src/render/geometry/qgeometry_p.h
index 94f71d780..c2b3b2851 100644
--- a/src/render/geometry/qgeometry_p.h
+++ b/src/render/geometry/qgeometry_p.h
@@ -66,6 +66,7 @@ public:
QGeometryPrivate();
~QGeometryPrivate();
+ void setExtent(const QVector3D &minExtent, const QVector3D &maxExtent);
QVector<QAttribute *> m_attributes;
QAttribute *m_boundingVolumePositionAttribute;
diff --git a/src/render/geometry/qgeometryrenderer.cpp b/src/render/geometry/qgeometryrenderer.cpp
index 7abbe8db8..de3896da1 100644
--- a/src/render/geometry/qgeometryrenderer.cpp
+++ b/src/render/geometry/qgeometryrenderer.cpp
@@ -530,3 +530,5 @@ Qt3DCore::QNodeCreatedChangeBasePtr QGeometryRenderer::createNodeCreationChange(
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qgeometryrenderer.cpp"
diff --git a/src/render/geometry/qmesh.cpp b/src/render/geometry/qmesh.cpp
index c350a3891..61c0d5c18 100644
--- a/src/render/geometry/qmesh.cpp
+++ b/src/render/geometry/qmesh.cpp
@@ -445,3 +445,5 @@ void MeshDownloadRequest::onCompleted()
} // namespace Qt3DRender
QT_END_NAMESPACE
+
+#include "moc_qmesh.cpp"