beet_ecs_macros/lib.rs
1mod action;
2mod utils;
3
4
5
6///
7/// ## Attributes
8/// `observers`
9/// Observers that are spawned when this component is added and despawned when it is removed.
10///
11/// ```rust
12/// #[derive(Component, Action)]
13/// #[observers(log_name_on_run,log_name_on_run)]
14/// struct LogOnRun(pub String);
15///
16/// fn log_name_on_run(trigger: Trigger<OnRun>, query: Query<&LogOnRun>) {
17/// let name = query
18/// .get(trigger.entity())
19/// .map(|n| n.0.as_str())
20/// .unwrap();
21/// println!("log_name_on_run: {name}");
22/// }
23///
24/// ```
25#[proc_macro_derive(
26 Action,
27 attributes(observers, global_observers, systems, category, storage)
28)]
29pub fn action(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
30 action::derive_action(input)
31}