sortDependencies method

void sortDependencies()

Sort the DAG for resolution in order of dependencies such that dependent components process after their dependencies.

Implementation

void sortDependencies() {
  var optimistic = DependencyGraphNodeSorter<Component>();
  var order = optimistic.sort(this);
  if (order.isEmpty) {
    // cycle detected, use a more robust solver
    var robust = TarjansDependencyGraphNodeSorter<Component>();
    order = robust.sort(this);
  }

  _dependencyOrder = order;
  for (final component in _dependencyOrder) {
    component.graphOrder = graphOrder++;
    // component.dirt = 255;
  }

  dirt |= ComponentDirt.components;
}