spew 0.6.0

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

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

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(SpewPlugin::<Object, Transform>::default())
        .add_plugins(SpewPlugin::<Object, String>::default())
        .add_spawners((
            (Object::Cube, spawn_cube_with_transform),
            (Object::Cube, spawn_cube_with_name),
        ))
        .add_systems(Startup, spawn_something_with_transform)
        .run();
}

fn spawn_something_with_transform(
    mut spawn_with_transform_events: EventWriter<SpawnEvent<Object, Transform>>,
    mut spawn_with_name_events: EventWriter<SpawnEvent<Object, String>>,
) {
    spawn_with_transform_events.send(SpawnEvent::with_data(
        Object::Cube,
        Transform::from_xyz(1.0, 2.0, 3.0),
    ));

    spawn_with_name_events.send(SpawnEvent::with_data(
        Object::Cube,
        "a very very friendly cube".to_owned(),
    ));
}

fn spawn_cube_with_transform(In(transform): In<Transform>, mut commands: Commands) {
    info!("Spawning cube at {}", transform.translation);
    commands.spawn((Name::new("Cube"), transform));
}

fn spawn_cube_with_name(In(name): In<String>, mut commands: Commands) {
    info!("Spawning {}", name);
    commands.spawn(Name::new(name));
}