Add remaining tanks

This commit is contained in:
2026-07-13 17:11:21 +02:00
parent 011f90233c
commit 74ec9527da
13 changed files with 378 additions and 110 deletions
+25 -3
View File
@@ -22,6 +22,18 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
return p;
}
public Pipe CreateTwoWayPipe(INode n1, INode n2, bool verticalFirst = false) {
Nodes.Add(n1);
Nodes.Add(n2);
var p = new Pipe(n1, n2, verticalFirst, twoWay: true);
n1.Inputs.Add(p);
n1.Outputs.Add(p);
n2.Inputs.Add(p);
n2.Outputs.Add(p);
Edges.Add(p);
return p;
}
public Inlet CreateInlet(INode start, ISink end) {
Nodes.Add(start);
Nodes.Add(end);
@@ -32,16 +44,26 @@ namespace PamhagenSysCtrl.Helpers.Pipeline {
return p;
}
public Outlet CreateOutlet(ISource start, INode end) {
Nodes.Add(start);
Nodes.Add(end);
var p = new Outlet(start, end);
start.Outputs.Add(p);
end.Inputs.Add(p);
Edges.Add(p);
return p;
}
public Path? GetPath(INode start, INode end, Func<INode, bool>? valid = null) {
if (!Nodes.Contains(start) || !Nodes.Contains(end)) throw new ArgumentException("Start/end node not contained in graph");
valid ??= a => true;
List<(IEdge, INode)> hops = [];
Path? path = null;
foreach (var o in start.Outputs) {
if (!valid(o.End)) {
continue;
} else if (o.End == end) {
if (o.End == end) {
return new(start, [(o, o.End)]);
} else if (!valid(o.End)) {
continue;
}
var p = GetPath(o.End, end, valid);