public void Disconnect(InputPort inp) { if (inp.Connection != null) { inp.Connection.Connections.Remove(inp); inp.Connection = null; Disconnected?.Invoke(this, inp); } }
protected override void OnNewConnection(InputPort target) { if (target is FFTInputPort) { ((FFTInputPort)target).Samplerate = _samplerate; } else { throw new InvalidCastException(); } }
public void Connect(OutputPort outp, InputPort inp) { if (outp.DataType != inp.DataType) { throw new InvalidOperationException("Port data types do not match"); } Disconnect(inp); inp.Connection = outp; outp.Connections.Add(inp); Connected?.Invoke(this, inp); }
public void TriggerProcessing(InputPort p) { switch (p.DataType) { case PortDataType.Array: DataProcessor((DataInputPort)p); break; case PortDataType.FFT: DataFftProcessor((FFTInputPort)p); break; case PortDataType.Value: ValueAvailable((ValueInputPort)p); break; } }
public void AddInput(InputPort port, int index = -1) { if (InputPorts.Any(i => i.Name == port.Name)) { throw new ArgumentException("Name of port ambiguous"); } port.InputConnectionChanged += Input_InputConnectionChanged; // TODO: cleanup? Cause scheduler does DataAvailable and ValueAvailable now switch (port.DataType) { case PortDataType.Array: ((DataInputPort)port).DataAvailable += Input_DataAvailable; ((DataInputPort)port).SamplerateChanged += Input_SamplerateChanged; break; case PortDataType.FFT: ((FFTInputPort)port).DataAvailable += Input_DataAvailable; ((FFTInputPort)port).SamplerateChanged += Input_SamplerateChanged; ((FFTInputPort)port).FFTSizeChanged += Input_FFTSizeChanged; break; case PortDataType.Value: ((ValueInputPort)port).ValueAvailable += Node_ValueAvailable; _valueInputs.Add((ValueInputPort)port); break; } port.Parent = this; if (index > -1) { _inputs.Insert(index, port); } else { _inputs.Add(port); } PortAdded?.Invoke(this, new PortChangedEventArgs { Port = port, Index = index }); }
protected virtual void OnNewConnection(InputPort target) { // }
protected virtual void OnRemoveConnection(InputPort target) { // }
protected virtual void InputConnectionChanged(InputPort input, OutputPort newTarget) { }
protected virtual void FFTSizeChanged(InputPort e) { }
protected virtual void InputSamplerateChanged(InputPort e) { }