summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@qt.io>2018-07-09 15:51:23 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2018-07-10 08:03:41 +0000
commit5e2cd9dc1c3be48bda1b858e8e204ff7a20684ba (patch)
tree18ca8d259c3f2b301c41258af7e23b94f0eb2a52
parentdc04968027163c9698b872498f7856a0e56088cc (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.cpp28
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));