maplibre/tcs/system/
stage.rs1use crate::{
2 context::MapContext,
3 schedule::{Stage, StageResult},
4 tcs::system::{IntoSystemContainer, SystemContainer},
5};
6
7#[derive(Default)]
8pub struct SystemStage {
9 systems: Vec<SystemContainer>,
10}
11
12impl SystemStage {
13 #[must_use]
14 pub fn with_system(mut self, system: impl IntoSystemContainer) -> Self {
15 self.add_system(system);
16 self
17 }
18
19 pub fn add_system(&mut self, system: impl IntoSystemContainer) -> &mut Self {
20 self.systems.push(system.into_container());
21 self
22 }
23}
24
25impl Stage for SystemStage {
26 fn run(&mut self, context: &mut MapContext) -> StageResult {
27 for container in &mut self.systems {
28 #[cfg(feature = "trace")]
29 let _span =
30 tracing::info_span!("system", name = container.system.name().as_ref()).entered();
31 container.system.run(context)?
32 }
33 Ok(())
34 }
35}