| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 
							- using System.Collections;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- using GraphProcessor;
 
- using System.Linq;
 
- using NodeGraphProcessor.Examples;
 
- [System.Serializable, NodeMenuItem("Conditional/ForLoop")]
 
- public class ForLoopNode : ConditionalNode
 
- {
 
- 	[Output(name = "Loop Body")]
 
- 	public ConditionalLink		loopBody;
 
- 	
 
- 	[Output(name = "Loop Completed")]
 
- 	public ConditionalLink		loopCompleted;
 
- 	public int					start = 0;
 
- 	public int					end = 10;
 
- 	[Output]
 
- 	public int					index;
 
- 	public override string		name => "ForLoop";
 
- 	protected override void Process() => index++; // Implement all logic that affects the loop inner fields
 
- 	public override IEnumerable< ConditionalNode >	GetExecutedNodes() => throw new System.Exception("Do not use GetExecutedNoes in for loop to get it's dependencies");
 
- 	public IEnumerable< ConditionalNode >	GetExecutedNodesLoopBody()
 
- 	{
 
- 		// Return all the nodes connected to the executes port
 
- 		return outputPorts.FirstOrDefault(n => n.fieldName == nameof(loopBody))
 
- 			.GetEdges().Select(e => e.inputNode as ConditionalNode);
 
- 	}
 
- 	public IEnumerable< ConditionalNode >	GetExecutedNodesLoopCompleted()
 
- 	{
 
- 		// Return all the nodes connected to the executes port
 
- 		return outputPorts.FirstOrDefault(n => n.fieldName == nameof(loopCompleted))
 
- 			.GetEdges().Select(e => e.inputNode as ConditionalNode);
 
- 	}
 
- }
 
 
  |