using System;
using NodePipeline.Abstractions.Models;
namespace NodePipeline.Abstractions.Interfaces.Nodes;
///
/// For implementation use
///
public interface INodeField
{
///
/// Node field name
///
string Name { get; }
///
/// Description
///
string? Description { get; }
///
/// Node field code (with node id)
///
string Code { get; }
///
/// Node field value
///
T Value { get; set; }
///
/// Node field direction
///
/// Port directions: Input, Output
///
/// Parameter: Parameter
///
///
FieldDirection Direction { get; }
///
/// Method for connect two nodes directly
///
/// output port Disallows null
void BindStatic(INodeField outputPort);
///
/// Method for runtime binding
///
/// getter function – connection between two nodes Disallows null
/// setter action Allows null
void BindRuntime(Func getter, Action setter);
}
public enum FieldDirection
{
///
/// Node field is port with direction INPUT
///
Input,
///
/// Node field is port with direction OUTPUT
///
Output,
///
/// Node field is PARAMETER
///
Parameter
}