Example #1
0
        protected override Node GetNextNode(WorkingSet workingSet)
        {
            var edges = workingSet.CurrentWalk.Cast <Edge>().ToList();

            if (_isExploding)
            {
                var nodes        = workingSet.NodesNotInGraph.ToList();
                var insideNodes  = NodeFinder.GetInsideNodes(edges, nodes);
                var outsideNodes = workingSet.NodesNotInGraph.Except(insideNodes).ToList();
                _isExploding = outsideNodes.Any();

                if (_isExploding)
                {
                    return(NodeFinder.FurthestNearestEdge(edges, outsideNodes).Node);
                }
            }
            return(GetNextInnerNode(workingSet));
        }