Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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};