diff options
author | Wieland Hagen <wieland.hagen@kdab.com> | 2016-02-04 17:32:01 +0100 |
---|---|---|
committer | Wieland Hagen <wieland.hagen@kdab.com> | 2016-02-24 13:51:10 +0000 |
commit | 4fa958cc987f295e799a7e41706ad016973ab994 (patch) | |
tree | 29dd2f70435b5c3733f428756605ff770d3921b1 /src/render/frontend/qcamera.cpp | |
parent | a4ae2cbf34534c0fd4f0fef0eff171719e1ca8ee (diff) |
Only emit camera changed signals when actually changed smth.
Change-Id: If79f8853070e1712a17943ea8b773c2e6112cd6c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qcamera.cpp')
-rw-r--r-- | src/render/frontend/qcamera.cpp | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/src/render/frontend/qcamera.cpp b/src/render/frontend/qcamera.cpp index d50013ea5..80187fc4c 100644 --- a/src/render/frontend/qcamera.cpp +++ b/src/render/frontend/qcamera.cpp @@ -58,6 +58,7 @@ QCameraPrivate::QCameraPrivate() , m_lens(new QCameraLens()) , m_transform(new Qt3DCore::QTransform()) { + updateViewMatrix(); } /*! @@ -411,12 +412,14 @@ QMatrix4x4 QCamera::projectionMatrix() const void QCamera::setPosition(const QVector3D &position) { Q_D(QCamera); - d->m_position = position; - d->m_cameraToCenter = d->m_viewCenter - position; - d->m_viewMatrixDirty = true; - emit positionChanged(position); - emit viewVectorChanged(d->m_cameraToCenter); - d->updateViewMatrix(); + if (d->m_position != position) { + d->m_position = position; + d->m_cameraToCenter = d->m_viewCenter - position; + d->m_viewMatrixDirty = true; + emit positionChanged(position); + emit viewVectorChanged(d->m_cameraToCenter); + d->updateViewMatrix(); + } } /*! @@ -431,10 +434,12 @@ QVector3D QCamera::position() const void QCamera::setUpVector(const QVector3D &upVector) { Q_D(QCamera); - d->m_upVector = upVector; - d->m_viewMatrixDirty = true; - emit upVectorChanged(upVector); - d->updateViewMatrix(); + if (d->m_upVector != upVector) { + d->m_upVector = upVector; + d->m_viewMatrixDirty = true; + emit upVectorChanged(upVector); + d->updateViewMatrix(); + } } /*! @@ -449,12 +454,14 @@ QVector3D QCamera::upVector() const void QCamera::setViewCenter(const QVector3D &viewCenter) { Q_D(QCamera); - d->m_viewCenter = viewCenter; - d->m_cameraToCenter = viewCenter - d->m_position; - d->m_viewMatrixDirty = true; - emit viewCenterChanged(viewCenter); - emit viewVectorChanged(d->m_cameraToCenter); - d->updateViewMatrix(); + if (d->m_viewCenter != viewCenter) { + d->m_viewCenter = viewCenter; + d->m_cameraToCenter = viewCenter - d->m_position; + d->m_viewMatrixDirty = true; + emit viewCenterChanged(viewCenter); + emit viewVectorChanged(d->m_cameraToCenter); + d->updateViewMatrix(); + } } /*! |