public void SiblingsAndSelfFromRoot() { var startNode = _tree[1]; var result = HierarchyWalker.SiblingsAndSelf(startNode, n => n.Parent, n => n.Children).SingleOrDefault(); Assert.True(result != null); Assert.True(result.NodeId == 1); }
public void DescendantsFromLeave() { var startNode = _tree[111112]; var result = HierarchyWalker.Descendants(startNode, n => n.Children); Assert.True(!result.Any()); }
public void SiblingsFromRoot() { var startNode = _tree[1]; var result = HierarchyWalker.Siblings(startNode, n => n.Parent, n => n.Children); Assert.True(!result.Any()); }
public void AncestorsFromRoot() { var startNode = _tree[1]; var result = HierarchyWalker.Ancestors(startNode, n => n.Parent); Assert.True(!result.Any()); }
public void DescendantsAndSelfFromLeave() { var startNode = _tree[111112]; var result = HierarchyWalker.DescendantsAndSelf(startNode, n => n.Children).SingleOrDefault(); Assert.True(result != null); Assert.True(result.NodeId == 111112); }
public void SiblingsAndSelf() { var startNode = _tree[1213]; var expectedNodes = new[] { 1211, 1212, 1213, 1214, 1215 }; var result = HierarchyWalker.SiblingsAndSelf(startNode, n => n.Parent, n => n.Children); var resultNodes = result.Select(n => n.NodeId).ToList(); Assert.True(expectedNodes.Length == resultNodes.Count); Assert.True(expectedNodes.All(node => resultNodes.Contains(node))); }
public void DescendantsAndSelf() { var startNode = _tree[1111]; var expectedNodes = new[] { 1111, 11111, 11112, 11113, 111111, 111112 }; var result = HierarchyWalker.DescendantsAndSelf(startNode, n => n.Children); var resultNodes = result.Select(n => n.NodeId).ToList(); Assert.True(expectedNodes.Length == resultNodes.Count); Assert.True(expectedNodes.All(node => resultNodes.Contains(node))); }
public void AncestorsAndSelf() { var startNode = _tree[1111]; var expectedNodes = new[] { 1111, 111, 11, 1 }; var result = HierarchyWalker.AncestorsAndSelf(startNode, n => n.Parent); var resultNodes = result.Select(n => n.NodeId).ToList(); Assert.True(expectedNodes.Length == resultNodes.Count); Assert.True(expectedNodes.All(node => resultNodes.Contains(node))); }
public static void walkHierarchy(GameObject[] objs, HierarchyWalker callback) { var q = new Queue <GameObject>(); if (objs != null) { foreach (var cur in objs) { q.Enqueue(cur); } } walkHierarchy(q, callback); }
public static void walkHierarchy(Queue <GameObject> objects, HierarchyWalker callback) { if (objects == null) { throw new System.ArgumentNullException("objects"); } if (callback == null) { throw new System.ArgumentNullException("callback"); } while (objects.Count > 0) { var curObject = objects.Dequeue(); if (!curObject) { continue; } if (!callback(curObject)) { continue; } foreach (Transform curChild in curObject.transform) { if (!curChild) { continue; } if (!curChild.gameObject) { continue; } objects.Enqueue(curChild.gameObject); } } }
public static void walkHierarchy(GameObject obj, HierarchyWalker callback) { var q = new Queue <GameObject>(); walkHierarchy(q, callback); }