Exemplo n.º 1
0
        public void Write(Stream stream)
        {
            var bldr = new BFastBuilder();

            // Add buffer
            bldr.Add(BufferNames.Header, Header.ToString().ToBytesUtf8().ToBuffer());

            // add String table
            var stringLookup = ComputeStringLookup();

            bldr.Add(BufferNames.Strings, ComputeStrings(stringLookup).PackStrings().ToBuffer());

            // Add Assets
            bldr.Add(BufferNames.Assets, Assets.Select(kv => kv.Value.ToNamedBuffer(kv.Key)));

            // Add entity tables
            var entityTables = ComputeEntityTables(stringLookup);

            bldr.Add(BufferNames.Entities, entityTables.ToBFastBuilder());

            // Write the geometry
            bldr.Add(BufferNames.Geometry, new BigG3dWriter(Geometries, null, UseColors));

            // Add the nodes
            bldr.Add(BufferNames.Nodes, Nodes.ToArray().ToBuffer());

            // Now we can write everything out
            bldr.Write(stream);
        }
Exemplo n.º 2
0
        public static void Serialize(this SerializableDocument doc, Stream stream)
        {
            var bldr         = new BFastBuilder();
            var headerBuffer = doc.Header.ToString().ToBytesUtf8();

            bldr.Add(BufferNames.Header, headerBuffer.ToBuffer());
            bldr.Add(BufferNames.Assets, doc.Assets);
            bldr.Add(BufferNames.Entities, doc.EntityTables.ToBFastBuilder());
            bldr.Add(BufferNames.Strings, doc.StringTable.PackStrings().ToBuffer());
            bldr.Add(BufferNames.Geometry, doc.Geometry.ToG3DWriter());
            bldr.Add(BufferNames.Nodes, doc.Nodes.ToBuffer());
            bldr.Write(stream);
        }