internal static MeshData Import(String filePath) { StreamReader fileStream = new StreamReader(filePath); MeshData meshData = new MeshData(); List <string> invalidData = new List <string>(); while (!fileStream.EndOfStream) { String line = fileStream.ReadLine().Trim(); if (String.IsNullOrEmpty(line) || line[0] == '#') { continue; } String[] data = line.Split(new[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries); if (data.Length < 2) { invalidData.Add(line); continue; } KeyValuePair <string, string> parsedLineData = new KeyValuePair <string, string>(data[0], data[1]); switch (parsedLineData.Key) { case "v": //vertex if (!meshData.AddVertex(parsedLineData.Value)) { invalidData.Add(line); } break; case "f": //face if (!meshData.AddFace(parsedLineData.Value)) { invalidData.Add(line); } break; case "g": //group if (!meshData.AddGroup(parsedLineData.Value)) { invalidData.Add(line); } break; case "vn": //vertex normal if (!meshData.AddNormal(parsedLineData.Value)) { invalidData.Add(line); } break; case "vt": //texture if (!meshData.AddTexture(parsedLineData.Value)) { invalidData.Add(line); } break; case "mtllib": //material library if (!meshData.AddMaterial(parsedLineData.Value)) { invalidData.Add(line); } break; case "usemtl": //use material library meshData.SetMaterial(parsedLineData.Value); break; default: invalidData.Add(line); break; } } return(meshData); }
internal static MeshData Import(String filePath) { StreamReader fileStream = new StreamReader(filePath); MeshData meshData = new MeshData(); List<string> invalidData = new List<string>(); while (!fileStream.EndOfStream) { String line = fileStream.ReadLine().Trim(); if (String.IsNullOrEmpty(line) || line[0] == '#') continue; String[] data = line.Split(new[] { ' ' }, 2, StringSplitOptions.RemoveEmptyEntries); if (data.Length < 2) { invalidData.Add(line); continue; } KeyValuePair<string, string> parsedLineData = new KeyValuePair<string, string>(data[0], data[1]); switch (parsedLineData.Key) { case "v": //vertex if (!meshData.AddVertex(parsedLineData.Value)) invalidData.Add(line); break; case "f": //face if (!meshData.AddFace(parsedLineData.Value)) invalidData.Add(line); break; case "g": //group if (!meshData.AddGroup(parsedLineData.Value)) invalidData.Add(line); break; case "vn": //vertex normal if (!meshData.AddNormal(parsedLineData.Value)) invalidData.Add(line); break; case "vt": //texture if (!meshData.AddTexture(parsedLineData.Value)) invalidData.Add(line); break; case "mtllib": //material library if (!meshData.AddMaterial(parsedLineData.Value)) invalidData.Add(line); break; case "usemtl": //use material library meshData.SetMaterial(parsedLineData.Value); break; default: invalidData.Add(line); break; } } return meshData; }