GraphViewの資料が少ない(QiitaでもGraphViewタグの記事が4つしかない)ので些細な事でもメモしておきます。
全てのノードを消す方法がないかな?と探したところ、
GraphView.cs内のCollectDeletableGraphElements()がちょうど良い感じだったので、移植&一部修正して実装。
MyGraphView.csの一部
///全てのDeletableなElementを消すボタン押下コールバック
private void OnClickDeleteAllDeletableElements()
{
var elements = new HashSet<GraphElement>();
static bool DeletablePredicate(GraphElement e) => (e.capabilities & Capabilities.Deletable) == Capabilities.Deletable;
CollectElements(graphElements, elements, DeletablePredicate);
foreach (var graphElement in elements)
{
RemoveElement(graphElement);
}
}
まとめてRootNode(非deletable)以外を消したいときに使えそうです。