summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qcamera.cpp
diff options
context:
space:
mode:
authorWieland Hagen <wieland.hagen@kdab.com>2016-02-04 17:32:01 +0100
committerWieland Hagen <wieland.hagen@kdab.com>2016-02-24 13:51:10 +0000
commit4fa958cc987f295e799a7e41706ad016973ab994 (patch)
tree29dd2f70435b5c3733f428756605ff770d3921b1 /src/render/frontend/qcamera.cpp
parenta4ae2cbf34534c0fd4f0fef0eff171719e1ca8ee (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.cpp39
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();
+ }
}
/*!