private void CalculateInternal(NodeCoroutine nodeCoroutine, CalculateContext context) { context.Process(); foreach (var socketIn in InSockets) { if (socketIn.Connected) { socketIn.Connection.Out.Owner.CalculateInternal(nodeCoroutine, new CalculateContext(nodeCoroutine, context, socketIn.Connection.Out.Owner)); } } }
public CalculateContext(NodeCoroutine coroutine, CalculateContext parent, Node node) { _children = new List <CalculateContext>(); _coroutine = coroutine; _parent = parent; _node = node; if (_parent != null) { _parent._children.Add(this); } }
public NodeContext(NodeCoroutine nodeCoroutine, NodeProvider provider, ExternalDataProvider externalDataProvider, GraphData data) { _nodeCoroutine = nodeCoroutine; _provider = provider; _externalDataProvider = externalDataProvider; _nodes = new Dictionary <Guid, Node>(); _sockets = new Dictionary <Guid, Socket>(); _connections = new Dictionary <Guid, Connection>(); _nodeFactory = new NodeFactory(_externalDataProvider); _history = new ActionsHistory(); _graphData = data ?? new GraphData { Connections = new ConnectionData[0], Nodes = new NodeData[0] }; ParseGraph(); }
public CalculateContext Calculate(NodeCoroutine nodeCoroutine) { var context = new CalculateContext(nodeCoroutine, null, this); CalculateInternal(nodeCoroutine, context); return context; }