private void WriteNodeAttributesV3(Node node)
{
UInt32 lastOffset = (UInt32)ValueStream.Position;
int numWritten = 0;
foreach (KeyValuePair<string, NodeAttribute> entry in node.Attributes)
{
WriteAttributeValue(ValueWriter, entry.Value);
numWritten++;
var attributeInfo = new AttributeEntryV3();
var length = (UInt32)ValueStream.Position - lastOffset;
attributeInfo.TypeAndLength = (UInt32)entry.Value.Type | (length << 6);
attributeInfo.NameHashTableIndex = AddStaticString(entry.Key);
if (numWritten == node.Attributes.Count)
{
attributeInfo.NextAttributeIndex = -1;
}
else
{
attributeInfo.NextAttributeIndex = NextAttributeIndex + 1;
}
attributeInfo.Offset = (UInt32)ValueStream.Position;
BinUtils.WriteStruct<AttributeEntryV3>(AttributeWriter, ref attributeInfo);
NextAttributeIndex++;
lastOffset = (UInt32)ValueStream.Position;
}
}