Пример #1
0
        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);
        }
Пример #2
0
        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);
        }