public HexTile[] GetNeighborsInRange(int radius) { HashSet <HexTile> tiles = new HashSet <HexTile>(); for (int dx = -radius; dx <= radius; ++dx) { for (int dy = Mathf.Max(-radius, -dx - radius); dy <= Mathf.Min(radius, -dx + radius); ++dy) { int dz = -dx - dy; var center = new OffsetCoordinate(this.x, this.y); var offsetCube = new CubeCoordinate(dx, dy, dz); HexTile neighbor = HexTile.FindByOffset(center, HexUtils.CubeCoordToOffsetCoord(offsetCube, center.IsEven())); if (neighbor != null) { tiles.Add(neighbor); } } } HexTile[] results = new HexTile[tiles.Count]; tiles.CopyTo(results); return(results); }