private List <VectorTile> GetNeighbors(VectorTile tile, List <VectorTile> tiles) { List <VectorTile> neighbors = new List <VectorTile>(); // Creates the box to check all the neighbors RectInt.PositionEnumerator positions = new RectInt(tile.Position.x - 1, tile.Position.y - 1, 3, 3).allPositionsWithin; while (positions.MoveNext()) { // Skip to next tile if it is the original tile. if (positions.Current == tile.Position) { continue; } // Checks the VectorTile list to see if there is a tile with the current position. VectorTile neighborTile = tiles.Find(t => t.Position == positions.Current); // If tile was found, add it to the neighbors list if (neighborTile != default(VectorTile)) { neighbors.Add(neighborTile); } } return(neighbors); }
private void InitizalizeVectorTilePool() { // Creates VectorTile Pool for reusability and reduced memory usage. _vectorTilesPool = new List <VectorTile>(); _map.CompressBounds(); // Important step when every working with Unity Tilemaps. RectInt.PositionEnumerator positions = new RectInt (Vector2Int.FloorToInt(_map.localBounds.min), // Bottom Right Corner. Vector2Int.FloorToInt(_map.localBounds.size)).allPositionsWithin; // Width x Height. while (positions.MoveNext()) { if (_map.HasTile(Vector3Int.FloorToInt((Vector2)positions.Current))) { _vectorTilesPool.Add(new VectorTile(positions.Current)); } } }