aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2020-03-31 11:38:39 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2020-03-31 13:03:06 +0300
commit91704d001196be41d9cc59b22692b73cf8d409d9 (patch)
tree32144bf50b395058b757e424520f627e1a539733
parent02d02acf8a0544024b4ee54259503a0834e13e2b (diff)
Add import scene children if imported scene is outside viewportv5.15.0-beta3
Change-Id: I85bc47c126ed58597a12bbeb9af29571cf84b9f8 Fixes: QDS-1877 Reviewed-by: Kaj Grönholm <kaj.gronholm@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r--src/quick3d/qquick3dscenerenderer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/quick3d/qquick3dscenerenderer.cpp b/src/quick3d/qquick3dscenerenderer.cpp
index e26fb004..e742cfb0 100644
--- a/src/quick3d/qquick3dscenerenderer.cpp
+++ b/src/quick3d/qquick3dscenerenderer.cpp
@@ -342,10 +342,18 @@ void QQuick3DSceneRenderer::synchronize(QQuick3DViewport *item, const QSize &siz
removeNodeFromLayer(m_importRootNode);
if (importRootNode) {
- // if root node has already parent at this point
- // it means "importScene: MyScene { }" type of inclusion.
+ // if importScene has the rendered viewport as ancestor, it probably means
+ // "importScene: MyScene { }" type of inclusion.
// In this case don't duplicate content by adding it again.
- const bool isEmbedded = importRootNode->parent;
+ QObject *sceneParent = importScene->parent();
+ bool isEmbedded = false;
+ while (sceneParent) {
+ if (sceneParent == item) {
+ isEmbedded = true;
+ break;
+ }
+ sceneParent = sceneParent->parent();
+ }
if (!isEmbedded)
m_layer->addChildrenToLayer(*importRootNode);
}