static void Main() { Font _font = new Font("fonts/JetBrainsMono-Regular.ttf"); var es = new EntityManager(); const uint windowWidth = 1024; const uint windowHeight = 768; const int numEntities = 85000; es.CreateEntities(numEntities); var bounds = new FloatRect(.0f, .0f, windowWidth, windowHeight); var window = new RenderWindow(new VideoMode(windowWidth, windowHeight), $"ECS Moving {numEntities} Circles"); window.Closed += (sender, e) => { ((Window)sender).Close(); }; var entities = es.GetEntities(); var cc = new ColorComponent(entities.Count); var pc = new PositionComponent(entities.Count, ref bounds); var rc = new RadiusComponent(entities.Count); var vc = new VelocityComponent(entities.Count); Text text = new Text("", _font, 24); text.FillColor = Color.Yellow; foreach (Entity entity in entities) { cc.AddComponent(entity); pc.AddComponent(entity); rc.AddComponent(entity); vc.AddComponent(entity); } var ms = new MoveSystem(ref bounds); Vertex[] vertexes = new Vertex[numEntities * 4]; for (int i = 0; i < numEntities * 4; i++) { vertexes[i] = new Vertex(); } var ds = new DrawSystem(ref vertexes); var clock = new Clock(); RenderStates _renderStates = new RenderStates(TextureManager.Instance.CircleTexture); var cycle = 0; int frames = 0; while (window.IsOpen) { var dt = clock.Restart(); window.Clear(); foreach (Entity entity in entities) { ref Vector2f position = ref pc.GetComponent(entity); ref var velocity = ref vc.GetComponent(entity); ref var color = ref cc.GetComponent(entity);