#[cfg(feature = "_supports_ldtk")] mod assets; mod camera; mod map_query; mod pregen; mod system; #[cfg(feature = "_supports_ldtk")] pub mod ldtk; pub static mut LDTK_TILE_SCALE: AtomicU32 = AtomicU32::new(32); pub fn get_ldtk_tile_scale() -> f32 { unsafe { *LDTK_TILE_SCALE.get_mut() as f32 } } pub fn set_ldtk_tile_scale_u32(scale: u32) { unsafe { LDTK_TILE_SCALE.store(scale, Ordering::Release); } } pub fn set_ldtk_tile_scale_f32(scale: f32) { unsafe { LDTK_TILE_SCALE.store(scale as u32, Ordering::Release); } } mod __plugin { use bevy::ecs::query::QueryFilter; use std::marker::PhantomData; use bevy::prelude::*; pub struct MicroLDTKPlugin; impl Plugin for MicroLDTKPlugin { fn build(&self, app: &mut App) { #[cfg(feature = "_supports_ldtk")] { app.add_event::<super::system::LevelDataUpdated>() .init_asset::<super::ldtk::Project>() .init_asset::<super::ldtk::Level>() .init_asset::<super::ldtk::LevelSet>() .init_asset_loader::<super::ldtk::LdtkLoader>() .init_asset_loader::<super::ldtk::LdtkLevelLoader>() .init_resource::<super::assets::TilesetIndex>() .init_resource::<super::assets::LevelIndex>() .add_systems( Update, ( super::assets::handle_ldtk_project_events, super::assets::handle_ldtk_level_events, super::assets::handle_ldtk_level_set_events, ), ); } } } impl<CameraFilter: QueryFilter + Send + Sync + 'static> MicroLDTKCameraPlugin<CameraFilter> { pub fn new() -> Self { Self { _p: PhantomData::default(), } } } impl<CameraFilter: QueryFilter + Send + Sync + 'static> Default for MicroLDTKCameraPlugin<CameraFilter> { fn default() -> Self { Self::new() } } pub struct MicroLDTKCameraPlugin<CameraFilter: QueryFilter> { _p: PhantomData<CameraFilter>, } impl<CameraFilter: QueryFilter + Send + Sync + 'static> Plugin for MicroLDTKCameraPlugin<CameraFilter> { fn build(&self, app: &mut App) { app.add_systems( PostUpdate, super::camera::lock_camera_to_level::<CameraFilter>, ); } } } use std::sync::atomic::{AtomicU32, Ordering}; pub use __plugin::{MicroLDTKCameraPlugin, MicroLDTKPlugin}; pub use assets::{LevelIndex, TileMetadata, TilesetIndex}; pub use camera::CameraBounder; pub use ldtk::{LdtkLoader, LdtkProject}; pub use map_query::{CameraBounds, MapQuery}; #[cfg(feature = "autotile")] pub use micro_autotile as autotile; pub use pregen::{write_layer_to_texture, write_map_to_texture, Rasterise}; pub use system::*;