visitSceneNodes function

void visitSceneNodes(
  1. CanvasSceneDocument doc, {
  2. bool includeHidden = false,
  3. required void visit(
    1. Node node
    ),
})

Pure traversal: iterate all nodes (optionally skipping hidden subtrees).

Implementation

void visitSceneNodes(
  CanvasSceneDocument doc, {
  bool includeHidden = false,
  required void Function(Node node) visit,
}) {
  void walk(Node n, bool ancestorHidden) {
    final hidden = ancestorHidden || n.hidden;
    if (!includeHidden && hidden) return;

    visit(n);

    if (n.isGroup) {
      for (final c in n.childrenOrEmpty) {
        walk(c, hidden);
      }
    }
  }

  for (final r in doc.children) {
    walk(r, false);
  }
}