collectImagesInLayer method

List<TiledImage> collectImagesInLayer(
  1. Layer layer
)

Implementation

List<TiledImage> collectImagesInLayer(Layer layer) {
  if (layer is ImageLayer) {
    return [layer.image];
  } else if (layer is Group) {
    return layer.layers.expand(collectImagesInLayer).toList();
  } else if (layer is TileLayer) {
    const emptyTile = 0;
    final rows = layer.tileData ?? <List<Gid>>[];
    final gids = rows
        .expand((row) => row.map((gid) => gid.tile))
        .where((gid) => gid != emptyTile)
        .toSet();

    return gids
        .map(tilesetByTileGId)
        .toSet() // The different gid can be in the same tileset
        .expand(
          (tileset) =>
              [tileset.image, ...tileset.tiles.map((tile) => tile.image)],
        )
        .whereNotNull()
        .toList();
  }

  return [];
}