Exemple #1
0
            public Triangulo(int a)
            {
                vert = new VerticeTemporal[3];
                tex  = new TexturaTemporal[3];
                nor  = new NormalTemporal[3];

                for (int i = 0; i < 3; i++)
                {
                    vert[i] = new VerticeTemporal();
                    tex[i]  = new TexturaTemporal();
                    nor[i]  = new NormalTemporal();
                }
            }
Exemple #2
0
            public Triangulo(VerticeTemporal v1, VerticeTemporal v2, VerticeTemporal v3)
            {
                vert1 = v1;
                vert2 = v2;
                vert3 = v3;

                tex1 = new TexturaTemporal();
                tex2 = new TexturaTemporal();
                tex3 = new TexturaTemporal();

                nor1 = new NormalTemporal();
                nor2 = new NormalTemporal();
                nor3 = new NormalTemporal();
            }
Exemple #3
0
            public Triangulo(VerticeTemporal v1, VerticeTemporal v2, VerticeTemporal v3)
            {
                vert = new VerticeTemporal[3];
                tex  = new TexturaTemporal[3];
                nor  = new NormalTemporal[3];

                vert[0] = v1;
                vert[1] = v2;
                vert[2] = v3;


                for (int i = 0; i < 3; i++)
                {
                    tex[i] = new TexturaTemporal();
                    nor[i] = new NormalTemporal();
                }
            }
Exemple #4
0
            public Triangulo(VerticeTemporal v1, VerticeTemporal v2, VerticeTemporal v3)
            {
                vert = new VerticeTemporal[3];
                tex = new TexturaTemporal[3];
                nor = new NormalTemporal[3];

                vert[0] = v1;
                vert[1] = v2;
                vert[2] = v3;

                for (int i=0; i<3; i++)
                {
                    tex[i] = new TexturaTemporal();
                    nor[i] = new NormalTemporal();
                }
            }
Exemple #5
0
            public Triangulo(int a)
            {
                vert = new VerticeTemporal[3];
                tex = new TexturaTemporal[3];
                nor = new NormalTemporal[3];

                for (int i = 0; i < 3; i++)
                {
                    vert[i] = new VerticeTemporal();
                    tex[i] = new TexturaTemporal();
                    nor[i] = new NormalTemporal();
                }
            }
Exemple #6
0
        //--------------------------------------------------------------------
        // Función:    ReadObject
        // Propósito:
        // Fecha:      miércoles, 08 de noviembre de 2006, 21:01:35
        //--------------------------------------------------------------------
        private void ReadObject(StreamReader sr)
        {
            m_bHasNormals = false;

            m_ListaVerticesFinal.Clear();
            m_ListaIndicesFinal.Clear();

            String currentLine = sr.ReadLine();

            while (!currentLine.Contains("*MESH_NUMVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            String[] parse = currentLine.Split(' ');

            m_VerticesArrayTemp = new VerticeTemporal[Int32.Parse(parse[1])];

            Xtrace.Log("ASE Vértices: {0}", m_VerticesArrayTemp.Length);

            while (!currentLine.Contains("*MESH_NUMFACES"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse = currentLine.Split(' ');

            m_ArrayTriangulos = new Triangulo[Int32.Parse(parse[1])];

            for (int h=0; h<m_ArrayTriangulos.Length; h++)
                m_ArrayTriangulos[h] = new Triangulo(0);

            Xtrace.Log("ASE Triángulos: {0}", m_ArrayTriangulos.Length);

            while (!currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = sr.ReadLine();
            }

            int i = 0;

            while (currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');
                m_VerticesArrayTemp[i].x = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].y = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].z = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("ASE Vert {0}: ({1}, {2}, {3})", i, m_VerticesArrayTemp[i].x, m_VerticesArrayTemp[i].y,
                   m_VerticesArrayTemp[i].z);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_FACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_FACE "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');
                int a = Int32.Parse(parse[3]);
                int b = Int32.Parse(parse[5]);
                int c = Int32.Parse(parse[7]);

                m_ArrayTriangulos[i].vert[0] = m_VerticesArrayTemp[a];
                m_ArrayTriangulos[i].vert[1] = m_VerticesArrayTemp[b];
                m_ArrayTriangulos[i].vert[2] = m_VerticesArrayTemp[c];

                Xtrace.Log("ASE Tri {0}: ({1}, {2}, {3})", i, a, b, c);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_NUMTVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse = currentLine.Split(' ');

            m_VerticesTexTemp = new TexturaTemporal[Int32.Parse(parse[1])];

            while (!currentLine.Contains("*MESH_TVERT "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_TVERT "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');
                m_VerticesTexTemp[i].u = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesTexTemp[i].v = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("ASE Tex {0}: ({1}, {2})", i, m_VerticesTexTemp[i].u, m_VerticesTexTemp[i].v);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');

                m_ArrayTriangulos[i].tex[0] = m_VerticesTexTemp[Int32.Parse(parse[2])];
                m_ArrayTriangulos[i].tex[1] = m_VerticesTexTemp[Int32.Parse(parse[3])];
                m_ArrayTriangulos[i].tex[2] = m_VerticesTexTemp[Int32.Parse(parse[4])];
                currentLine = sr.ReadLine();
                i++;
            }

            //if (this.checkBoxSubdirs.Checked)
            {
                while (!currentLine.Contains("*MESH_VERTEXNORMAL "))
                {
                    currentLine = sr.ReadLine();

                    if (currentLine == null)
                        break;
                }

                if (currentLine != null)
                {
                    i = 0;
                    int t = 0;

                    while (currentLine.Contains("*MESH_VERTEXNORMAL ") || currentLine.Contains("*MESH_FACENORMAL "))
                    {
                        if (currentLine.Contains("*MESH_FACENORMAL "))
                        {
                            currentLine = sr.ReadLine();
                            continue;
                        }

                        currentLine = FormatString(currentLine);
                        parse = currentLine.Split(' ');

                        NormalTemporal n = new NormalTemporal();

                        n.nx = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                        n.ny = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                        n.nz = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);

                        Xtrace.Log("ASE Nor {0}: ({1}, {2}, {3})", (i * 3) + t, n.nx, n.ny, n.nz);

                        m_bHasNormals = true;

                        m_ArrayTriangulos[i].nor[t] = n;

                        t++;

                        if (t == 3)
                        {
                            i++;
                            t = 0;
                        }

                        currentLine = sr.ReadLine();
                    }
                }
            }

            ComputeIndices();
        }
Exemple #7
0
        //--------------------------------------------------------------------
        // Función:    ReadObject
        // Propósito:
        // Fecha:      miércoles, 08 de noviembre de 2006, 21:01:35
        //--------------------------------------------------------------------
        private void ReadObject(StreamReader sr)
        {
            String currentLine = sr.ReadLine();

            while (!currentLine.Contains("*MESH_NUMVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            String[] parse = currentLine.Split(' ');

            m_VerticesArrayTemp = new VerticeTemporal[Int32.Parse(parse[1])];

            Xtrace.Log("Vértices: {0}", m_VerticesArrayTemp.Length);

            while (!currentLine.Contains("*MESH_NUMFACES"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse       = currentLine.Split(' ');

            m_ArrayTriangulos = new Triangulo[Int32.Parse(parse[1])];

            Xtrace.Log("Triángulos: {0}", m_ArrayTriangulos.Length);

            while (!currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = sr.ReadLine();
            }

            int i = 0;

            while (currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = FormatString(currentLine);
                parse       = currentLine.Split(' ');
                m_VerticesArrayTemp[i].x = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].y = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].z = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("Vert {0}: ({1}, {2}, {3})", i, m_VerticesArrayTemp[i].x, m_VerticesArrayTemp[i].y,
                           m_VerticesArrayTemp[i].z);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_FACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_FACE "))
            {
                currentLine = FormatString(currentLine);
                parse       = currentLine.Split(' ');
                int a = Int32.Parse(parse[3]);
                int b = Int32.Parse(parse[5]);
                int c = Int32.Parse(parse[7]);

                m_ArrayTriangulos[i].vert1 = m_VerticesArrayTemp[a];
                m_ArrayTriangulos[i].vert2 = m_VerticesArrayTemp[b];
                m_ArrayTriangulos[i].vert3 = m_VerticesArrayTemp[c];

                Xtrace.Log("Tri {0}: ({1}, {2}, {3})", i, a, b, c);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_NUMTVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse       = currentLine.Split(' ');

            m_VerticesTexTemp = new TexturaTemporal[Int32.Parse(parse[1])];


            while (!currentLine.Contains("*MESH_TVERT "))
            {
                currentLine = sr.ReadLine();
            }


            i = 0;

            while (currentLine.Contains("*MESH_TVERT "))
            {
                currentLine            = FormatString(currentLine);
                parse                  = currentLine.Split(' ');
                m_VerticesTexTemp[i].u = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesTexTemp[i].v = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("Tex {0}: ({1}, {2})", i, m_VerticesTexTemp[i].u, m_VerticesTexTemp[i].v);
                currentLine = sr.ReadLine();
                i++;
            }


            while (!currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = FormatString(currentLine);
                parse       = currentLine.Split(' ');

                m_ArrayTriangulos[i].tex1 = m_VerticesTexTemp[Int32.Parse(parse[2])];
                m_ArrayTriangulos[i].tex2 = m_VerticesTexTemp[Int32.Parse(parse[3])];
                m_ArrayTriangulos[i].tex3 = m_VerticesTexTemp[Int32.Parse(parse[4])];
                currentLine = sr.ReadLine();
                i++;
            }

            if (this.checkBox1.Checked)
            {
                while (!currentLine.Contains("*MESH_VERTEXNORMAL "))
                {
                    currentLine = sr.ReadLine();
                }

                i = 0;
                int t = 0;

                while (currentLine.Contains("*MESH_VERTEXNORMAL ") || currentLine.Contains("*MESH_FACENORMAL "))
                {
                    if (currentLine.Contains("*MESH_FACENORMAL "))
                    {
                        currentLine = sr.ReadLine();
                        continue;
                    }

                    currentLine = FormatString(currentLine);
                    parse       = currentLine.Split(' ');

                    NormalTemporal n = new NormalTemporal();

                    n.nx = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                    n.ny = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                    n.nz = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);

                    Xtrace.Log("Nor {0}: ({1}, {2}, {3})", (i * 3) + t, n.nx, n.ny, n.nz);

                    switch (t)
                    {
                    case 0:
                    {
                        m_ArrayTriangulos[i].nor1 = n;
                        break;
                    }

                    case 1:
                    {
                        m_ArrayTriangulos[i].nor2 = n;
                        break;
                    }

                    case 2:
                    {
                        m_ArrayTriangulos[i].nor3 = n;
                        break;
                    }
                    }

                    t++;

                    if (t == 3)
                    {
                        i++;
                        t = 0;
                    }

                    currentLine = sr.ReadLine();
                }
            }
        }
Exemple #8
0
            public Triangulo(VerticeTemporal v1, VerticeTemporal v2, VerticeTemporal v3)
            {
                vert1 = v1;
                vert2 = v2;
                vert3 = v3;

                tex1 = new TexturaTemporal();
                tex2 = new TexturaTemporal();
                tex3 = new TexturaTemporal();

                nor1 = new NormalTemporal();
                nor2 = new NormalTemporal();
                nor3 = new NormalTemporal();
            }
Exemple #9
0
        //--------------------------------------------------------------------
        // Función:    ReadObject
        // Propósito:
        // Fecha:      miércoles, 08 de noviembre de 2006, 21:01:35
        //--------------------------------------------------------------------
        private void ReadObject(StreamReader sr)
        {
            String currentLine = sr.ReadLine();

            while (!currentLine.Contains("*MESH_NUMVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            String[] parse = currentLine.Split(' ');

            m_VerticesArrayTemp = new VerticeTemporal[Int32.Parse(parse[1])];

            Xtrace.Log("Vértices: {0}", m_VerticesArrayTemp.Length);

            while (!currentLine.Contains("*MESH_NUMFACES"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse = currentLine.Split(' ');

            m_ArrayTriangulos = new Triangulo[Int32.Parse(parse[1])];

            Xtrace.Log("Triángulos: {0}", m_ArrayTriangulos.Length);

            while (!currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = sr.ReadLine();
            }

            int i = 0;

            while (currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');
                m_VerticesArrayTemp[i].x = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].y = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].z = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("Vert {0}: ({1}, {2}, {3})", i, m_VerticesArrayTemp[i].x, m_VerticesArrayTemp[i].y,
                   m_VerticesArrayTemp[i].z);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_FACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_FACE "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');
                int a = Int32.Parse(parse[3]);
                int b = Int32.Parse(parse[5]);
                int c = Int32.Parse(parse[7]);

                m_ArrayTriangulos[i].vert1 = m_VerticesArrayTemp[a];
                m_ArrayTriangulos[i].vert2 = m_VerticesArrayTemp[b];
                m_ArrayTriangulos[i].vert3 = m_VerticesArrayTemp[c];

                Xtrace.Log("Tri {0}: ({1}, {2}, {3})", i, a, b, c);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_NUMTVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse = currentLine.Split(' ');

            m_VerticesTexTemp = new TexturaTemporal[Int32.Parse(parse[1])];

            while (!currentLine.Contains("*MESH_TVERT "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_TVERT "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');
                m_VerticesTexTemp[i].u = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesTexTemp[i].v = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("Tex {0}: ({1}, {2})", i, m_VerticesTexTemp[i].u, m_VerticesTexTemp[i].v);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = FormatString(currentLine);
                parse = currentLine.Split(' ');

                m_ArrayTriangulos[i].tex1 = m_VerticesTexTemp[Int32.Parse(parse[2])];
                m_ArrayTriangulos[i].tex2 = m_VerticesTexTemp[Int32.Parse(parse[3])];
                m_ArrayTriangulos[i].tex3 = m_VerticesTexTemp[Int32.Parse(parse[4])];
                currentLine = sr.ReadLine();
                i++;
            }

            if (this.checkBox1.Checked)
            {
                while (!currentLine.Contains("*MESH_VERTEXNORMAL "))
                {
                    currentLine = sr.ReadLine();
                }

                i = 0;
                int t = 0;

                while (currentLine.Contains("*MESH_VERTEXNORMAL ") || currentLine.Contains("*MESH_FACENORMAL "))
                {
                    if (currentLine.Contains("*MESH_FACENORMAL "))
                    {
                       currentLine = sr.ReadLine();
                       continue;
                    }

                    currentLine = FormatString(currentLine);
                    parse = currentLine.Split(' ');

                    NormalTemporal n = new NormalTemporal();

                    n.nx = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                    n.ny = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                    n.nz = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);

                    Xtrace.Log("Nor {0}: ({1}, {2}, {3})", (i * 3) + t, n.nx, n.ny, n.nz);

                    switch (t)
                    {
                        case 0:
                        {
                            m_ArrayTriangulos[i].nor1 = n;
                            break;
                        }
                        case 1:
                        {
                            m_ArrayTriangulos[i].nor2 = n;
                            break;
                        }
                        case 2:
                        {
                            m_ArrayTriangulos[i].nor3 = n;
                            break;
                        }
                    }

                    t++;

                    if (t == 3)
                    {
                       i++;
                       t = 0;
                    }

                    currentLine = sr.ReadLine();
                }
            }
        }
Exemple #10
0
        //--------------------------------------------------------------------
        // Función:    ReadObject
        // Propósito:
        // Fecha:      miércoles, 08 de noviembre de 2006, 21:01:35
        //--------------------------------------------------------------------
        private void ReadObject(StreamReader sr)
        {
            m_bHasNormals = false;

            m_ListaVerticesFinal.Clear();
            m_ListaIndicesFinal.Clear();


            String currentLine = sr.ReadLine();

            while (!currentLine.Contains("*MESH_NUMVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            String[] parse = currentLine.Split(' ');

            m_VerticesArrayTemp = new VerticeTemporal[Int32.Parse(parse[1])];

            Xtrace.Log("ASE Vértices: {0}", m_VerticesArrayTemp.Length);

            while (!currentLine.Contains("*MESH_NUMFACES"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse       = currentLine.Split(' ');

            m_ArrayTriangulos = new Triangulo[Int32.Parse(parse[1])];

            for (int h = 0; h < m_ArrayTriangulos.Length; h++)
            {
                m_ArrayTriangulos[h] = new Triangulo(0);
            }


            Xtrace.Log("ASE Triángulos: {0}", m_ArrayTriangulos.Length);

            while (!currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = sr.ReadLine();
            }

            int i = 0;

            while (currentLine.Contains("*MESH_VERTEX "))
            {
                currentLine = FormatString(currentLine);
                parse       = currentLine.Split(' ');
                m_VerticesArrayTemp[i].x = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].y = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                m_VerticesArrayTemp[i].z = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("ASE Vert {0}: ({1}, {2}, {3})", i, m_VerticesArrayTemp[i].x, m_VerticesArrayTemp[i].y,
                           m_VerticesArrayTemp[i].z);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_FACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_FACE "))
            {
                currentLine = FormatString(currentLine);
                parse       = currentLine.Split(' ');
                int a = Int32.Parse(parse[3]);
                int b = Int32.Parse(parse[5]);
                int c = Int32.Parse(parse[7]);

                m_ArrayTriangulos[i].vert[0] = m_VerticesArrayTemp[a];
                m_ArrayTriangulos[i].vert[1] = m_VerticesArrayTemp[b];
                m_ArrayTriangulos[i].vert[2] = m_VerticesArrayTemp[c];

                Xtrace.Log("ASE Tri {0}: ({1}, {2}, {3})", i, a, b, c);
                currentLine = sr.ReadLine();
                i++;
            }

            while (!currentLine.Contains("*MESH_NUMTVERTEX"))
            {
                currentLine = sr.ReadLine();
            }

            currentLine = FormatString(currentLine);
            parse       = currentLine.Split(' ');

            m_VerticesTexTemp = new TexturaTemporal[Int32.Parse(parse[1])];


            while (!currentLine.Contains("*MESH_TVERT "))
            {
                currentLine = sr.ReadLine();
            }


            i = 0;

            while (currentLine.Contains("*MESH_TVERT "))
            {
                currentLine            = FormatString(currentLine);
                parse                  = currentLine.Split(' ');
                m_VerticesTexTemp[i].u = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                m_VerticesTexTemp[i].v = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                Xtrace.Log("ASE Tex {0}: ({1}, {2})", i, m_VerticesTexTemp[i].u, m_VerticesTexTemp[i].v);
                currentLine = sr.ReadLine();
                i++;
            }


            while (!currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = sr.ReadLine();
            }

            i = 0;

            while (currentLine.Contains("*MESH_TFACE "))
            {
                currentLine = FormatString(currentLine);
                parse       = currentLine.Split(' ');

                m_ArrayTriangulos[i].tex[0] = m_VerticesTexTemp[Int32.Parse(parse[2])];
                m_ArrayTriangulos[i].tex[1] = m_VerticesTexTemp[Int32.Parse(parse[3])];
                m_ArrayTriangulos[i].tex[2] = m_VerticesTexTemp[Int32.Parse(parse[4])];
                currentLine = sr.ReadLine();
                i++;
            }

            //if (this.checkBoxSubdirs.Checked)
            {
                while (!currentLine.Contains("*MESH_VERTEXNORMAL "))
                {
                    currentLine = sr.ReadLine();

                    if (currentLine == null)
                    {
                        break;
                    }
                }

                if (currentLine != null)
                {
                    i = 0;
                    int t = 0;

                    while (currentLine.Contains("*MESH_VERTEXNORMAL ") || currentLine.Contains("*MESH_FACENORMAL "))
                    {
                        if (currentLine.Contains("*MESH_FACENORMAL "))
                        {
                            currentLine = sr.ReadLine();
                            continue;
                        }

                        currentLine = FormatString(currentLine);
                        parse       = currentLine.Split(' ');

                        NormalTemporal n = new NormalTemporal();

                        n.nx = float.Parse(parse[2], System.Globalization.NumberStyles.Float, ci);
                        n.ny = float.Parse(parse[3], System.Globalization.NumberStyles.Float, ci);
                        n.nz = float.Parse(parse[4], System.Globalization.NumberStyles.Float, ci);

                        Xtrace.Log("ASE Nor {0}: ({1}, {2}, {3})", (i * 3) + t, n.nx, n.ny, n.nz);

                        m_bHasNormals = true;

                        m_ArrayTriangulos[i].nor[t] = n;

                        t++;

                        if (t == 3)
                        {
                            i++;
                            t = 0;
                        }

                        currentLine = sr.ReadLine();
                    }
                }
            }

            ComputeIndices();
        }