예제 #1
0
        public WireModel(TerminalModel startTerminal, TerminalModel endTerminal)
        {
            if (startTerminal.Kind == endTerminal.Kind)
            {
                throw new ArgumentException("Wires require one input terminal and one output terminal");
            }

            SinkTerminal   = startTerminal.Kind == TerminalKind.Input ? startTerminal : endTerminal;
            SourceTerminal = startTerminal.Kind == TerminalKind.Output ? startTerminal : endTerminal;
            SourceTerminal.ConnectWire(this);
            SinkTerminal.ConnectWire(this);

            SetupTerminalPropertyChangeNotifications();
            UserWiredFromInput = startTerminal == SourceTerminal;
            SinkTerminal.Data  = SourceTerminal.Data;
        }
예제 #2
0
        public Wire(TerminalModel terminal1, TerminalModel terminal2)
        {
            IsActive       = true;
            SinkTerminal   = terminal1.Kind == TerminalKind.Input ? terminal1 : terminal2;
            SourceTerminal = terminal1.Kind == TerminalKind.Output ? terminal1 : terminal2;;

            if (!SourceTerminal.Type.IsSubclassOf(SinkTerminal.Type) && SourceTerminal.Type != SinkTerminal.Type)
            {
                return;
            }

            SourceTerminal.DisconnectWire();
            SinkTerminal.DisconnectWire();

            SourceTerminal.ConnectedWire = this;
            SinkTerminal.ConnectedWire   = this;
        }