From 4a38107bc12f8c3d9d290d4649c8606ea8b1376d Mon Sep 17 00:00:00 2001 From: Svenn-Arne Dragly Date: Thu, 5 Jul 2018 13:06:24 +0200 Subject: Add private API to access child nodes of QEntity and QFrameGraphNode This opens up for reduced bookeeping on the backend, and is used by the experimental Dragon render aspect, which is currently being implemented in qt3d-runtime. Change-Id: I4cc2e98e4e0e7e8d456ed11c4fbc48db5c93f2a2 Reviewed-by: Paul Lemire (cherry picked from commit 77e418fde850c86e39d9dd8528876599fbe9dc34) Reviewed-by: Mike Krus Reviewed-by: Christian Stromme --- tests/auto/core/qentity/tst_qentity.cpp | 46 ++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 10 deletions(-) (limited to 'tests/auto/core/qentity/tst_qentity.cpp') diff --git a/tests/auto/core/qentity/tst_qentity.cpp b/tests/auto/core/qentity/tst_qentity.cpp index efebb26ef..e27cd1fc9 100644 --- a/tests/auto/core/qentity/tst_qentity.cpp +++ b/tests/auto/core/qentity/tst_qentity.cpp @@ -556,30 +556,55 @@ void tst_Entity::removeSeveralTimesSameComponent() void tst_Entity::checkCloning_data() { QTest::addColumn("entity"); + QTest::addColumn>("childEntityIds"); + QTest::addColumn("creationChangeCount"); - QTest::newRow("defaultConstructed") << new MyEntity(); + { + QTest::newRow("defaultConstructed") << new MyEntity() << QVector() << 1; + } + + { + Qt3DCore::QEntity *entityWithComponents = new MyEntity(); + Qt3DCore::QComponent *component1 = new MyQComponent(); + Qt3DCore::QComponent *component2 = new MyQComponent(); + Qt3DCore::QComponent *component3 = new MyQComponent(); + entityWithComponents->addComponent(component1); + entityWithComponents->addComponent(component2); + entityWithComponents->addComponent(component3); + QTest::newRow("entityWithComponents") << entityWithComponents << QVector() << 4; + } - Qt3DCore::QEntity *entityWithComponents = new MyEntity(); - Qt3DCore::QComponent *component1 = new MyQComponent(); - Qt3DCore::QComponent *component2 = new MyQComponent(); - Qt3DCore::QComponent *component3 = new MyQComponent(); - entityWithComponents->addComponent(component1); - entityWithComponents->addComponent(component2); - entityWithComponents->addComponent(component3); - QTest::newRow("entityWithComponents") << entityWithComponents; + { + Qt3DCore::QEntity *entityWithChildren = new MyEntity(); + Qt3DCore::QEntity *child1 = new MyEntity(entityWithChildren); + Qt3DCore::QEntity *child2 = new MyEntity(entityWithChildren); + QVector childIds = {child1->id(), child2->id()}; + QTest::newRow("entityWithChildren") << entityWithChildren << childIds << 3; + } + + { + Qt3DCore::QEntity *entityWithNestedChildren = new MyEntity(); + Qt3DCore::QEntity *child = new MyEntity(entityWithNestedChildren); + Qt3DCore::QNode *dummy = new Qt3DCore::QNode(entityWithNestedChildren); + Qt3DCore::QEntity *grandChild = new MyEntity(entityWithNestedChildren); + QVector childIds = {child->id(), grandChild->id()}; + QTest::newRow("entityWithNestedChildren") << entityWithNestedChildren << childIds << 4; + } } void tst_Entity::checkCloning() { // GIVEN QFETCH(Qt3DCore::QEntity *, entity); + QFETCH(QVector, childEntityIds); + QFETCH(int, creationChangeCount); // WHEN Qt3DCore::QNodeCreatedChangeGenerator creationChangeGenerator(entity); QVector creationChanges = creationChangeGenerator.creationChanges(); // THEN - QCOMPARE(creationChanges.size(), 1 + entity->components().size()); + QCOMPARE(creationChanges.size(), creationChangeCount); const Qt3DCore::QNodeCreatedChangePtr creationChangeData = qSharedPointerCast>(creationChanges.first()); @@ -591,6 +616,7 @@ void tst_Entity::checkCloning() QCOMPARE(creationChangeData->metaObject(), entity->metaObject()); QCOMPARE(creationChangeData->parentId(), entity->parentNode() ? entity->parentNode()->id() : Qt3DCore::QNodeId()); QCOMPARE(cloneData.parentEntityId, entity->parentEntity() ? entity->parentEntity()->id() : Qt3DCore::QNodeId()); + QCOMPARE(cloneData.childEntityIds, childEntityIds); QCOMPARE(cloneData.componentIdsAndTypes.size(), entity->components().size()); const QVector &components = entity->components(); -- cgit v1.2.3