From 33e370a8b7c788af5ecac39afb3d67867e152066 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Fri, 21 Oct 2016 21:14:35 +0200 Subject: [PATCH] Obj-Stream-Handling: fix readin of linewise import. --- code/IOStreamBuffer.h | 12 +++++++----- code/ObjFileImporter.cpp | 14 ++++---------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/code/IOStreamBuffer.h b/code/IOStreamBuffer.h index 09b7d5e..d6365cf 100644 --- a/code/IOStreamBuffer.h +++ b/code/IOStreamBuffer.h @@ -92,8 +92,7 @@ public: } bool readNextBlock() { - std::cout << "readNextBlock()\n"; - m_stream->Seek( m_filePos, aiOrigin_CUR ); + m_stream->Seek( m_filePos, aiOrigin_SET ); size_t readLen = m_stream->Read( &m_cache[ 0 ], sizeof( T ), m_cacheSize ); if ( readLen == 0 ) { return false; @@ -108,7 +107,9 @@ public: ::memset( &buffer[ 0 ], ' ', m_cacheSize ); if ( m_cachePos == m_cacheSize || 0 == m_filePos ) { - readNextBlock(); + if ( !readNextBlock() ) { + return false; + } } size_t i = 0; while ( !IsLineEnd( m_cache[ m_cachePos ] ) ) { @@ -116,12 +117,13 @@ public: m_cachePos++; i++; if ( m_cachePos >= m_cacheSize ) { - readNextBlock(); + if ( !readNextBlock() ) { + return false; + } } } buffer[ i ]='\n'; m_cachePos++; - return true; } diff --git a/code/ObjFileImporter.cpp b/code/ObjFileImporter.cpp index ae070ab..52e544e 100644 --- a/code/ObjFileImporter.cpp +++ b/code/ObjFileImporter.cpp @@ -297,9 +297,7 @@ aiNode *ObjFileImporter::createNodes(const ObjFile::Model* pModel, const ObjFile // ------------------------------------------------------------------------------------------------ // Create topology data -aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const ObjFile::Object* pData, - unsigned int meshIndex ) -{ +aiMesh *ObjFileImporter::createTopology( const ObjFile::Model* pModel, const ObjFile::Object* pData, unsigned int meshIndex ) { // Checking preconditions ai_assert( NULL != pModel ); @@ -483,19 +481,15 @@ void ObjFileImporter::createVertexArray(const ObjFile::Model* pModel, aiFace *pDestFace = &pMesh->mFaces[ outIndex ]; const bool last = ( vertexIndex == pSourceFace->m_pVertices->size() - 1 ); - if (pSourceFace->m_PrimitiveType != aiPrimitiveType_LINE || !last) - { + if (pSourceFace->m_PrimitiveType != aiPrimitiveType_LINE || !last) { pDestFace->mIndices[ outVertexIndex ] = newIndex; outVertexIndex++; } - if (pSourceFace->m_PrimitiveType == aiPrimitiveType_POINT) - { + if (pSourceFace->m_PrimitiveType == aiPrimitiveType_POINT) { outIndex++; outVertexIndex = 0; - } - else if (pSourceFace->m_PrimitiveType == aiPrimitiveType_LINE) - { + } else if (pSourceFace->m_PrimitiveType == aiPrimitiveType_LINE) { outVertexIndex = 0; if(!last) -- 2.7.4