diff --git a/doc/bridge_packages/flame_tiled/flame_tiled.md b/doc/bridge_packages/flame_tiled/flame_tiled.md index 06c23d4fa99..f046af0e7ec 100644 --- a/doc/bridge_packages/flame_tiled/flame_tiled.md +++ b/doc/bridge_packages/flame_tiled/flame_tiled.md @@ -40,6 +40,13 @@ final component = await TiledComponent.load( ); ``` + +### Clearing images cache + +If you have called `Flame.images.clearCache()` you also need to call `TiledAtlas.clearCache()` to +remove disposed images from the tiled cache. It might be useful if your next game map have completely +different tiles than the previous. + [Tiled]: https://www.mapeditor.org/ ```{toctree} diff --git a/packages/flame_tiled/lib/src/tile_atlas.dart b/packages/flame_tiled/lib/src/tile_atlas.dart index b38e39c4590..8ea0af91bba 100644 --- a/packages/flame_tiled/lib/src/tile_atlas.dart +++ b/packages/flame_tiled/lib/src/tile_atlas.dart @@ -156,4 +156,12 @@ class TiledAtlas { key: key, ); } + + /// Clears images cached in `TiledAtlas` + /// + /// If you called `Flame.images.clearCache()` you also need to call this + /// function to clear disposed images from tiled cache. + static void clearCache() { + atlasMap.clear(); + } } diff --git a/packages/flame_tiled/test/tile_atlas_test.dart b/packages/flame_tiled/test/tile_atlas_test.dart index c4c1d9c51a9..1fb2645d8b4 100644 --- a/packages/flame_tiled/test/tile_atlas_test.dart +++ b/packages/flame_tiled/test/tile_atlas_test.dart @@ -121,6 +121,18 @@ void main() { matchesGoldenFile('goldens/larger_atlas_component.png'), ); }); + + test('clearing cache', () async { + await TiledAtlas.fromTiledMap( + simpleMap, + ); + + expect(TiledAtlas.atlasMap.isNotEmpty, true); + + TiledAtlas.clearCache(); + + expect(TiledAtlas.atlasMap.isEmpty, true); + }); }); group('Single tileset map', () {