public TileInstance[][] CreateTilemapStorage(TilemapLayerAsset type) { var storage = new TileInstance[m_size.y][]; int chunkY = 0; foreach (var chunk in levelChunks) { bool hasTilemap = chunk.TryGetTilemap(type, out var tilemap); var tilemapInterface = tilemap.GetInterface(); for (int y = 0; y < chunk.size.y; y++) { storage[chunkY + y] = new TileInstance[m_size.x]; if (hasTilemap) { for (int x = 0; x < chunk.size.x; x++) { var slicePosition = new Vector3Int(x, y, 0); if (tilemap.TryGetTile(slicePosition, out var tile)) { var storagePosition = new Vector3Int(x, chunkY + y, 0); storage[chunkY + y][x] = CreateTileInstance(storagePosition, slicePosition, tile, tilemapInterface); } } } } chunkY += chunk.size.y; } return(storage); }
public static bool GetLayerAssetByTag(string tag, out TilemapLayerAsset layerAsset) { layerAsset = allLayerAssets.FirstOrDefault(a => a.tagName == tag); return(layerAsset); }