public ObjFile Read(string[] lines) { ObjFile data = new ObjFile(); foreach (var line in lines) { string syntax = line.Substring(0, 2).Trim(); if (syntax.Equals(FileSyntax.Obj.VERTEX)) { data.Vertexes.Add(V3d.Parse(line.Substring(1), T3D_NUMBER_SEPARATOR)); } if (syntax.Equals(FileSyntax.Obj.FACE)) { data.AddFace(ObjFile.Face.Parse(line.Substring(1))); } } return(data); }
private List <Polygon> Read(string[] input) { if (!input[0].Trim().Contains(FileUtils.T3dFile.Begin(FileSyntax.T3d.POLY_LIST))) { InvalidSynaxError(0); } if (!input[input.Length - 1].Trim().Contains(FileUtils.T3dFile.End(FileSyntax.T3d.POLY_LIST))) { InvalidSynaxError(input.Length - 1); } for (int line = 1; line < input.Length; line++) { if (input[line].Trim().Contains(FileUtils.T3dFile.Begin(FileSyntax.T3d.POLYGON))) { Polygon polygon = new Polygon(); loadedPolygons.Add(polygon); while (line < input.Length) { if (input[line].Trim().Contains(FileUtils.T3dFile.End(FileSyntax.T3d.POLYGON))) { break; } try { var syntax = GetSyntax(input[line]); var numbers = GetNumbers(input[line]); switch (syntax) { case FileSyntax.T3d.ORIGIN: polygon.Origin = V3d.Parse(numbers, T3D_NUMBER_SEPARATOR); break; case FileSyntax.T3d.NORMAL: polygon.Normal = V3d.Parse(numbers, T3D_NUMBER_SEPARATOR); break; case FileSyntax.T3d.TEXTURE_U: polygon.TextureU = V3d.Parse(numbers, T3D_NUMBER_SEPARATOR); break; case FileSyntax.T3d.TEXTURE_V: polygon.TextureV = V3d.Parse(numbers, T3D_NUMBER_SEPARATOR); break; case FileSyntax.T3d.VERTEX: polygon.Vertexes.Add(V3d.Parse(numbers, T3D_NUMBER_SEPARATOR)); break; } } catch (Exception e) { InvalidSynaxError(line, e.Message); } line++; } if (line >= input.Length) { InvalidSynaxError(line, "Cannot find " + End(FileSyntax.T3d.POLYGON)); } } } return(loadedPolygons); }