1#![doc = include_str!("../README.md")]
2#![cfg_attr(
4 feature = "document-features",
5 doc = document_features::document_features!()
6)]
7#![cfg_attr(not(test), no_std)]
8
9extern crate alloc;
10
11use bevy_app::prelude::*;
12use bevy_ecs::prelude::*;
13
14#[cfg(feature = "builder")]
15pub mod builder;
16pub mod graph;
17pub mod signal;
18pub mod signal_map;
19pub mod signal_vec;
20#[allow(missing_docs)]
21pub mod utils;
22
23#[derive(Default)]
25pub struct JonmoPlugin;
26
27#[derive(SystemSet, Debug, Clone, PartialEq, Eq, Hash)]
29pub struct SignalProcessing;
30
31impl Plugin for JonmoPlugin {
32 fn build(&self, app: &mut App) {
33 app.add_systems(
34 Last,
35 (
36 (
37 signal_vec::trigger_replays::<signal_vec::VecReplayTrigger>,
38 signal_vec::trigger_replays::<signal_map::MapReplayTrigger>,
39 ),
40 graph::process_signal_graph,
41 (
42 graph::despawn_stale_signals,
43 signal_vec::despawn_stale_mutable_vecs,
44 signal_map::despawn_stale_mutable_btree_maps,
45 ),
46 )
47 .chain()
48 .in_set(SignalProcessing),
49 );
50 }
51}
52
53pub mod prelude {
55 #[cfg(feature = "builder")]
56 pub use crate::builder::JonmoBuilder;
57 pub use crate::{
58 JonmoPlugin,
59 graph::SignalHandles,
60 signal::{IntoSignalEither, Signal, SignalBuilder, SignalEither, SignalExt},
61 signal_map::{MutableBTreeMap, MutableBTreeMapBuilder, MutableBTreeMapData, SignalMap, SignalMapExt},
62 signal_vec::{
63 IntoSignalVecEither, MutableVec, MutableVecBuilder, MutableVecData, SignalVec, SignalVecEither,
64 SignalVecExt,
65 },
66 utils::{LazyEntity, clone},
67 };
68 #[doc(no_inline)]
69 pub use apply::{Also, Apply};
70}