Beispiel #1
0
        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);
        }
Beispiel #2
0
        private void Update()
        {
            _frameTimer -= Time.deltaTime;
            if (_frameTimer > 0)
            {
                return;
            }

            _frameTimer += (float)_ecs.CurrentFrame.Config <ECSConfig>().deltaTime;
            _ecs.Tick();
        }