private static OMD ReadOMDData(InputStream ins) { OMD omd = new OMD { meshes = new List <OMDMesh>(), header = new OMDHeader(ins) }; // // Read OMD StructA // if (omd.header.offStructA == 0) { Console.WriteLine("StructA not present"); } else { Console.WriteLine("StructA is present"); } // // Read OMD Meshes // for (uint i = 0; i < omd.header.numMesh; ++i) { OMDMesh mesh = new OMDMesh(ins); ins.Jump(mesh.offTristrip); for (uint j = 0; j < mesh.numTristrip; ++j) { OMDTristrip tristrip = new OMDTristrip(ins); for (uint k = 0; k < tristrip.numVertex; ++k) { tristrip.vertices.Add(new OMDVertex(ins)); } ins.ReadBytes(0x10); mesh.tristrip.Add(tristrip); } ins.Return(); omd.meshes.Add(mesh); if (mesh.unknown0x2c != 0) { Console.WriteLine("OMDMesh::unknown0x2c isn't always 0"); } } return(omd); }
public static OMD FromFile(string path) { //Open Stream InputStream bin = new InputStream(path); //Create OMD OMD omd = new OMD(); //Read OMD Header omd.header = new Header(bin); //Read OMD Meshes omd.meshes = new List <Mesh>(omd.header.numMesh); for (uint i = 0; i < omd.header.numMesh; ++i) { omd.meshes.Add(new Mesh(bin)); } return(omd); }