From d7ce23893ece582467c30a64300919b52415e53b Mon Sep 17 00:00:00 2001 From: kimmi Date: Mon, 18 Oct 2010 19:18:28 +0000 Subject: [PATCH] BUGFIX: Fix for material import in Q3-BSP-loader ( thanks to Matthias Fauconneau ). git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@829 67173fc5-114c-0410-ac8e-9d2fd5bffc1f --- CREDITS | 3 +++ code/Q3BSPFileImporter.cpp | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CREDITS b/CREDITS index 47d456107..933a133c1 100644 --- a/CREDITS +++ b/CREDITS @@ -86,3 +86,6 @@ Contributed several patches regarding Mac OS/XCode targets, bug reports. - Martin Walser (Samhayne) Contributed the 'SimpleTexturedOpenGl' sample. + +- Matthias Fauconneau +Contributed a fix for the Q3-BSP loader. diff --git a/code/Q3BSPFileImporter.cpp b/code/Q3BSPFileImporter.cpp index 19ae2ae21..25f50b3db 100644 --- a/code/Q3BSPFileImporter.cpp +++ b/code/Q3BSPFileImporter.cpp @@ -40,6 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "AssimpPCH.h" #ifndef ASSIMP_BUILD_NO_Q3BSP_IMPORTER +#include #include "DefaultIOSystem.h" #include "Q3BSPFileImporter.h" #include "Q3BSPZipArchive.h" @@ -85,7 +86,7 @@ static void extractIds( const std::string &rKey, int &rId1, int &rId2 ) if ( std::string::npos == pos ) return; - std::string tmp1 = rKey.substr( 0, pos - 1 ); + std::string tmp1 = rKey.substr( 0, pos ); std::string tmp2 = rKey.substr( pos + 1, rKey.size() - pos - 1 ); rId1 = atoi( tmp1.c_str() ); rId2 = atoi( tmp2.c_str() ); @@ -141,6 +142,12 @@ Q3BSPFileImporter::~Q3BSPFileImporter() for ( FaceMap::iterator it = m_MaterialLookupMap.begin(); it != m_MaterialLookupMap.end(); ++it ) { + const std::string matName = (*it).first; + if ( matName.empty() ) + { + continue; + } + std::vector *pCurFaceArray = (*it).second; if ( NULL != pCurFaceArray ) { @@ -298,8 +305,8 @@ void Q3BSPFileImporter::CreateNodes( const Q3BSP::Q3BSPModel *pModel, aiScene* p { delete pMesh; } - matIdx++; } + matIdx++; } pScene->mNumMeshes = MeshArray.size(); @@ -343,7 +350,7 @@ aiNode *Q3BSPFileImporter::CreateTopology( const Q3BSP::Q3BSPModel *pModel, return NULL; size_t numTriangles = countTriangles( rArray ); - //pMesh->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; + pMesh->mPrimitiveTypes = aiPrimitiveType_TRIANGLE; pMesh->mFaces = new aiFace[ numTriangles ]; pMesh->mNumFaces = numTriangles;