From: Turo Lamminen Date: Thu, 5 Oct 2017 09:51:08 +0000 (+0300) Subject: OpenGEXImporter: Copy materials to scene X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3f0bb9c63494c097cc3ddf6240af8c76023e7819;p=platform%2Fupstream%2Fassimp.git OpenGEXImporter: Copy materials to scene --- diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index 7073a5e..47e3e3e 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -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(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; diff --git a/code/OpenGEXImporter.h b/code/OpenGEXImporter.h index aefd9ef..c0cde57 100644 --- a/code/OpenGEXImporter.h +++ b/code/OpenGEXImporter.h @@ -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();