Beispiel #1
0
 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);
     }
 }
Beispiel #3
0
 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();
 }
Beispiel #4
0
 public CalculateContext Calculate(NodeCoroutine nodeCoroutine)
 {
   var context = new CalculateContext(nodeCoroutine, null, this);
   CalculateInternal(nodeCoroutine, context);
   return context;
 }