mod assets; mod camera; mod locator; mod map_query; pub(crate) mod utils; 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 std::marker::PhantomData; use bevy::app::{App, CoreStage, Plugin}; use bevy::asset::AddAsset; use bevy::ecs::query::ReadOnlyWorldQuery; pub struct MicroLDTKPlugin; impl Plugin for MicroLDTKPlugin { fn build(&self, app: &mut App) { app.init_resource::<super::assets::TilesetIndex>() .init_resource::<super::assets::LevelIndex>() .add_asset::<super::assets::LdtkProject>() .add_asset_loader(super::assets::LdtkLoader) .add_system(super::assets::handle_ldtk_project_events); } } impl<CameraFilter: ReadOnlyWorldQuery + Send + Sync + 'static> MicroLDTKCameraPlugin<CameraFilter> { pub fn new() -> Self { Self { _p: PhantomData::default(), } } } pub struct MicroLDTKCameraPlugin<CameraFilter: ReadOnlyWorldQuery> { _p: PhantomData<CameraFilter>, } impl<CameraFilter: ReadOnlyWorldQuery + Send + Sync + 'static> Plugin for MicroLDTKCameraPlugin<CameraFilter> { fn build(&self, app: &mut App) { app.add_system_to_stage( CoreStage::PostUpdate, super::camera::lock_camera_to_level::<CameraFilter>, ); } } } use std::sync::atomic::{AtomicU32, Ordering}; pub use __plugin::{MicroLDTKCameraPlugin, MicroLDTKPlugin}; pub use assets::{LdtkLoader, LdtkProject, LevelIndex, TileMetadata, TilesetIndex}; pub use map_query::{CameraBounds, LayerRef, MapQuery, TileRef}; pub use utils::{entity_to_worldspace, grid_to_px, px_to_grid, ActiveLevel, WorldLinked};