using System.Collections.Generic;
using System.Threading.Tasks;
using System.Diagnostics;
namespace ConsoleApplicationTester
public AiType ai_type = AiType.Wait;
public Boolean active = false;
public enum AiType : byte { Wait, Move }
public static int size = 256;
public static List<Actor> Actors = new List<Actor>();
for (int i = 0; i < size; i++) { Actors.Add(new Actor()); }
public static int GoalPosition_X = 256;
public static int GoalPosition_Y = 0;
public static double Elapsed_Frames = 0;
public static void Main(string[] args)
Stopwatch timer = Stopwatch.StartNew();
for (var j = 0; j < 5; j++) {
for(i = 0; i < Pool.size; i++)
Pool.Actors[i].active = true;
Pool.Actors[i].y = i * 2;
{ Pool.Actors[i].ai_type = AiType.Move; }
int activeActors = Pool.size;
for (i = 0; i < Pool.size; i++)
if(Pool.Actors[i].active)
if (Pool.Actors[i].ai_type == AiType.Move)
if (Pool.Actors[i].x < GoalPosition_X)
{ Pool.Actors[i].x += 0.5f; }
else { Pool.Actors[i].x -= 0.5f; }
if (Pool.Actors[i].y < GoalPosition_Y)
{ Pool.Actors[i].y += 0.5f; }
else { Pool.Actors[i].y -= 0.5f; }
Pool.Actors[i].ai_type = AiType.Wait;
else { Pool.Actors[i].ai_type = AiType.Move; }
for (a = 0; a < Pool.size; a++)
if(Pool.Actors[a].active)
(Pool.Actors[a].x == Pool.Actors[i].x)
(Pool.Actors[a].y == Pool.Actors[i].y)
Pool.Actors[a].active = false;
Pool.Actors[i].active = false;
Console.WriteLine("total sim took " + timer.ElapsedMilliseconds + "ms");
Console.WriteLine("total frames = " + Elapsed_Frames);