Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }