private static void Unattach(this TreeHierarchyNodeAsset self, TreeHierarchyNodeAsset child) { Debug.Assert(self._children.Contains(child)); self._children.Remove(child); child._isFloating = true; child._tree._floaters.Add(child); }
public static void DeleteHierarchy(this TreeHierarchyNodeAsset self) { if (self._parent != null) { self.UnattachFromParent(); } foreach (var node in self.Postorder()) { GameObject.DestroyImmediate(self, true); } }
public static void ChangeParentTo(this TreeHierarchyNodeAsset child, TreeHierarchyNodeAsset newParent) { Debug.Assert(newParent._tree == child._tree); if (child._parent != null) { child._parent.Unattach(child); } child._parent = newParent; newParent._children.Add(child); child._isFloating = false; child._tree._floaters.Remove(child); }
public static void ChangeParentTo(this TreeHierarchyNodeAsset child, TreeHierarchyNodeAsset newParent, int index) { Debug.Assert(newParent._tree == child._tree); if (child._parent == newParent && index > newParent._children.IndexOf(child)) { index--; } if (child._parent != null) { child._parent.Unattach(child); } child._parent = newParent; newParent._children.Insert(index, child); child._isFloating = false; child._tree._floaters.Remove(child); }
public static void UnattachFromParent(this TreeHierarchyNodeAsset child) { child._parent.Unattach(child); }
public static void ChangeParentTo(this TreeHierarchyNodeAsset child, TreeHierarchyNodeAsset newParent) { ChangeParentTo(child, newParent, newParent._children.Count); }