Newer
Older
mod system;
#[cfg(any(feature = "ldtk_1_2_5", feature = "ldtk_1_2_4"))]
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 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) {
#[cfg(any(feature = "ldtk_1_2_5", feature = "ldtk_1_2_4"))]
{
app.add_event::<super::types::LevelDataUpdated>()
.add_asset::<super::ldtk::Project>()
.add_asset_loader(super::ldtk::LdtkLoader)
.init_resource::<super::assets::TilesetIndex>()
.init_resource::<super::assets::LevelIndex>()
.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};
pub use system::*;