Delete reduntal 'g ' from actual name of Group. (we don't have 'usemtl' in material...
authorVolodymyr Boichentsov <sakristx@gmail.com>
Fri, 22 Jul 2016 13:10:06 +0000 (14:10 +0100)
committerVolodymyr Boichentsov <sakristx@gmail.com>
Fri, 22 Jul 2016 13:10:06 +0000 (14:10 +0100)
Fixed issue in case 'usemtl' goes straight after 'g'.

code/ObjFileParser.cpp

index a2e9683..5314826 100644 (file)
@@ -696,6 +696,8 @@ void ObjFileParser::getGroupName()
 {
     std::string strGroupName;
 
+    // here we skip 'g ' from line
+    m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);
     m_DataIt = getName<DataArrayIt>(m_DataIt, m_DataItEnd, strGroupName);
     if( isEndOfBuffer( m_DataIt, m_DataItEnd ) ) {
         return;
@@ -832,7 +834,11 @@ bool ObjFileParser::needsNewMesh( const std::string &materialName )
     bool newMat = false;
     int matIdx = getMaterialIndex( materialName );
     int curMatIdx = m_pModel->m_pCurrentMesh->m_uiMaterialIndex;
-    if ( curMatIdx != int(ObjFile::Mesh::NoMaterial) && curMatIdx != matIdx )
+    if ( curMatIdx != int(ObjFile::Mesh::NoMaterial)
+        && curMatIdx != matIdx
+        // no need create a new mesh if no faces in current
+        // lets say 'usemtl' goes straight after 'g'
+        && m_pModel->m_pCurrentMesh->m_Faces.size() > 0 )
     {
         // New material -> only one material per mesh, so we need to create a new
         // material