some_bevy_tools 0.2.4

A collection of tools which can be used in the Bevy Engine.
Documentation
use bevy::prelude::*;
use some_bevy_tools::despawn;

#[derive(States, PartialEq, Eq, Debug, Default, Hash, Clone, Copy)]
pub enum GameState {
    #[default]
    Start,
    End,
}

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(despawn::CleanupPlugin(GameState::Start))
        .init_state::<GameState>()
        .add_systems(Startup, setup)
        .add_systems(Update, switch_state)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn((
        Camera2dBundle::default(),
        despawn::Cleanup(GameState::Start),
    ));
    commands.spawn((
        SpriteBundle {
            texture: asset_server.load("ducky.png"),
            ..Default::default()
        },
        despawn::Cleanup(GameState::Start),
    ));
}

fn switch_state(input: Res<ButtonInput<KeyCode>>, mut next_state: ResMut<NextState<GameState>>) {
    if input.just_pressed(KeyCode::Space) {
        next_state.set(GameState::End);
    }
}