Code/UI/Spatial/GraphExecutor.cs
namespace Nodebox.UI.Spatial;

[Title("Nodebox Spatial Graph Executor")]
[Category("Nodebox")]
public class GraphExecutor : Component {
    [RequireComponent] public Graph Graph { get; set; }

    private ExecutionContext _executionContext;

    [JsonIgnore]
    public ExecutionContext ExecutionContext => _executionContext;

    public GraphExecutor() {
        _executionContext = new();
    }

    protected override void OnFixedUpdate() {
        ExecutionContext.Graph = Graph.Inner;

        if (!ExecutionContext.Graph.IsValid()) { return; }
        var result = ExecutionContext.Evaluate();

        foreach (var exception in result.Exceptions) {
            Log.Warning(exception);
        }
    }
}