diff --git a/code/OpenGEXImporter.cpp b/code/OpenGEXImporter.cpp index cf637f22d..21c55b3b7 100644 --- a/code/OpenGEXImporter.cpp +++ b/code/OpenGEXImporter.cpp @@ -645,7 +645,30 @@ void OpenGEXImporter::handleVertexArrayNode( ODDLParser::DDLNode *node, aiScene //------------------------------------------------------------------------------------------------ void OpenGEXImporter::handleIndexArrayNode( ODDLParser::DDLNode *node, aiScene *pScene ) { + if( NULL == node ) { + throw DeadlyImportError( "No parent node for name." ); + return; + } + DataArrayList *vaList = node->getDataArrayList(); + if( NULL == vaList ) { + return; + } + + const size_t numItems( countDataArrayListItems( vaList ) ); + m_currentMesh->mNumFaces = numItems; + m_currentMesh->mFaces = new aiFace[ numItems ]; + for( size_t i = 0; i < numItems; i++ ) { + aiFace *current( & ( m_currentMesh->mFaces[ i ] ) ); + current->mNumIndices = 3; + current->mIndices = new unsigned int[ 3 ]; + Value *next( vaList->m_dataList ); + for( size_t i = 0; i < 3; i++ ) { + current->mIndices[ i ] = next->getInt32(); + next = next->m_next; + } + vaList = vaList->m_next; + } } //------------------------------------------------------------------------------------------------