public bool MoveNext() { //attention, the while is necessary to skip empty groups while (++_indexGroup < _groups.count) { var entityCollection1 = _entitiesDB.QueryEntities <T1, T2, T3>(_groups[_indexGroup]); if (entityCollection1.count == 0) { continue; } var entityCollection2 = _entitiesDB.QueryEntities <T4>(_groups[_indexGroup]); if (entityCollection2.count == 0) { continue; } Check.Assert(entityCollection1.count == entityCollection2.count , "congratulation, you found a bug in Svelto, please report it"); BT <IBuffer <T1>, IBuffer <T2>, IBuffer <T3> > array = entityCollection1.ToBuffers(); IBuffer <T4> array2 = entityCollection2.ToBuffer(); _buffers = new BT <IBuffer <T1>, IBuffer <T2>, IBuffer <T3>, IBuffer <T4> >( array.buffer1, array.buffer2, array.buffer3, array2, entityCollection1.count); break; } return(_indexGroup < _groups.count); }
public bool MoveNext() { //attention, the while is necessary to skip empty groups while (_db.MoveNext() == true) { FasterDictionary<uint, ITypeSafeDictionary>.KeyValuePairFast group = _db.Current; ITypeSafeDictionary<T1> typeSafeDictionary1 = @group.Value as ITypeSafeDictionary<T1>; ITypeSafeDictionary<T2> typeSafeDictionary2 = @group.Value as ITypeSafeDictionary<T2>; DBC.ECS.Check.Require(typeSafeDictionary1.Count != typeSafeDictionary2.Count , "entities count do not match"); if (typeSafeDictionary1.Count == 0) continue; _array = new BT<NB<T1>, NB<T2>>()(new EntityCollection<T1>(typeSafeDictionary1.GetValuesArray(out var count), count) .ToBuffer(); return true; } return false; }