Exemplo n.º 1
0
        public void IterateThroughArchetype()
        {
            Entity[] entities = new Entity[3];
            entities[0] = entityManager.CreateEntity(archetype);
            entities[1] = entityManager.CreateEntity(archetype);
            entities[2] = entityManager.CreateEntity(archetype);
            entityManager.GetComponent <ComponentA>(entities[0]).a = 0;
            entityManager.GetComponent <ComponentA>(entities[1]).a = 1;
            entityManager.GetComponent <ComponentA>(entities[2]).a = 2;
            entityManager.GetComponent <ComponentB>(entities[0]).x = 2;
            entityManager.GetComponent <ComponentB>(entities[1]).x = 1;
            entityManager.GetComponent <ComponentB>(entities[2]).x = 0;

            var iterator = entityManager.ArchetypeIterator(archetype);

            foreach (var itr in iterator)
            {
                var accessComponentA = itr.DataAccess <ComponentA>();
                var accessComponentB = itr.DataAccess <ComponentB>();
                for (int i = 0; i < itr.Length; ++i)
                {
                    Assert.AreEqual(entities[i], itr[i]);
                    Assert.AreEqual(i, accessComponentA[i].a);
                    Assert.AreEqual(2 - i, accessComponentB[i].x);
                }
            }
        }