spew 0.6.0

A simple helper for spawning objects in Bevy.
Documentation
use bevy::prelude::*;
use spew::prelude::*;

#[derive(Debug, PartialEq, Eq)]
enum Object {
    Player,
}

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(SpewPlugin::<Object>::default())
        .add_spawner((Object::Player, spawn_player))
        .add_systems(Startup, setup)
        .add_systems(Update, query_player.after(SpewSystemSet))
        .run();
}

#[derive(Component)]
struct Player {
    name: String,
}

fn spawn_player(mut commands: Commands) {
    commands.spawn(Player {
        name: "Franz Ferdinand".to_string(),
    });
}

fn setup(mut spawn_events: EventWriter<SpawnEvent<Object>>) {
    spawn_events.send(SpawnEvent::new(Object::Player));
}

fn query_player(player: Query<&Player>) {
    let player = player.single();
    info!("Found a player named {}", player.name);
}