Properly parse 'mg' keyword in .obj files

The 'mg' keyword is currently being interpreted as a material library keyword,
when it really refers to the merging group.  Handle this case, in effect ignoring
the keyword as merging groups are currently unsupported.
pull/199/head
Jared Duke 2013-11-26 14:21:32 -08:00
parent ca7542cf5d
commit 931f0489bd
2 changed files with 16 additions and 2 deletions

View File

@ -149,8 +149,11 @@ void ObjFileParser::parseFile()
}
break;
case 'm': // Parse a material library
case 'm': // Parse a material library or merging group ('mg')
{
if (*(m_DataIt + 1) == 'g')
getGroupNumberAndResolution();
else
getMaterialLib();
}
break;
@ -609,6 +612,15 @@ void ObjFileParser::getGroupNumber()
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
}
// -------------------------------------------------------------------
// Not supported
void ObjFileParser::getGroupNumberAndResolution()
{
// Not used
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
}
// -------------------------------------------------------------------
// Stores values for a new object instance, name will be used to
// identify it.

View File

@ -102,6 +102,8 @@ private:
void getGroupName();
/// Gets the group number from file.
void getGroupNumber();
/// Gets the group number and resolution from file.
void getGroupNumberAndResolution();
/// Returns the index of the material. Is -1 if not material was found.
int getMaterialIndex( const std::string &strMaterialName );
/// Parse object name