woodpecker_ui 0.1.1

A UI library for the Bevy game engine.
Documentation
use bevy::{prelude::*, render::view::RenderLayers};
use woodpecker_ui::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(WoodpeckerUIPlugin {
            render_settings: RenderSettings {
                layer: RenderLayers::layer(1),
                ..Default::default()
            },
        })
        .add_systems(Startup, startup)
        .add_systems(Update, flip_render_layers)
        .run();
}

fn flip_render_layers(
    mut query: Query<&mut RenderLayers, With<Camera2d>>,
    input: Res<ButtonInput<KeyCode>>,
    mut local: Local<u8>,
) {
    if input.just_pressed(KeyCode::Space) {
        for mut layer in &mut query {
            *layer = match *local {
                0 => {
                    info!("camera showing layer 0");
                    *local = 1;
                    RenderLayers::layer(0)
                }
                1 => {
                    info!("camera showing layer 1");
                    *local = 0;
                    RenderLayers::layer(1)
                }
                _ => unreachable!(),
            };
        }
    }
}
fn startup(
    mut commands: Commands,
    mut ui_context: ResMut<WoodpeckerContext>,
    mut font_manager: ResMut<FontManager>,
    asset_server: Res<AssetServer>,
) {
    commands.spawn((Camera2d, WoodpeckerView, RenderLayers::layer(1)));

    let font = asset_server.load("Outfit/static/Outfit-Regular.ttf");
    font_manager.add(&font);

    let root = commands
        .spawn((
            WoodpeckerApp,
            WidgetChildren::default().with_child::<Element>((
                Element,
                WoodpeckerStyle {
                    font_size: 50.0,
                    color: Srgba::RED.into(),
                    margin: Edge::all(10.0),
                    font: Some(font.id()),
                    ..Default::default()
                },
                WidgetRender::Text {
                    content: "Space to change Camera RenderLayer. WoodPecker is on layer 1".into(),
                },
            )),
        ))
        .id();
    ui_context.set_root_widget(root);
}