All pastes #708965 Raw Edit

Untitled

public text v1 · immutable
#708965 ·published 2007-09-24 07:39 UTC
rendered paste body
        public static ModelObject Load(GraphicsDevice Device)
        {
            StreamReader reader = new StreamReader("belltower.obj");

            List<VertexPositionTexture> vptVerticies = new List<VertexPositionTexture>();
            List<Vector3> verticies = new List<Vector3>();
            List<Vector2> uvcoords = new List<Vector2>();

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();

                line = line.Trim();

                if (line.Length < 1)
                    continue;

                switch (line[0])
                {
                    case 'v':
                        if (line[1] == 't')
                        {
                            string data = line.Substring(3);
                            string[] values = data.Split(' ');

                            Vector2 coord = new Vector2(float.Parse(values[0]), float.Parse(values[1]));

                            uvcoords.Add(coord);
                        }
                        else
                        {
                            string data = line.Substring(2);
                            string[] values = data.Split(' ');

                            Vector3 vert = new Vector3(float.Parse(values[0]), float.Parse(values[1]), float.Parse(values[2]));

                            verticies.Add(vert);
                        }
                        break;

                    case 'f':
                        string fData = line.Substring(2);
                        string[] fValues = fData.Split(' ');

                        for (int i = 0; i < fValues.Length; i++)
                        {
                            string[] index = fValues[i].Split('/');

                            int vIndex = int.Parse(index[0]);
                            int uvIndex = int.Parse(index[1]);

                            vptVerticies.Add(new VertexPositionTexture(verticies[vIndex - 1], uvcoords[uvcoords.Count + uvIndex]));
                        }
                        break;
                }
            }
        }