Esempio n. 1
0
        public void read(Reader reader)
        {
            if (!reader.readBytes(4).SequenceEqual(signature))
            {
                reader.Close();
                throw new Exception("Invalid Model v4 signature");
            }

            ushort vertCount = reader.ReadUInt16();

            textureUVs.Clear();
            for (int t = 0; t < vertCount; t++)
            {
                TextureUV uv = new TextureUV();
                uv.u = reader.ReadSingle();
                uv.v = reader.ReadSingle();
                textureUVs.Add(uv);
            }

            int indexCount = reader.ReadUInt16() * 3;

            indices.Clear();
            for (int i = 0; i < indexCount; ++i)
            {
                indices.Add(reader.ReadUInt16());
            }

            ushort frameCount = reader.ReadUInt16();

            frames.Clear();
            for (int f = 0; f < frameCount; ++f)
            {
                Frame frame = new Frame();
                for (int v = 0; v < vertCount; ++v)
                {
                    Vertex vert = new Vertex();
                    vert.x = reader.ReadSingle();
                    vert.y = reader.ReadSingle();
                    vert.z = reader.ReadSingle();

                    vert.nx = reader.ReadSingle();
                    vert.ny = reader.ReadSingle();
                    vert.nz = reader.ReadSingle();
                    frame.vertices.Add(vert);
                }
                frames.Add(frame);
            }

            reader.Close();
        }