aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2019-11-27 15:48:51 +0200
committerMahmoud Badri <mahmoud.badri@qt.io>2019-12-03 07:54:09 +0000
commitde141661df3caac507eb01da69f8a7b8ede75714 (patch)
tree5abd61bf5581cde067e95c8f5db55c09d6e48c4e /share
parent811db1129c68d1356bc196417cd50756365d39ed (diff)
Do not zoom camera when changing view
When changing the view by clicking the axis helper, maintain the current view camera zoom Task-number: QDS-1274 Change-Id: Icb502bd70da1e6348be90a52885366393ea072c6 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml4
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml6
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml2
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp12
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h5
5 files changed, 15 insertions, 14 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml
index 86c60db721..25fe455f49 100644
--- a/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/AxisHelper.qml
@@ -120,8 +120,8 @@ View3D {
onPressed: {
pick(mouse);
if (pickObj) {
- axisHelperView.editCameraCtrl.fitObject(axisHelperView.selectedNode,
- pickObj.cameraRotation);
+ axisHelperView.editCameraCtrl.focusObject(axisHelperView.selectedNode,
+ pickObj.cameraRotation, false);
} else {
mouse.accepted = false;
}
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml
index dba7e30f96..b7f4109824 100644
--- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditCameraController.qml
@@ -45,11 +45,11 @@ Item {
property real _defaultCameraLookAtDistance: 0
property Camera _prevCamera: null
- function fitObject(targetObject, rotation)
+ function focusObject(targetObject, rotation, updateZoom)
{
camera.rotation = rotation;
- var newLookAtAndZoom = _generalHelper.fitObjectToCamera(
- camera, _defaultCameraLookAtDistance, targetObject, view3d);
+ var newLookAtAndZoom = _generalHelper.focusObjectToCamera(
+ camera, _defaultCameraLookAtDistance, targetObject, view3d, _zoomFactor, updateZoom);
_lookAtPoint = newLookAtAndZoom.toVector3d();
_zoomFactor = newLookAtAndZoom.w;
}
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml
index ea033bea73..5de0f25348 100644
--- a/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/EditView3D.qml
@@ -443,7 +443,7 @@ Window {
if (selected) {
var targetNode = viewWindow.selectedNodes.length > 0
? selectionBoxes[0].model : null;
- cameraControl.fitObject(targetNode, editView.camera.rotation);
+ cameraControl.focusObject(targetNode, editView.camera.rotation, true);
}
}
}
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp
index 850a440a12..b104d53a8f 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.cpp
@@ -139,8 +139,9 @@ float GeneralHelper::zoomCamera(QQuick3DCamera *camera, float distance, float de
}
// Return value contains new lookAt point (xyz) and zoom factor (w)
-QVector4D GeneralHelper::fitObjectToCamera(QQuick3DCamera *camera, float defaultLookAtDistance,
- QQuick3DNode *targetObject, QQuick3DViewport *viewPort)
+QVector4D GeneralHelper::focusObjectToCamera(QQuick3DCamera *camera, float defaultLookAtDistance,
+ QQuick3DNode *targetObject, QQuick3DViewport *viewPort,
+ float oldZoom, bool updateZoom)
{
if (!camera)
return QVector4D(0.f, 0.f, 0.f, 1.f);
@@ -189,11 +190,10 @@ QVector4D GeneralHelper::fitObjectToCamera(QQuick3DCamera *camera, float default
camera->setPosition(lookAt + newLookVector);
- // Emprically determined algorithm for nice zoom
- float newZoomFactor = qBound(.0001f, float(maxExtent / 700.), 10000.f);
+ float newZoomFactor = updateZoom ? qBound(.0001f, float(maxExtent / 700.), 10000.f) : oldZoom;
+ float cameraZoomFactor = zoomCamera(camera, 0, defaultLookAtDistance, lookAt, newZoomFactor, false);
- return QVector4D(lookAt,
- zoomCamera(camera, 0, defaultLookAtDistance, lookAt, newZoomFactor, false));
+ return QVector4D(lookAt, cameraZoomFactor);
}
void GeneralHelper::delayedPropertySet(QObject *obj, int delay, const QString &property,
diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h
index 16007e6798..4744935190 100644
--- a/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h
+++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/editor3d/generalhelper.h
@@ -62,8 +62,9 @@ public:
Q_INVOKABLE float zoomCamera(QQuick3DCamera *camera, float distance,
float defaultLookAtDistance, const QVector3D &lookAt,
float zoomFactor, bool relative);
- Q_INVOKABLE QVector4D fitObjectToCamera(QQuick3DCamera *camera, float defaultLookAtDistance,
- QQuick3DNode *targetObject, QQuick3DViewport *viewPort);
+ Q_INVOKABLE QVector4D focusObjectToCamera(QQuick3DCamera *camera, float defaultLookAtDistance,
+ QQuick3DNode *targetObject, QQuick3DViewport *viewPort,
+ float oldZoom, bool updateZoom = true);
Q_INVOKABLE void delayedPropertySet(QObject *obj, int delay, const QString &property,
const QVariant& value);