OpenGEXImporter: Copy materials to scene
authorTuro Lamminen <turotl@gmail.com>
Thu, 5 Oct 2017 09:51:08 +0000 (12:51 +0300)
committerTuro Lamminen <turotl@gmail.com>
Fri, 6 Oct 2017 15:23:28 +0000 (18:23 +0300)
code/OpenGEXImporter.cpp
code/OpenGEXImporter.h

index 7073a5e..47e3e3e 100644 (file)
@@ -322,6 +322,7 @@ void OpenGEXImporter::InternReadFile( const std::string &filename, aiScene *pSce
     copyMeshes( pScene );
     copyCameras( pScene );
     copyLights( pScene );
+    copyMaterials( pScene );
     resolveReferences();
     createNodeTree( pScene );
 }
@@ -1159,6 +1160,19 @@ void OpenGEXImporter::copyLights( aiScene *pScene ) {
 }
 
 //------------------------------------------------------------------------------------------------
+void OpenGEXImporter::copyMaterials( aiScene *pScene ) {
+    ai_assert( nullptr != pScene );
+
+    if ( m_materialCache.empty() ) {
+        return;
+    }
+
+    pScene->mNumMaterials = static_cast<unsigned int>(m_materialCache.size());
+    pScene->mMaterials = new aiMaterial*[ pScene->mNumMaterials ];
+    std::copy( m_materialCache.begin(), m_materialCache.end(), pScene->mMaterials );
+}
+
+//------------------------------------------------------------------------------------------------
 void OpenGEXImporter::resolveReferences() {
     if( m_unresolvedRefStack.empty() ) {
         return;
index aefd9ef..c0cde57 100644 (file)
@@ -133,6 +133,7 @@ protected:
     void copyMeshes( aiScene *pScene );
     void copyCameras( aiScene *pScene );
     void copyLights( aiScene *pScene );
+    void copyMaterials( aiScene *pScene );
     void resolveReferences();
     void pushNode( aiNode *node, aiScene *pScene );
     aiNode *popNode();