diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-07-09 15:51:23 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2018-07-10 08:03:41 +0000 |
commit | 5e2cd9dc1c3be48bda1b858e8e204ff7a20684ba (patch) | |
tree | 18ca8d259c3f2b301c41258af7e23b94f0eb2a52 | |
parent | dc04968027163c9698b872498f7856a0e56088cc (diff) |
console: do not crash in info when no attached object
Rather, show a helpful message. This is now possible to trigger by
doing setparent(object, null) and therefore it is important to be
handled gracefully.
Change-Id: I3de16c92343ae961d4e5ea9fffd33a29b5a512e0
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
-rw-r--r-- | src/runtime/q3dsconsolecommands.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/runtime/q3dsconsolecommands.cpp b/src/runtime/q3dsconsolecommands.cpp index bfe9e1b..9d225b0 100644 --- a/src/runtime/q3dsconsolecommands.cpp +++ b/src/runtime/q3dsconsolecommands.cpp @@ -247,18 +247,22 @@ void Q3DSConsoleCommands::setupConsole(Q3DSConsole *console) if (obj->isNode()) { Q3DSNode *node = static_cast<Q3DSNode *>(obj); auto d = obj->attached<Q3DSNodeAttached>(); - m_console->addMessageFmt(longResponseColor, "Global transform: %s\nGlobal opacity: %f\n" - "Local logical visibility (eyeball): %d\n" - "Global logical visibility (inherited eyeball): %d\n" - "Local effective visibility (eyeball+slide): %d\n" - "Global effective visibility (inherited eyeball+slide): %d\n", - qPrintable(printMatrix(d->globalTransform)), - d->globalOpacity, - node->flags().testFlag(Q3DSNode::Active), - d->globalLogicalVisibility, - node->flags().testFlag(Q3DSNode::Active) && d->visibilityTag == Q3DSGraphObjectAttached::Visible, - d->globalEffectiveVisibility); - if (d->lightsData) { + if (d) { + m_console->addMessageFmt(longResponseColor, "Global transform: %s\nGlobal opacity: %f\n" + "Local logical visibility (eyeball): %d\n" + "Global logical visibility (inherited eyeball): %d\n" + "Local effective visibility (eyeball+slide): %d\n" + "Global effective visibility (inherited eyeball+slide): %d\n", + qPrintable(printMatrix(d->globalTransform)), + d->globalOpacity, + node->flags().testFlag(Q3DSNode::Active), + d->globalLogicalVisibility, + node->flags().testFlag(Q3DSNode::Active) && d->visibilityTag == Q3DSGraphObjectAttached::Visible, + d->globalEffectiveVisibility); + } else { + m_console->addMessageFmt(longResponseColor, "No attached object. (node not in scene?)"); + } + if (d && d->lightsData) { auto printLightSources = [this](const QVector<Q3DSLightSource> &lightSources) { for (int i = 0; i < lightSources.count(); ++i) { const Q3DSLightSource &lightSource(lightSources.at(i)); |