diff --git a/code/ColladaHelper.h b/code/ColladaHelper.h index f9bd4fb5a..956665198 100644 --- a/code/ColladaHelper.h +++ b/code/ColladaHelper.h @@ -321,6 +321,8 @@ struct Mesh for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i) mNumUVComponents[i] = 2; } + + std::string mName; // just to check if there's some sophisticated addressing involved... // which we don't support, and therefore should warn about. diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index a97ea2c6a..7e4704b8f 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -521,7 +521,10 @@ void ColladaLoader::BuildMeshesForNode( const ColladaParser& pParser, const Coll // assign the material index dstMesh->mMaterialIndex = matIdx; - dstMesh->mName = mid.mMeshOrController; + if(dstMesh->mName.length == 0) + { + dstMesh->mName = mid.mMeshOrController; + } } } } @@ -541,6 +544,8 @@ aiMesh* ColladaLoader::CreateMesh( const ColladaParser& pParser, const Collada:: const Collada::Controller* pSrcController, size_t pStartVertex, size_t pStartFace) { aiMesh* dstMesh = new aiMesh; + + dstMesh->mName = pSrcMesh->mName; // count the vertices addressed by its faces const size_t numVertices = std::accumulate( pSrcMesh->mFaceSize.begin() + pStartFace, diff --git a/code/ColladaParser.cpp b/code/ColladaParser.cpp index 442896a39..767347695 100644 --- a/code/ColladaParser.cpp +++ b/code/ColladaParser.cpp @@ -1492,6 +1492,13 @@ void ColladaParser::ReadGeometryLibrary() // create a mesh and store it in the library under its ID Mesh* mesh = new Mesh; mMeshLibrary[id] = mesh; + + // read the mesh name if it exists + const int nameIndex = TestAttribute("name"); + if(nameIndex != -1) + { + mesh->mName = mReader->getAttributeValue(nameIndex); + } // read on from there ReadGeometry( mesh);