public Merger InsertMergerAfter() { Merger merger = new Merger(Context, Outputs[0], this); merger.AddInputSafe(this, Outputs[0]); return(merger); }
public void AddInputSafe(Output node) { if (Inputs.Count < Context.MergerInputs) { node.Inputs[0].ReassignOutput(node, this); Inputs.Add(node.Inputs[0]); } else { int lowestDepth = int.MaxValue; Merger bestMerger = null; foreach (Node input in Inputs) { if (input is Merger merger) { int i = merger.AddInputSafeDepth(); if (i < lowestDepth) { lowestDepth = i; bestMerger = merger; } } } if (bestMerger == null) { Node temp = Inputs[Context.MergerInputs - 1]; Merger merger = new Merger(Context, this, temp); merger.AddInputSafe(temp, this); merger.AddInputSafe(node); } else { bestMerger.AddInputSafe(node); } } }