pub mod animation;
pub mod event;
pub mod filter;
pub mod helpers;
pub mod image;
pub mod layer;
pub mod map;
pub mod object;
pub mod sets;
pub mod tile;
pub mod world;
pub(crate) mod cache;
pub(crate) mod reader;
#[cfg(feature = "user_properties")]
pub mod properties;
use crate::prelude::*;
use bevy::prelude::*;
use std::{env, path::PathBuf};
#[derive(Resource, Reflect, Clone, Debug)]
#[reflect(Resource, Debug)]
pub struct TiledPluginConfig {
pub tiled_types_export_file: Option<PathBuf>,
pub tiled_types_filter: TiledFilter,
}
impl Default for TiledPluginConfig {
fn default() -> Self {
let mut path = env::current_dir().unwrap_or_default();
path.push("tiled_types_export.json");
Self {
tiled_types_export_file: Some(path),
tiled_types_filter: TiledFilter::All,
}
}
}
#[derive(Default, Clone, Debug)]
pub struct TiledPlugin(pub TiledPluginConfig);
impl Plugin for TiledPlugin {
fn build(&self, mut app: &mut App) {
if !app.is_plugin_added::<bevy_ecs_tilemap::TilemapPlugin>() {
app = app.add_plugins(bevy_ecs_tilemap::TilemapPlugin);
}
app.insert_resource(self.0.clone());
app.insert_resource(cache::TiledResourceCache::new());
app.register_type::<TiledPluginConfig>();
app.add_plugins((
map::plugin,
world::plugin,
animation::plugin,
cache::plugin,
event::plugin,
image::plugin,
layer::plugin,
object::plugin,
tile::plugin,
sets::plugin,
filter::plugin,
#[cfg(feature = "user_properties")]
properties::plugin,
));
}
}