예제 #1
0
            protected static IEnumerable <Triangle> GetTextureTriangles(Matrix4 transform, RS5Chunk BHDR, RS5Chunk VTXL, RS5Chunk TRIL, int index)
            {
                int     texofs   = index * 144;
                string  texname  = BHDR.Data.GetString(texofs, 128);
                int     firstvtx = BHDR.Data.GetInt32(texofs + 128);
                int     numvtx   = BHDR.Data.GetInt32(texofs + 136);
                int     firsttri = BHDR.Data.GetInt32(texofs + 132);
                int     numtri   = BHDR.Data.GetInt32(texofs + 140);
                Texture texture  = Texture.GetTexture(texname);

                Vertex[] vertices = Enumerable.Range(0, numvtx).Select(i => GetVertex(transform, VTXL, i + firstvtx, texture)).ToArray();
                return(Enumerable.Range(0, numtri / 3).Select(i => GetTriangle(TRIL, vertices, i * 3 + firsttri, texture)));
            }
예제 #2
0
            protected static IEnumerable <Triangle> GetTextureTriangles(Matrix4 transform, RS5Chunk BLKS, RS5Chunk VTXS, RS5Chunk INDS, int index, Joint[] joints)
            {
                int     texofs   = index * 144;
                string  texname  = BLKS.Data.GetString(texofs, 128);
                int     firstvtx = BLKS.Data.GetInt32(texofs + 128);
                int     endvtx   = BLKS.Data.GetInt32(texofs + 132);
                int     numvtx   = endvtx - firstvtx;
                int     firsttri = BLKS.Data.GetInt32(texofs + 136);
                int     endtri   = BLKS.Data.GetInt32(texofs + 140);
                int     numtri   = endtri - firsttri;
                Texture texture  = Texture.GetTexture(texname);

                Vertex[] vertices = Enumerable.Range(0, numvtx).Select(i => GetVertex(transform, VTXS, i + firstvtx, texture, joints)).ToArray();
                return(Enumerable.Range(0, numtri / 3).Select(i => GetTriangle(INDS, vertices, i * 3 + firsttri, firstvtx, texture)));
            }