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