summaryrefslogtreecommitdiffstats
path: root/editorlib
diff options
context:
space:
mode:
Diffstat (limited to 'editorlib')
-rw-r--r--editorlib/src/editorsceneitemmodel.cpp4
-rw-r--r--editorlib/src/editorutils.cpp10
-rw-r--r--editorlib/src/editorutils.h1
3 files changed, 15 insertions, 0 deletions
diff --git a/editorlib/src/editorsceneitemmodel.cpp b/editorlib/src/editorsceneitemmodel.cpp
index 8460485..b575137 100644
--- a/editorlib/src/editorsceneitemmodel.cpp
+++ b/editorlib/src/editorsceneitemmodel.cpp
@@ -201,6 +201,10 @@ void EditorSceneItemModel::handleImportEntityLoaderStatusChanged()
} else if (sceneLoader->status() == Qt3DRender::QSceneLoader::Error) {
m_scene->setError(tr("Failed to import an Entity"));
}
+ // TODO: Work around enabled false status not properly propagating to children
+ // TODO: Remove when fixed in Qt3D.
+ EditorUtils::setEnabledToSubtree(m_sceneLoaderEntity, false);
+
// TODO: deleteLater commented out as a workaround for entity deletion crash,
// TODO: obviously causes memory leak.
//m_sceneLoaderEntity->deleteLater();
diff --git a/editorlib/src/editorutils.cpp b/editorlib/src/editorutils.cpp
index f499d92..82a2fe2 100644
--- a/editorlib/src/editorutils.cpp
+++ b/editorlib/src/editorutils.cpp
@@ -1288,6 +1288,16 @@ EditorUtils::InsertableEntities EditorUtils::insertableEntityType(Qt3DCore::QEnt
return insertableType;
}
+void EditorUtils::setEnabledToSubtree(Qt3DCore::QEntity *entity, bool enable)
+{
+ entity->setEnabled(enable);
+ Q_FOREACH (QObject *child, entity->children()) {
+ Qt3DCore::QEntity *childEntity = qobject_cast<Qt3DCore::QEntity *>(child);
+ if (childEntity)
+ setEnabledToSubtree(childEntity, enable);
+ }
+}
+
template <typename T>
void EditorUtils::copyRenderParameters(T *source, T *target)
diff --git a/editorlib/src/editorutils.h b/editorlib/src/editorutils.h
index 61fcdd5..582462f 100644
--- a/editorlib/src/editorutils.h
+++ b/editorlib/src/editorutils.h
@@ -172,6 +172,7 @@ public:
static void copyLockProperties(const QObject *source, QObject *target);
static void lockProperty(const QByteArray &lockPropertyName, QObject *obj, bool lock);
static InsertableEntities insertableEntityType(Qt3DCore::QEntity *entity);
+ static void setEnabledToSubtree(Qt3DCore::QEntity *entity, bool enable);
private:
// Private constructor to ensure no actual instance is created