# bevy_spawn_observer
[](https://crates.io/crates/bevy_spawn_observer)
[](https://docs.rs/bevy_spawn_observer/latest/bevy_spawn_observer/)
[](https://github.com/benfrankel/bevy_spawn_observer)
This crate provides [`SpawnObserver`](https://docs.rs/bevy_spawn_observer/latest/bevy_spawn_observer/struct.SpawnObserver.html),
a custom [`SpawnableList`](https://docs.rs/bevy/latest/bevy/ecs/spawn/trait.SpawnableList.html)
enabling you to add observers to your bundles.
```rust
use bevy::{ecs::spawn::SpawnWith, prelude::*};
use bevy_spawn_observer::SpawnObserver;
// With `bevy_spawn_observer`:
fn button_new() -> impl Bundle {
(
Button,
Children::spawn(SpawnObserver::new(|_: Trigger<Pointer<Click>>| {
info!("You clicked me!");
})),
)
}
// Without `bevy_spawn_observer`:
fn button_old() -> impl Bundle {
(
Node::default(),
Children::spawn(SpawnWith(|parent: &mut ChildSpawner| {
parent.spawn(Button).observe(|_: Trigger<Pointer<Click>>| {
info!("You clicked me!");
});
})),
)
}
```
See a full example [here](https://github.com/benfrankel/bevy_spawn_observer/blob/main/examples/buttons.rs).
# Bevy version compatibility
| 0.16 | 0.1 |
# License
This crate is available under either of [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-Apache-2.0) at your choice.