diff options
Diffstat (limited to 'src/plugins/sceneformats/assimp/qailoader.cpp')
-rw-r--r-- | src/plugins/sceneformats/assimp/qailoader.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/plugins/sceneformats/assimp/qailoader.cpp b/src/plugins/sceneformats/assimp/qailoader.cpp index a9444b5b6..d866c2fa4 100644 --- a/src/plugins/sceneformats/assimp/qailoader.cpp +++ b/src/plugins/sceneformats/assimp/qailoader.cpp @@ -257,6 +257,8 @@ QGLSceneNode *QAiLoader::loadMeshes() loadNodes(m_scene->mRootNode, m_root); } + setEffectRecursive(m_root); + if (m_hasTextures) // make textures the default { m_root->setEffect(QGL::LitModulateTexture2D); @@ -552,3 +554,24 @@ void QAiLoader::loadMaterial(aiMaterial *ma) Q_UNUSED(k); //qDebug() << "loaded material" << k << mq; } + +/*! + set effects for all nodes +*/ +void QAiLoader::setEffectRecursive(QGLSceneNode *node) +{ + if (node!=0) { + if (node->count()>0) { + if (qHasTextures(node)) { + node->setEffect(QGL::LitModulateTexture2D); + } else { + node->setEffect(QGL::LitMaterial); + } + + } + QList<QGLSceneNode *> nodeChildren = node->children(); + foreach (QGLSceneNode *ch, nodeChildren) { + setEffectRecursive(ch); + } + } +} |