bevy_iced 0.5.0

Iced integration for Bevy
Documentation
use bevy::prelude::*;
use bevy_iced::iced::widget::text;
use bevy_iced::{IcedContext, IcedPlugin};
use bevy_input::keyboard::KeyboardInput;
use bevy_input::ButtonState;

#[derive(Event)]
pub enum UiMessage {}

#[derive(Resource, PartialEq, Eq)]
pub struct UiActive(bool);

pub fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(IcedPlugin::default())
        .add_event::<UiMessage>()
        .insert_resource(UiActive(true))
        .add_systems(Update, toggle_system)
        .add_systems(Update, ui_system.run_if(resource_equals(UiActive(true))))
        .run();
}

fn toggle_system(mut keyboard: EventReader<KeyboardInput>, mut active: ResMut<UiActive>) {
    for event in keyboard.read() {
        if event.key_code == KeyCode::Space && event.state == ButtonState::Pressed {
            active.0 = !active.0;
        }
    }
}

fn ui_system(mut ctx: IcedContext<UiMessage>) {
    ctx.display(text("Press space to toggle GUI."));
}