private void ReadNode(NodeInfo defn, Node node, BinaryReader attributeReader)
{
node.Name = Names[defn.NameIndex][defn.NameOffset];
#if DEBUG_LSF_SERIALIZATION
Console.WriteLine(String.Format("Begin node {0}", node.Name));
#endif
if (defn.FirstAttributeIndex != -1)
{
var attribute = Attributes[defn.FirstAttributeIndex];
while (true)
{
Values.Position = attribute.DataOffset;
var value = ReadAttribute((NodeAttribute.DataType)attribute.TypeId, attributeReader, attribute.Length);
node.Attributes[Names[attribute.NameIndex][attribute.NameOffset]] = value;
#if DEBUG_LSF_SERIALIZATION
Console.WriteLine(String.Format(" {0:X}: {1} ({2})", attribute.DataOffset, Names[attribute.NameIndex][attribute.NameOffset], value));
#endif
if (attribute.NextAttributeIndex == -1)
{
break;
}
else
{
attribute = Attributes[attribute.NextAttributeIndex];
}
}
}
}