hammerspace/
lib.rs

1use assembler::LoaderPlugin;
2use bevy::prelude::*;
3
4use blenvy::BlenvyPlugin;
5#[cfg(feature = "editor")]
6use editor::EditorPlugin;
7
8#[cfg(feature = "pathfind")]
9use pathfind::{events::PathEvent, PathFindPlugin};
10use resources::HammerspaceConfig;
11
12pub mod assembler;
13#[cfg(feature = "editor")]
14pub mod editor;
15#[cfg(feature = "pathfind")]
16pub mod pathfind;
17
18pub mod resources;
19
20#[cfg(feature = "proc_terrain")]
21pub mod terrain;
22
23pub struct HammerspacePlugin {
24    pub config: HammerspaceConfig,
25}
26
27impl Plugin for HammerspacePlugin {
28    fn build(&self, app: &mut App) {
29        app.add_plugins((
30            LoaderPlugin,
31            BlenvyPlugin::default(),
32            #[cfg(feature = "pathfind")]
33            PathFindPlugin,
34            #[cfg(feature = "proc_terrain")]
35            TerrainPlugin,
36            #[cfg(feature = "editor")]
37            EditorPlugin,
38        ));
39        #[cfg(feature = "pathfind")]
40        app.add_event::<PathEvent>();
41        app.insert_resource::<HammerspaceConfig>(self.config.clone());
42    }
43}