public static void DeleteNodeAndChildren(this TreeNodeAsset self) { //self.UnattachFromParent(); var removedContent = self.Preorder(); self._hierarchy.DeleteHierarchy(); foreach (var node in removedContent) { } }
private static RTN CreateNodeRecursively(RT tree, TreeNodeAsset nodeAsset, int height, ref int nextNodeId, out CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy myData) { var childrenList = new List <RTN>(); myData = new CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy(); var me = new RTN(); myData.Depth = height; myData.NodeId = nextNodeId; myData.Asset = (TNA)nodeAsset; myData.SibilingIndex = 0; myData.SubtreeDepth = myData.Depth; myData.Tree = tree; nextNodeId++; RTN prev = null; CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy prevHierarchy = null; int index = 0; foreach (var child in nodeAsset._hierarchy.Children) { CachedTreeNode <RT, TA, TNA, RTN> .NodeHierarchy childHierarchy; RTN node = CreateNodeRecursively(tree, child._content, height + 1, ref nextNodeId, out childHierarchy); childHierarchy.Parent = me; childHierarchy.Left = prev; childHierarchy.SibilingIndex = index; childrenList.Add(node); myData.SubtreeDepth = Math.Max(myData.SubtreeDepth, childHierarchy.SubtreeDepth); if (prev != null) { prevHierarchy.Right = node; prev.InitializeHierarchy(prevHierarchy); } prev = node; prevHierarchy = childHierarchy; index++; } if (prev != null) { prev.InitializeHierarchy(prevHierarchy); } myData.Children = childrenList.AsReadOnly(); return(me); }
public static void UnattachFromParent(this TreeNodeAsset node) { node._hierarchy.UnattachFromParent(); }
public static void ChangeParentTo(this TreeNodeAsset node, TreeNodeAsset newParent, int index) { node._hierarchy.ChangeParentTo(newParent._hierarchy, index); }