diff --git a/src/Arch.Tests/EnumeratorTest.cs b/src/Arch.Tests/EnumeratorTest.cs index 0b0e9d8..e9cc739 100644 --- a/src/Arch.Tests/EnumeratorTest.cs +++ b/src/Arch.Tests/EnumeratorTest.cs @@ -118,15 +118,17 @@ public void QueryArchetypeEmptyEnumeration() [Test] public void QueryChunkEnumeration() { - var counter = 0; + var counter = _world.CountEntities(in _description); + var chunkCounter = 0; + var query = _world.Query(in _description); foreach (ref var chunk in query) { - counter++; + counter -= chunk.Count; + chunkCounter++; } - var archetype1ChunkCount = _world.Archetypes[0].ChunkCount; - var archetype2ChunkCount = _world.Archetypes[1].ChunkCount; - That(counter, Is.EqualTo(archetype1ChunkCount + archetype2ChunkCount)); + That(counter, Is.EqualTo(0)); + That(chunkCounter, Is.EqualTo(_world.Archetypes[0].ChunkCount + _world.Archetypes[1].ChunkCount)); } } diff --git a/src/Arch/Core/Enumerators.cs b/src/Arch/Core/Enumerators.cs index 51a096c..4a5ca0e 100644 --- a/src/Arch/Core/Enumerators.cs +++ b/src/Arch/Core/Enumerators.cs @@ -188,7 +188,7 @@ public QueryChunkEnumerator(Span archetypes) // Make it move once, otherwhise we can not check directly for Current.Size which results in bad behaviour if (_archetypeEnumerator.MoveNext()) { - _index = _archetypeEnumerator.Current.ChunkCount; + _index = _archetypeEnumerator.Current.Count+1; } } @@ -202,7 +202,7 @@ public bool MoveNext() unchecked { // Decrease chunk till its zero, skip empty chunks -> otherwhise entity query might fail since it tries to acess that chunk - if (--_index >= 0 && Current.Count > 0) + if (--_index >= 0) { return true; } @@ -213,7 +213,7 @@ public bool MoveNext() return false; } - _index = _archetypeEnumerator.Current.ChunkCount-1; + _index = _archetypeEnumerator.Current.Count; return true; } } @@ -230,7 +230,7 @@ public void Reset() // Make it move once, otherwhise we can not check directly for Current.Size which results in bad behaviour if (_archetypeEnumerator.MoveNext()) { - _index = _archetypeEnumerator.Current.ChunkCount; + _index = _archetypeEnumerator.Current.Count + 1; } }