public void PretendWireMoved() { SourceTerminal.Wiggle(); SinkTerminal.Wiggle(); OnModelPropertyChanged(nameof(X1)); OnModelPropertyChanged(nameof(Y1)); OnModelPropertyChanged(nameof(X2)); OnModelPropertyChanged(nameof(Y2)); }
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; }
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; }