Browse Source

add imported meshes from OpenGEX-importer to scene.

Signed-off-by: Kim Kulling <[email protected]>
Kim Kulling 10 years ago
parent
commit
754897d1aa
2 changed files with 16 additions and 0 deletions
  1. 15 0
      code/OpenGEXImporter.cpp
  2. 1 0
      code/OpenGEXImporter.h

+ 15 - 0
code/OpenGEXImporter.cpp

@@ -238,6 +238,7 @@ void OpenGEXImporter::InternReadFile( const std::string &filename, aiScene *pSce
         handleNodes( m_ctx->m_root, pScene );
         handleNodes( m_ctx->m_root, pScene );
     }
     }
 
 
+    copyMeshes( pScene );
     resolveReferences();
     resolveReferences();
 }
 }
 
 
@@ -678,6 +679,20 @@ void OpenGEXImporter::handleMaterialNode( ODDLParser::DDLNode *node, aiScene *pS
 
 
 }
 }
 
 
+//------------------------------------------------------------------------------------------------
+void OpenGEXImporter::copyMeshes( aiScene *pScene ) {
+    if( m_meshCache.empty() ) {
+        return;
+    }
+    pScene->mNumMeshes = m_meshCache.size();
+    pScene->mMeshes = new aiMesh*[ pScene->mNumMeshes ];
+    size_t i( 0 );
+    for( std::vector<aiMesh*>::iterator it = m_meshCache.begin(); it != m_meshCache.end(); it++ ) {
+        pScene->mMeshes[ i ] = *it;
+        i++;
+    }
+}
+
 //------------------------------------------------------------------------------------------------
 //------------------------------------------------------------------------------------------------
 void OpenGEXImporter::resolveReferences() {
 void OpenGEXImporter::resolveReferences() {
     if( m_unresolvedRefStack.empty() ) {
     if( m_unresolvedRefStack.empty() ) {

+ 1 - 0
code/OpenGEXImporter.h

@@ -114,6 +114,7 @@ protected:
     void handleMaterialNode( ODDLParser::DDLNode *node, aiScene *pScene );
     void handleMaterialNode( ODDLParser::DDLNode *node, aiScene *pScene );
     void handleColorNode( ODDLParser::DDLNode *node, aiScene *pScene );
     void handleColorNode( ODDLParser::DDLNode *node, aiScene *pScene );
     void handleTextureNode( ODDLParser::DDLNode *node, aiScene *pScene );
     void handleTextureNode( ODDLParser::DDLNode *node, aiScene *pScene );
+    void copyMeshes( aiScene *pScene );
     void resolveReferences();
     void resolveReferences();
     void pushNode( aiNode *node, aiScene *pScene );
     void pushNode( aiNode *node, aiScene *pScene );
     aiNode *popNode();
     aiNode *popNode();