public Set<Tile> getTileArray() {
		if (tiles != null) {
			return tiles;
		}

		final Polygon polygon = getPolygon();
		final Rectangle bounds = polygon.getBounds();
		final Set<Tile> set = new HashSet<Tile>();

		int x = 0;
		while (x < bounds.width) {
			int y = 0;
			while (y < bounds.height) {
				final int tempX = bounds.x + x;
				final int tempY = bounds.y + y;
				if (polygon.contains(tempX, tempY)) {
					set.add(new Tile(tempX, tempY, plane));
				}
				++y;
			}
			++x;
		}

		return this.tiles = set;
	}