public bool FindChainTo(NodeModel n, List <int> find, HashSet <int> traversed = null)
{
if (traversed == null)
{
traversed = new HashSet <int>();
}
if (traversed.Contains(n.ID))
{
return(false);
}
traversed.Add(n.ID);
bool pathFound = false;
if (n.XNode.Dependencies == null)
{
return(false);
}
foreach (var d in n.XNode.Dependencies)
{
var sub = Model.NodeModels[d];
bool addLink = false;
if (find.Contains(d))
{
addLink = true;
find.Remove(d);
}
if (find.Count > 0 && FindChainTo(sub, find, traversed))
{
addLink = true;
}
if (addLink)
{
PositionMap[sub.ID] = sub;
n.AddIntermediateDependency(sub);
pathFound = true;
}
}
return(pathFound);
}