コード例 #1
0
 public void Disconnect(InputPort inp)
 {
     if (inp.Connection != null)
     {
         inp.Connection.Connections.Remove(inp);
         inp.Connection = null;
         Disconnected?.Invoke(this, inp);
     }
 }
コード例 #2
0
 protected override void OnNewConnection(InputPort target)
 {
     if (target is FFTInputPort)
     {
         ((FFTInputPort)target).Samplerate = _samplerate;
     }
     else
     {
         throw new InvalidCastException();
     }
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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
            });
        }
コード例 #6
0
 protected virtual void OnNewConnection(InputPort target)
 {
     //
 }
コード例 #7
0
 protected virtual void OnRemoveConnection(InputPort target)
 {
     //
 }
コード例 #8
0
 protected virtual void InputConnectionChanged(InputPort input, OutputPort newTarget)
 {
 }
コード例 #9
0
 protected virtual void FFTSizeChanged(InputPort e)
 {
 }
コード例 #10
0
 protected virtual void InputSamplerateChanged(InputPort e)
 {
 }