AssetBundleGraph.AssetBundleGraphController.MarkAndTraverseParent C# (CSharp) Method

MarkAndTraverseParent() private static method

private static MarkAndTraverseParent ( SaveData saveData, NodeData current, List visitedConnections, List visitedNode ) : void
saveData SaveData
current NodeData
visitedConnections List
visitedNode List
return void
        private static void MarkAndTraverseParent(SaveData saveData, NodeData current, List<ConnectionData> visitedConnections, List<NodeData> visitedNode)
        {
            // if node is visited from other route, just quit
            if(visitedNode.Contains(current)) {
                return;
            }

            var connectionsToParents = saveData.Connections.FindAll(con => con.ToNodeId == current.Id);
            foreach(var c in connectionsToParents) {
                if(visitedConnections.Contains(c)) {
                    throw new NodeException("Looped connection detected. Please fix connections to avoid loop.", current.Id);
                }

                var parentNode = saveData.Nodes.Find(node => node.Id == c.FromNodeId);
                UnityEngine.Assertions.Assert.IsNotNull(parentNode);

                visitedConnections.Add(c);
                MarkAndTraverseParent(saveData, parentNode, visitedConnections, visitedNode);
            }

            visitedNode.Add(current);
        }