Пример #1
0
        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);
        }
Пример #2
0
        public void DescendantsFromLeave()
        {
            var startNode = _tree[111112];

            var result = HierarchyWalker.Descendants(startNode, n => n.Children);

            Assert.True(!result.Any());
        }
Пример #3
0
        public void SiblingsFromRoot()
        {
            var startNode = _tree[1];

            var result = HierarchyWalker.Siblings(startNode, n => n.Parent, n => n.Children);

            Assert.True(!result.Any());
        }
Пример #4
0
        public void AncestorsFromRoot()
        {
            var startNode = _tree[1];

            var result = HierarchyWalker.Ancestors(startNode, n => n.Parent);

            Assert.True(!result.Any());
        }
Пример #5
0
        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);
        }
Пример #6
0
        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)));
        }
Пример #7
0
        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)));
        }
Пример #8
0
        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)));
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
                }
            }
        }
Пример #11
0
        public static void walkHierarchy(GameObject obj, HierarchyWalker callback)
        {
            var q = new Queue <GameObject>();

            walkHierarchy(q, callback);
        }