public bool AddConnectedInput(InputPipeNode input) { bool added = false; if (Globals.UltraDebug) { Printer.Info($"[N{ParentNetwork.ID}] Does {Print()} have a valid adjacent container? " + (ConnectedContainer != null).ToString()); } if (Globals.UltraDebug) { Printer.Info($"[N{ParentNetwork.ID}] Does {input.Print()} have a valid adjacent container? " + (input.ConnectedContainer != null).ToString()); } if (ConnectedContainer != null && input.ConnectedContainer != null) { List <PipeNode> path; path = GetPath(input); if (path.Count > 0) { added = true; ConnectedInputs.Add(input, path); var t = new Thread(() => AnimateConnection(path)); t.Start(); DataAccess.GetDataAccess().Threads.Add(t); } } return(added); }
public bool TryDisconnectInput(InputPipeNode input) { bool canDisconnect = false; if (input != null) { if (Globals.UltraDebug) { Printer.Info($"[N{ID}] Trying disconnecting {input.Print()}"); } foreach (OutputPipeNode output in Outputs) { if (output.IsInputConnected(input)) { if (Globals.UltraDebug) { Printer.Info($"[N{ID}] {input.Print()} already connected"); } if (!output.CanConnectedWith(input) || input.ConnectedContainer == null) { canDisconnect = output.RemoveConnectedInput(input); if (Globals.UltraDebug) { Printer.Info($"[N{ID}] Can disconnect with {input.Print()}? -> {canDisconnect}"); } } else { if (Globals.UltraDebug) { Printer.Info($"[N{ID}] Cannot disconnect with {input.Print()}"); } } } output.UpdateSignal(); } input.UpdateSignal(); } return(canDisconnect); }