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); }