Ejemplo n.º 1
0
        public void IterateMultipleArchetypes()
        {
            Entity[] entities = new Entity[3];
            entities[0] = entityManager.CreateEntity(archetype);
            entities[1] = entityManager.CreateEntity(archetypeOnlyA);
            entities[2] = entityManager.CreateEntity(archetypeOnlyB);
            entityManager.GetComponent <ComponentA>(entities[0]).a = 1;
            entityManager.GetComponent <ComponentA>(entities[1]).a = 2;

            List <Entity> foundEntities = new();
            List <int>    foundValues   = new();

            archetypeOnlyA.ForEach <ComponentA>((itr, start, end, access) =>
            {
                for (int i = start; i < end; ++i)
                {
                    foundEntities.Add(itr[i]);
                    foundValues.Add(access[i].a);
                }
            });
            CollectionAssert.AreEquivalent(new[] { entities[0], entities[1] }, foundEntities);
            CollectionAssert.AreEquivalent(new[] { 1, 2 }, foundValues);
        }