mod assets; mod camera; mod locator; mod map_query; mod pregen; mod types; pub(crate) mod utils; // mod spawning; 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; use crate::LevelDataUpdated; pub struct MicroLDTKPlugin; impl Plugin for MicroLDTKPlugin { fn build(&self, app: &mut App) { app.add_event::<LevelDataUpdated>() .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(), } } } impl<CameraFilter: ReadOnlyWorldQuery + Send + Sync + 'static> Default for MicroLDTKCameraPlugin<CameraFilter> { fn default() -> Self { Self::new() } } 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 camera::CameraBounder; pub use map_query::{CameraBounds, MapQuery}; pub use pregen::{ write_layer_to_texture, write_map_to_texture, Rasterise, SuppliesImage, SuppliesTextureAtlas, }; pub use types::{LdtkLayer, LdtkLevel, LevelDataUpdated, SpatialIndex, TileFlip, TileRef}; pub use utils::{entity_centre, grid_to_px, px_to_grid, ActiveLevel, Indexer, WorldLinked};