/// <summary> /// Resolves given node, resolving it all dependencies recursively. /// </summary> /// <param name="node"></param> private void Resolve(NodeVisual node) { var icontext = (node.GetNodeContext() as DynamicNodeContext); foreach (var input in node.GetInputs()) { var connection = GetConnection(node.GUID + input.Name); //graph.Connections.FirstOrDefault(x => x.InputNode == node && x.InputSocketName == input.Name); if (connection != null) { Resolve(connection.OutputNode); if (!connection.OutputNode.Callable) { connection.OutputNode.Execute(Context); } var ocontext = (connection.OutputNode.GetNodeContext() as DynamicNodeContext); icontext[connection.InputSocketName] = ocontext[connection.OutputSocketName]; } } }
private void ExecuteResolvingInternal(NodeVisual node) { var icontext = (node.GetNodeContext() as DynamicNodeContext); foreach (var input in node.GetInputs()) { var connection = graph.Connections.FirstOrDefault(x => x.InputNode == node && x.InputSocketName == input.Name); if (connection != null) { Resolve(connection.OutputNode); connection.OutputNode.Execute(Context); ExecuteResolvingInternal(connection.OutputNode); var ocontext = (connection.OutputNode.GetNodeContext() as DynamicNodeContext); icontext[connection.InputSocketName] = ocontext[connection.OutputSocketName]; } } }