59 lines
1.1 KiB
C#
59 lines
1.1 KiB
C#
using Godot;
|
|
using System.Reflection;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System;
|
|
|
|
namespace Rokojori
|
|
{
|
|
public class AudioStreamInput : AudioStream
|
|
{
|
|
public AudioStreamInput( AudioProcessor p ):base( p, true )
|
|
{}
|
|
|
|
protected List<AudioStreamOutput> _outputs = new List<AudioStreamOutput>();
|
|
|
|
public List<AudioStreamOutput> connected => _outputs;
|
|
|
|
public void _GetConnectedFrom( AudioStreamOutput output )
|
|
{
|
|
_outputs.Add( output );
|
|
}
|
|
|
|
public void _GetDisconnectedFrom( AudioStreamOutput output )
|
|
{
|
|
_outputs.Remove( output );
|
|
}
|
|
|
|
public override void PollDependencies()
|
|
{
|
|
_outputs.ForEach(
|
|
o =>
|
|
{
|
|
o.audioProcessor.Process();
|
|
}
|
|
);
|
|
|
|
_outputs.ForEach(
|
|
o =>
|
|
{
|
|
var buffer = o.GetOutputStreamBuffer();
|
|
|
|
for ( int i = 0; i < bufferSize; i++ )
|
|
{
|
|
_buffer[ i ] += buffer[ i ];
|
|
}
|
|
}
|
|
);
|
|
|
|
}
|
|
|
|
public float this[ int index ]
|
|
{
|
|
get { return _buffer[ index ]; }
|
|
}
|
|
|
|
}
|
|
|
|
|
|
} |