private void WriteRegions(Resource rsrc)
{
writer.Write((UInt32)rsrc.Regions.Count);
var regionMapOffset = stream.Position;
foreach (var rgn in rsrc.Regions)
{
writer.Write(staticStrings[rgn.Key]);
writer.Write((UInt32)0); // Offset of region, will be updater after we finished serializing
}
List<UInt32> regionPositions = new List<UInt32>();
foreach (var rgn in rsrc.Regions)
{
regionPositions.Add((UInt32)stream.Position);
WriteNode(rgn.Value);
}
var endOffset = stream.Position;
stream.Seek(regionMapOffset, SeekOrigin.Begin);
foreach (var position in regionPositions)
{
stream.Seek(4, SeekOrigin.Current);
writer.Write(position);
}
stream.Seek(endOffset, SeekOrigin.Begin);
}