diff options
Diffstat (limited to 'src/core/nodes/qentity.cpp')
-rw-r--r-- | src/core/nodes/qentity.cpp | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/src/core/nodes/qentity.cpp b/src/core/nodes/qentity.cpp index 024991387..1199dfc4b 100644 --- a/src/core/nodes/qentity.cpp +++ b/src/core/nodes/qentity.cpp @@ -53,6 +53,50 @@ QT_BEGIN_NAMESPACE +namespace { + +QString dumpNode(const Qt3DCore::QEntity *n) { + auto formatNode = [](const Qt3DCore::QNode *n) { + QString res = QString(QLatin1String("%1{%2}")) + .arg(QLatin1String(n->metaObject()->className())) + .arg(n->id().id()); + if (!n->objectName().isEmpty()) + res += QString(QLatin1String(" (%1)")).arg(n->objectName()); + if (!n->isEnabled()) + res += QLatin1String(" [D]"); + return res; + }; + + QString res = formatNode(n); + const auto &components = n->components(); + if (components.size()) { + QStringList componentNames; + for (const auto &c : components) + componentNames += formatNode(c); + res += QString(QLatin1String(" [ %1 ]")).arg(componentNames.join(QLatin1String(", "))); + } + + return res; +} + +QStringList dumpSG(const Qt3DCore::QEntity *n, int level = 0) +{ + QStringList reply; + QString res = dumpNode(n); + reply += res.rightJustified(res.length() + level * 2, ' '); + + const auto children = n->childNodes(); + for (auto *child: children) { + auto *childFGNode = qobject_cast<Qt3DCore::QEntity *>(child); + if (childFGNode != nullptr) + reply += dumpSG(childFGNode, level + 1); + } + + return reply; +} + +} + namespace Qt3DCore { /*! @@ -75,7 +119,7 @@ namespace Qt3DCore { */ /*! - \fn template<typename T> QVector<T *> QEntity::componentsOfType() const + \fn template<typename T> QVector<T *> Qt3DCore::QEntity::componentsOfType() const Returns all the components added to this entity that can be cast to type T or an empty vector if there are no such components. @@ -244,6 +288,12 @@ QNodeId QEntityPrivate::parentEntityId() const return m_parentEntityId; } +QString QEntityPrivate::dumpSceneGraph() const +{ + Q_Q(const QEntity); + return dumpSG(q).join('\n'); +} + QNodeCreatedChangeBasePtr QEntity::createNodeCreationChange() const { auto creationChange = QNodeCreatedChangePtr<QEntityData>::create(this); |