diff options
Diffstat (limited to 'src/render/geometry')
-rw-r--r-- | src/render/geometry/geometry.cpp | 21 | ||||
-rw-r--r-- | src/render/geometry/geometry_p.h | 3 | ||||
-rw-r--r-- | src/render/geometry/qattribute.cpp | 2 | ||||
-rw-r--r-- | src/render/geometry/qbuffer.cpp | 2 | ||||
-rw-r--r-- | src/render/geometry/qgeometry.cpp | 39 | ||||
-rw-r--r-- | src/render/geometry/qgeometry.h | 1 | ||||
-rw-r--r-- | src/render/geometry/qgeometry_p.h | 1 | ||||
-rw-r--r-- | src/render/geometry/qgeometryrenderer.cpp | 2 | ||||
-rw-r--r-- | src/render/geometry/qmesh.cpp | 2 |
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" |