Prechádzať zdrojové kódy

Merge pull request #199 from jdduke/obj_mg_parse

Properly parse 'mg' keyword in .obj files
Kim Kulling 11 rokov pred
rodič
commit
ccd5b30a56
2 zmenil súbory, kde vykonal 16 pridanie a 2 odobranie
  1. 14 2
      code/ObjFileParser.cpp
  2. 2 0
      code/ObjFileParser.h

+ 14 - 2
code/ObjFileParser.cpp

@@ -149,9 +149,12 @@ void ObjFileParser::parseFile()
 			}
 			break;
 
-		case 'm': // Parse a material library
+		case 'm': // Parse a material library or merging group ('mg')
 			{
-				getMaterialLib();
+				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.

+ 2 - 0
code/ObjFileParser.h

@@ -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