/// <summary> /// Parses and loads a line from an OBJ file. /// Currently only supports V, VN, VT, F and MTLLIB prefixes /// </summary> private void processLine(string line) { string[] parts = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length > 0) { switch (parts[0]) { case "usemtl": UseMtl = parts[1]; break; case "mtllib": Mtl = parts[1]; break; case "v": Vertex v = new Vertex(); v.LoadFromStringArray(parts); VertexList.Add(v); v.Index = VertexList.Count(); break; case "f": Face f = new Face(); f.LoadFromStringArray(parts); f.UseMtl = UseMtl; FaceList.Add(f); break; case "vn": NormalVertex vn = new NormalVertex(); vn.LoadFromStringArray(parts); NormalList.Add(vn); vn.Index = NormalList.Count(); break; case "vt": TextureVertex vt = new TextureVertex(); vt.LoadFromStringArray(parts); TextureList.Add(vt); vt.Index = TextureList.Count(); break; } } }
private void ProcessLine(string line) { var parts = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length <= 0) { return; } switch (parts[0]) { case "v": var vertex = new GeometricVertex(); vertex.ProcessData(parts, _maxValue); GeometricVertices.Add(vertex); break; case "f": var face = new FaceVertex(); face.ProcessData(parts); FaceVertices.Add(face); break; case "vt": var textureVertex = new TextureVertex(); textureVertex.ProcessData(parts); TextureVertices.Add(textureVertex); break; case "vn": var normalVertex = new NormalVertex(); normalVertex.ProcessData(parts); NormalVertices.Add(normalVertex); break; } }