bevy_pause 0.1.0

A very simple pause plugin for Bevy
Documentation
use bevy::prelude::*;

pub struct PausePlugin {
    toggle_button: KeyCode,
}

#[derive(Resource)]
pub struct PausePluginConfig {
    pub toggle_button: KeyCode,
}

impl PausePlugin {
    pub fn new(toggle_button: KeyCode) -> Self {
        Self { toggle_button }
    }
}

impl Plugin for PausePlugin {
    fn build(&self, app: &mut App) {
        app.add_systems(Update, toggle_pause)
            .insert_resource(PausePluginConfig {
                toggle_button: self.toggle_button,
            });
    }
}

fn toggle_pause(
    mut time: ResMut<Time<Virtual>>,
    input: Res<ButtonInput<KeyCode>>,
    config: Res<PausePluginConfig>,
) {
    if input.just_pressed(config.toggle_button) {
        if time.is_paused() {
            time.unpause();
        } else {
            time.pause();
        }
    }
}