forked from qt-creator/qt-creator
QmlDesigner: Apply root item transform in Node component previews
When generating a preview from a component with a 3D node for a root, the root Node transform is now applied when calculating camera zoom. Fixes: QDS-7131 Change-Id: I73054a09b3e82868c999ef6f9797dc941e625b33 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
@@ -37,7 +37,7 @@ View3D {
|
|||||||
function fitToViewPort(closeUp)
|
function fitToViewPort(closeUp)
|
||||||
{
|
{
|
||||||
// The magic number is the distance from camera default pos to origin
|
// The magic number is the distance from camera default pos to origin
|
||||||
_generalHelper.calculateNodeBoundsAndFocusCamera(theCamera, sourceModel, root,
|
_generalHelper.calculateNodeBoundsAndFocusCamera(theCamera, model, root,
|
||||||
1040, closeUp);
|
1040, closeUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -37,7 +37,7 @@ View3D {
|
|||||||
function fitToViewPort(closeUp)
|
function fitToViewPort(closeUp)
|
||||||
{
|
{
|
||||||
// The magic number is the distance from camera default pos to origin
|
// The magic number is the distance from camera default pos to origin
|
||||||
_generalHelper.calculateNodeBoundsAndFocusCamera(theCamera, sourceModel, root,
|
_generalHelper.calculateNodeBoundsAndFocusCamera(theCamera, model, root,
|
||||||
1040, closeUp);
|
1040, closeUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -812,7 +812,7 @@ QVector3D GeneralHelper::pivotScenePosition(QQuick3DNode *node) const
|
|||||||
// Calculate bounds for given node, including all child nodes.
|
// Calculate bounds for given node, including all child nodes.
|
||||||
// Returns true if the tree contains at least one Model node.
|
// Returns true if the tree contains at least one Model node.
|
||||||
bool GeneralHelper::getBounds(QQuick3DViewport *view3D, QQuick3DNode *node, QVector3D &minBounds,
|
bool GeneralHelper::getBounds(QQuick3DViewport *view3D, QQuick3DNode *node, QVector3D &minBounds,
|
||||||
QVector3D &maxBounds, bool recursive)
|
QVector3D &maxBounds)
|
||||||
{
|
{
|
||||||
if (!node) {
|
if (!node) {
|
||||||
const float halfExtent = 100.f;
|
const float halfExtent = 100.f;
|
||||||
@@ -825,7 +825,7 @@ bool GeneralHelper::getBounds(QQuick3DViewport *view3D, QQuick3DNode *node, QVec
|
|||||||
auto nodePriv = QQuick3DObjectPrivate::get(node);
|
auto nodePriv = QQuick3DObjectPrivate::get(node);
|
||||||
auto renderNode = static_cast<QSSGRenderNode *>(nodePriv->spatialNode);
|
auto renderNode = static_cast<QSSGRenderNode *>(nodePriv->spatialNode);
|
||||||
|
|
||||||
if (recursive && renderNode) {
|
if (renderNode) {
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(6, 4, 0)
|
||||||
if (renderNode->flags.testFlag(QSSGRenderNode::Flag::TransformDirty))
|
if (renderNode->flags.testFlag(QSSGRenderNode::Flag::TransformDirty))
|
||||||
renderNode->calculateLocalTransform();
|
renderNode->calculateLocalTransform();
|
||||||
@@ -850,7 +850,7 @@ bool GeneralHelper::getBounds(QQuick3DViewport *view3D, QQuick3DNode *node, QVec
|
|||||||
if (auto childNode = qobject_cast<QQuick3DNode *>(child)) {
|
if (auto childNode = qobject_cast<QQuick3DNode *>(child)) {
|
||||||
QVector3D newMinBounds = minBounds;
|
QVector3D newMinBounds = minBounds;
|
||||||
QVector3D newMaxBounds = maxBounds;
|
QVector3D newMaxBounds = maxBounds;
|
||||||
bool childHasModel = getBounds(view3D, childNode, newMinBounds, newMaxBounds, true);
|
bool childHasModel = getBounds(view3D, childNode, newMinBounds, newMaxBounds);
|
||||||
// Ignore any subtrees that do not have Model in them as we don't need those
|
// Ignore any subtrees that do not have Model in them as we don't need those
|
||||||
// for visual bounds calculations
|
// for visual bounds calculations
|
||||||
if (childHasModel) {
|
if (childHasModel) {
|
||||||
|
@@ -130,7 +130,7 @@ private:
|
|||||||
void handlePendingToolStateUpdate();
|
void handlePendingToolStateUpdate();
|
||||||
QVector3D pivotScenePosition(QQuick3DNode *node) const;
|
QVector3D pivotScenePosition(QQuick3DNode *node) const;
|
||||||
bool getBounds(QQuick3DViewport *view3D, QQuick3DNode *node, QVector3D &minBounds,
|
bool getBounds(QQuick3DViewport *view3D, QQuick3DNode *node, QVector3D &minBounds,
|
||||||
QVector3D &maxBounds, bool recursive = false);
|
QVector3D &maxBounds);
|
||||||
|
|
||||||
QTimer m_overlayUpdateTimer;
|
QTimer m_overlayUpdateTimer;
|
||||||
QTimer m_toolStateUpdateTimer;
|
QTimer m_toolStateUpdateTimer;
|
||||||
|
Reference in New Issue
Block a user