bevy_ldtk_asset/
plugin.rs1#![allow(missing_docs)]
2
3use bevy_app::{App, Plugin};
4use bevy_asset::AssetApp;
5
6use crate::entity::EntityInstance;
7use crate::entity_definition::EntityDefinition;
8use crate::enum_definition::EnumDefinition;
9use crate::iid::Iid;
10use crate::layer::LayerInstance;
11use crate::layer_definition::LayerDefinition;
12use crate::level::{Level, LevelBackground};
13use crate::project::Project;
14use crate::project_loader::ProjectLoader;
15use crate::tileset_definition::TilesetDefinition;
16use crate::world::World;
17
18#[derive(Debug)]
25pub struct BevyLdtkAssetPlugin;
26
27impl Plugin for BevyLdtkAssetPlugin {
28 fn build(&self, app: &mut App) {
29 app .init_asset::<EntityInstance>()
31 .init_asset::<LayerInstance>()
32 .init_asset::<Level>()
33 .init_asset::<Project>()
34 .init_asset::<World>()
35 .init_asset::<EntityDefinition>()
36 .init_asset::<LayerDefinition>()
37 .init_asset::<TilesetDefinition>()
38 .init_asset::<EnumDefinition>()
39 .init_asset_loader::<ProjectLoader>()
40 .register_asset_reflect::<EntityInstance>()
41 .register_asset_reflect::<LayerInstance>()
42 .register_asset_reflect::<Level>()
43 .register_asset_reflect::<Project>()
44 .register_asset_reflect::<World>()
45 .register_asset_reflect::<EntityDefinition>()
46 .register_asset_reflect::<LayerDefinition>()
47 .register_asset_reflect::<TilesetDefinition>()
48 .register_asset_reflect::<EnumDefinition>()
49 .register_type::<Iid>()
50 .register_type::<LevelBackground>();
51
52 #[cfg(feature = "asset_messages_debug")]
53 {
54 use bevy_app::Update;
55
56 use crate::systems::asset_messages_debug::asset_messages_debug_output;
57
58 app.add_systems(
59 Update,
60 (
61 asset_messages_debug_output::<Project>,
62 asset_messages_debug_output::<World>,
63 asset_messages_debug_output::<Level>,
64 asset_messages_debug_output::<LayerInstance>,
65 asset_messages_debug_output::<EntityInstance>,
66 ),
67 );
68 }
69 }
70}