use crate::{get_ldtk_tile_scale, LdtkLayer};
use bevy_asset::Handle;
use bevy_ecs::bundle::Bundle;
use bevy_image::Image;
use bevy_sprite_render::{TileData, TilemapChunk, TilemapChunkTileData};
use glam::UVec2;
impl LdtkLayer {
pub fn as_chunk(&self, tileset: Handle<Image>) -> impl Bundle {
let size = self.indexer();
let chunk = TilemapChunk {
tileset,
chunk_size: UVec2::new(size.width() as u32, size.height() as u32),
tile_display_size: UVec2::splat(get_ldtk_tile_scale() as u32),
alpha_mode: Default::default(),
};
let tile_max = size.width() * size.height();
let tile_data = TilemapChunkTileData(
(0..tile_max)
.map(|i| {
self.get_tile(size.reverse(i))
.map(|tile| TileData::from_tileset_index(tile.tile.t as u16))
})
.collect(),
);
(chunk, tile_data)
}
}