using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using Unity.Jobs;
using Unity.Collections;
// using Unity.Entities;
namespace GraphProcessor
{
	/// 
	/// Graph processor
	/// 
	public class ProcessGraphProcessor : BaseGraphProcessor
	{
		List< BaseNode >		processList;
		
		/// 
		/// Manage graph scheduling and processing
		/// 
		/// Graph to be processed
		public ProcessGraphProcessor(BaseGraph graph) : base(graph) {}
		public override void UpdateComputeOrder()
		{
			processList = graph.nodes.OrderBy(n => n.computeOrder).ToList();
		}
		/// 
		/// Process all the nodes following the compute order.
		/// 
		public override void Run()
		{
			int count = processList.Count;
			for (int i = 0; i < count; i++)
				processList[i].OnProcess();
		}
	}
}