public bool MoveNext() { while (true) { while (_entryEnum == null || !_entryEnum.MoveNext()) { if (!_tileEnum.MoveNext()) { return(false); } BoxTile tile = Assert.NotNull(_tileEnum.Current); _entryEnum = _tree.GetTileEnumerator(this, tile.EnumElems()); } if (_searchBox == null) { return(true); } if (Assert.NotNull(Current).Box.Intersects(_searchBox)) { return(true); } } }
public IEnumerable <TileEntry> GetEntries(IBox box) { if (!box.Intersects(_tileBox)) { yield break; } foreach (TileEntry entry in _tile.EnumElems()) { if (entry.Box.Intersects(box)) { yield return(entry); } } }
internal IEnumerable <Neighborhood> GetNeighborhoods(double searchDistance) { if (_searchingTile.ElemsCount <= 0) { yield break; } if (!HasNeighbourTiles()) { yield break; } List <INeighbourEntryEnumerable> neighbourEntryEnumerators = GetNeighbourEntryEnumerators(); if (neighbourEntryEnumerators == null) { yield break; } foreach (TileEntry searchEntry in _searchingTile.EnumElems()) { IBox search = GetSearchBox(searchEntry.Box, searchDistance, _master._common); if (search == null) { continue; } yield return(new Neighborhood { Entry = searchEntry, Neighbours = GetNeighbours(search, neighbourEntryEnumerators) }); } }