1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
use crate::{component::NavAgent, resource::NavMeshesRes}; use core::{ app::AppLifeCycle, ecs::{Join, Read, ReadExpect, System, WriteStorage}, }; pub struct NavigationSystem; impl<'s> System<'s> for NavigationSystem { type SystemData = ( ReadExpect<'s, AppLifeCycle>, WriteStorage<'s, NavAgent>, Read<'s, NavMeshesRes>, ); fn run(&mut self, (lifecycle, mut agents, meshes_res): Self::SystemData) { let delta_time = lifecycle.delta_time_seconds(); for agent in (&mut agents).join() { agent.process(&meshes_res, delta_time); } } }