From 16ae05eeeb225cd518cee894f7836bf7680fa07c Mon Sep 17 00:00:00 2001 From: Gregory Jaegy Date: Fri, 13 Jun 2014 10:56:10 +0200 Subject: [PATCH] obj loader: added multiline support collada loaded: bug fixed when importing several files, whith one containing animation --- code/ColladaLoader.cpp | 3 +++ code/ObjFileImporter.cpp | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/code/ColladaLoader.cpp b/code/ColladaLoader.cpp index 7e4704b8f..e721c99b8 100644 --- a/code/ColladaLoader.cpp +++ b/code/ColladaLoader.cpp @@ -133,6 +133,7 @@ void ColladaLoader::InternReadFile( const std::string& pFile, aiScene* pScene, I mLights.clear(); mCameras.clear(); mTextures.clear(); + mAnims.clear(); // parse the input file ColladaParser parser( pIOHandler, pFile); @@ -904,6 +905,8 @@ void ColladaLoader::StoreAnimations( aiScene* pScene, const ColladaParser& pPars pScene->mAnimations = new aiAnimation*[mAnims.size()]; std::copy( mAnims.begin(), mAnims.end(), pScene->mAnimations); } + + mAnims.clear(); } // ------------------------------------------------------------------------------------------------ diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index ab5d4c351..65a8be314 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -139,7 +139,23 @@ void ObjFileImporter::InternReadFile( const std::string& pFile, aiScene* pScene, { strModelName = pFile; } - + + // process all '\' + std::vector ::iterator iter = m_Buffer.begin(); + while (iter != m_Buffer.end()) + { + if (*iter == '\\') + { + // remove '\' + iter = m_Buffer.erase(iter); + // remove next character + while (*iter == '\r' || *iter == '\n') + iter = m_Buffer.erase(iter); + } + else + ++iter; + } + // parse the file into a temporary representation ObjFileParser parser(m_Buffer, strModelName, pIOHandler);