public static void BuildTileset(LDtkDataLayer layer, LDtkDataTile[] tiles, LDtkTilesetAssetCollection assets, Tilemap[] tilemaps) { LDtkDefinitionTileset definition = layer.IsAutoTilesLayer ? layer.Definition.AutoTilesetDefinition : layer.Definition.TileLayerDefinition; LDtkTilesetAsset asset = assets.GetAssetByIdentifier(definition.identifier); if (asset == null) { return; } //figure out if we have already built a tile in this position. otherwise, build up to the next tilemap Dictionary <Vector2Int, int> builtTileLayering = new Dictionary <Vector2Int, int>(); foreach (LDtkDataTile tileData in tiles) { Vector2Int px = tileData.px.ToVector2Int(); int tilemapLayer = GetTilemapLayerToBuildOn(builtTileLayering, px, tilemaps.Length - 1); BuildTile(layer, tileData, asset, tilemaps[tilemapLayer]); } }
private static void BuildTile(LDtkDataLayer layer, LDtkDataTile tileData, LDtkTilesetAsset asset, Tilemap tilemap) { Vector2Int coord = tileData.LayerPixelPosition / layer.__gridSize; coord = LDtkToolOriginCoordConverter.ConvertCell(coord, layer.__cHei); Sprite tileSprite = GetTileFromTileset(asset.ReferencedAsset, tileData.SourcePixelPosition, layer.__gridSize); Tile tile = ScriptableObject.CreateInstance <Tile>(); tile.colliderType = Tile.ColliderType.None; tile.sprite = tileSprite; Vector3Int co = new Vector3Int(coord.x, coord.y, 0); //Tilemap mapToBuildOn = tilemap; tilemap.SetTile(co, tile); SetTileFlips(tilemap, tileData, coord); }