using Godot; using System.Collections.Generic; namespace Rokojori { public interface RDGraphTextureSlotInput { public RDTexture GetTexture(); public RGGraphProcessor GetProcessor(); public void SetConnected( CompositorEffectGraphTextureSlot slot ); public void ConnectTo( CompositorEffectGraphTextureSlot slot ); } public class CompositorEffectGraphTextureSlot:RDGraphConnection, RDGraphTextureSlotInput { protected RDGraphTextureSlotInput _input; public RDGraphTextureSlotInput input => _input; public RDSampler sampler; RDTexture _texture; public RDTexture GetTexture() { return _texture; } public RDTexture ResolveTexture() { return _texture = _input.GetTexture(); } public RGGraphProcessor GetProcessor() { return _processor; } List _connectedSlots = new List(); public void SetConnected( CompositorEffectGraphTextureSlot slot ) { _connectedSlots.Add( slot ); } public CompositorEffectGraphTextureSlot( RGGraphProcessor processor ):base( processor ) { } public void SetInput( RDGraphTextureSlotInput input ) { _input = input; input.SetConnected( this ); } public void ConnectTo( CompositorEffectGraphTextureSlot slot ) { slot.SetInput( this ); } } }