Support lowercase 'ns' and 'ni' obj material tokens

Previously, the obj material parser would interpret all key tokens
starting with 'n' as 'newmtl' tokens. However, there are other tokens
that can start with 'n', namely 'ns' and 'ni' for material properties.
Make the parser robust to such cases, despite their canonical forms
being uppercase.

Resolves #410.
pull/413/head
Jared Duke 2014-11-18 16:56:46 -08:00
parent 94f61300c2
commit c7b6b5ea2f
1 changed files with 8 additions and 13 deletions

View File

@ -166,25 +166,27 @@ void ObjFileMtlImporter::load()
}
break;
case 'N': // Shineness
case 'N':
case 'n':
{
++m_DataIt;
switch(*m_DataIt)
switch(*m_DataIt)
{
case 's':
case 's': // Specular exponent
++m_DataIt;
getFloatValue(m_pModel->m_pCurrentMaterial->shineness);
break;
case 'i': //Index Of refraction
case 'i': // Index Of refraction
++m_DataIt;
getFloatValue(m_pModel->m_pCurrentMaterial->ior);
break;
case 'e': // New material
createMaterial();
break;
}
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
break;
}
break;
case 'm': // Texture
case 'b': // quick'n'dirty - for 'bump' sections
@ -194,13 +196,6 @@ void ObjFileMtlImporter::load()
}
break;
case 'n': // New material name
{
createMaterial();
m_DataIt = skipLine<DataArrayIt>( m_DataIt, m_DataItEnd, m_uiLine );
}
break;
case 'i': // Illumination model
{
m_DataIt = getNextToken<DataArrayIt>(m_DataIt, m_DataItEnd);