oxygengine_navigation/
lib.rs1extern crate oxygengine_core as core;
2
3pub mod asset_protocols;
4pub mod components;
5pub mod resources;
6pub mod systems;
7
8pub mod prelude {
9 pub use crate::{
10 asset_protocols::{nav_grid::*, nav_mesh::*, *},
11 components::*,
12 resources::{nav_grids::*, nav_meshes::*, *},
13 systems::*,
14 };
15}
16
17use crate::{
18 asset_protocols::{nav_grid::NavGridAssetProtocol, nav_mesh::NavMeshAssetProtocol},
19 components::{NavAgent, SimpleNavDriverTag},
20 resources::{nav_grids::NavGrids, nav_meshes::NavMeshes},
21 systems::{
22 nav_agent_maintain_system, simple_nav_driver_system, NavAgentMaintainSystemResources,
23 SimpleNavDriverSystemResources,
24 },
25};
26use core::{
27 app::AppBuilder,
28 assets::database::AssetsDatabase,
29 ecs::pipeline::{PipelineBuilder, PipelineBuilderError},
30 prefab::PrefabManager,
31};
32
33pub fn bundle_installer<PB>(builder: &mut AppBuilder<PB>, _: ()) -> Result<(), PipelineBuilderError>
34where
35 PB: PipelineBuilder,
36{
37 builder.install_resource(NavMeshes::default());
38 builder.install_resource(NavGrids::default());
39 builder.install_system::<NavAgentMaintainSystemResources>(
40 "nav-agent-maintain",
41 nav_agent_maintain_system,
42 &[],
43 )?;
44 builder.install_system::<SimpleNavDriverSystemResources>(
45 "simple-nav-driver",
46 simple_nav_driver_system,
47 &["nav-agent-maintain"],
48 )?;
49 Ok(())
50}
51
52pub fn protocols_installer(database: &mut AssetsDatabase) {
53 database.register(NavMeshAssetProtocol);
54 database.register(NavGridAssetProtocol);
55}
56
57pub fn prefabs_installer(prefabs: &mut PrefabManager) {
58 prefabs.register_component_factory::<SimpleNavDriverTag>("NavAgent");
59 prefabs.register_component_factory::<NavAgent>("NavAgent");
60}