public override void LoadFromNode(ConfigNode node)
{
var nodes = node.GetNodes(ConfigName);
if (nodes.Length == 0) return;
CreateListIfNecessary();
bool createNewItems = false;
if (Count != nodes.Length)
{
ClearList();
createNewItems = true;
}
for (int i = 0; i < nodes.Length; i++)
{
IConfigNode obj = null;
if (!createNewItems)
obj = (IConfigNode)List[i];
CFGUtil.AssignConfigObject(this, nodes[i], ref obj);
if (createNewItems)
List.Add(obj);
else
List[i] = obj; // This may be self-assignment under certain circumstances
}
}