public static void CountTest() { // TODO: this is failing (probably not a great ECS anyway) return; var data = new Config { DeltaTime = 0.01667f, }; var ecs = new ECS(data); var e = ecs.CurrentFrame.Create(); ecs.CurrentFrame.AddSystem(new CountSystem()); ecs.CurrentFrame.AddSystem(new MovementSystem()); ecs.CurrentFrame.RegisterComponent <Count>(1024); ecs.CurrentFrame.RegisterComponent <TransformVel>(1024); ecs.CurrentFrame.Add <Count>(e); var mover = ecs.CurrentFrame.Create(); ecs.CurrentFrame.Add <TransformVel>(mover); var m = ecs.CurrentFrame.Get <TransformVel>(mover); m->position = Vector2.zero; m->velocity = new Vector2(0.3451f, -0.93f); // create an entity, CountSystem should count up to num value const int num = 38; for (var i = 0; i < num; i++) { ecs.Tick(); } Assert.IsTrue(ecs.CurrentFrame.Get <Count>(e)->value == num); // destroy the entity, CountSystem should no longer count up for e ecs.CurrentFrame.Destroy(e); for (var i = 0; i < num; i++) { ecs.Tick(); } Assert.IsTrue(ecs.CurrentFrame.Get <Count>(e) == null); // get a new entity, create a dummy first ecs.CurrentFrame.Create(); e = ecs.CurrentFrame.Create(); ecs.CurrentFrame.Add <Count>(e); for (var i = 0; i < num; i++) { ecs.Tick(); } Assert.IsTrue(ecs.CurrentFrame.Get <Count>(e)->value == num); }
private void Update() { _frameTimer -= Time.deltaTime; if (_frameTimer > 0) { return; } _frameTimer += (float)_ecs.CurrentFrame.Config <ECSConfig>().deltaTime; _ecs.Tick(); }