private WzVirtualNode RebuildWzFile(Wz_File wzFile) { //分组 List <Wz_File> subFiles = new List <Wz_File>(); WzVirtualNode topNode = new WzVirtualNode(wzFile.Node); foreach (var childNode in wzFile.Node.Nodes) { var subFile = childNode.GetValue <Wz_File>(); if (subFile != null) //wz子文件 { subFiles.Add(subFile); } else //其他 { topNode.AddChild(childNode, true); } } if (wzFile.Type == Wz_Type.Base) { foreach (var grp in subFiles.GroupBy(f => f.Type)) { WzVirtualNode fileNode = new WzVirtualNode(); fileNode.Name = grp.Key.ToString(); foreach (var file in grp) { fileNode.Combine(file.Node); } topNode.AddChild(fileNode); } } return(topNode); }
public void AddChild(Wz_Node wzNode, bool addAllChildren) { var childNode = new WzVirtualNode(wzNode); this.AddChild(childNode); if (addAllChildren && wzNode.Nodes.Count > 0) { foreach (var node in wzNode.Nodes) { childNode.AddChild(node, addAllChildren); } } }