summaryrefslogtreecommitdiffstats
path: root/src/core/nodes/qentity.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/nodes/qentity.cpp')
-rw-r--r--src/core/nodes/qentity.cpp52
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);