Пример #1
0
        public void WriteToFile(NavigationWriter writer)
        {
            writer.Write(unk0);
            writer.Write(fileIDHPD);
            writer.Write(unk3HPD);
            writer.Write(bitFlagsHPD);
            writer.Write(vertSize);
            writer.Write(triSize);

            for (int i = 0; i < vertices.Length; i++)
            {
                var vertex = vertices[i];
                writer.Write(vertex.Unk7); // | 0x80000000

                Vector3 pos = vertex.Position;
                float   z   = pos.Z; // TODO: Construct KynogonUtils to accomodate this
                pos.Z = -pos.Y;
                pos.Y = z;
                Vector3Utils.WriteToFile(pos, writer); // NB: DO NOT SET vertex.Position as pos!!
                writer.Write(vertex.Unk0);
                writer.Write(vertex.Unk1);
                writer.Write(vertex.Unk2);
                writer.Write(vertex.Unk3);
                writer.Write(vertex.Unk4);
                writer.Write(vertex.Unk5);
                writer.Write(vertex.Unk6);
            }

            for (int i = 0; i < connections.Length; i++)
            {
                var connection = connections[i];
                writer.Write(connection.Flags | 0x80000000);
                writer.Write(connection.NodeID);
                writer.Write(connection.ConnectedNodeID);
            }

            runtimeMesh.WriteToFile(writer);

            writer.Write(Footer);

            // write footer

            /* if (!runtimeMesh.bDEBUG_HASEXTRADATA)
             * {
             *   writer.Write(Padding);
             *   StringHelpers.WriteString(writer, Name);
             *   writer.Write(Name.Length + 1); // extra 1 is the padding
             *   writer.Write(303296513);
             * }*/
        }
Пример #2
0
        public void WriteToFile(BinaryWriter writer)
        {
            writer.Write(unk0);
            writer.Write(fileIDHPD);
            writer.Write(unk3HPD);
            writer.Write(bitFlagsHPD);
            writer.Write(vertSize);
            writer.Write(triSize);

            for (int i = 0; i < vertices.Length; i++)
            {
                var vertex = vertices[i];
                writer.Write(vertex.Unk7);

                Vector3 pos = vertex.Position;
                float   z   = pos.Z;
                pos.Z           = -pos.Y;
                pos.Y           = z;
                vertex.Position = pos;
                Vector3Extenders.WriteToFile(vertex.Position, writer);
                writer.Write(vertex.Unk0);
                writer.Write(vertex.Unk1);
                writer.Write(vertex.Unk2);
                writer.Write(vertex.Unk3);
                writer.Write(vertex.Unk4);
                writer.Write(vertex.Unk5);
                writer.Write(vertex.Unk6);
            }

            for (int i = 0; i < connections.Length; i++)
            {
                var connection = connections[i];
                writer.Write(connection.Flags);
                writer.Write(connection.NodeID);
                writer.Write(connection.ConnectedNodeID);
            }

            runtimeMesh.WriteToFile(writer);
        }