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))); }
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))); }