Crate bevy_aoui_widgets
source ·Expand description
UI, events and dsl for the bevy_aoui
crate.
This crate does not have a stable API and subject to change.
Event System
Since AoUI presumably sits on top of the bevy app, we provide an event system for detecting cursor activity exclusively for AoUI widgets. Cursor events not catched by our system can be handled by other systems.
We offer a component insertion based core event system for library developers as well as a oneshot system based event handler system for end users.
Widgets
We currently offer a few simple widgets.
Shape
: a vector shape renderer usingbevy_prototype_lyon
.InputBox
: a single line text input.Button
: a widget that provides click detection and propagation.
DSL
We offer a DSL for streamlining widget construction.
Before you start, always import the prelude for syntax consistancy.
use bevy_aoui_widgets::dsl::prelude::*;
Each “widget” has a struct and its corresponding macro.
sprite! ((commands, ..) {
dim: [400, 400],
sprite: assets.load("Ferris.png"),
});
This translates to
Sprite {
dim: [400, 400].dinto(),
sprite: assets.load("Ferris.png").dinto(),
..Default::default(),
}.spawn_with(&mut commands);
Where dinto
is our own Into
, DslInto
,
where all the syntax magic happens.
Add children like so, notice you don’t need to manually pass in
the context (commands, ..)
sprite! ((commands, ..) {
dim: [400, 400],
sprite: assets.load("Ferris.png"),
child: textbox! {
...
}
});
Check our our book or examples for more info.
Modules
Macros
- Construct a button.
- Construct a circle with
bevy_prototype_lyon
. - Color constrution macro, see
colorthis
. - Construct a compact layout.
- Construct a fixed grid layout.
- Construct a fixed table layout.
- Construct a flex table layout.
- Construct an empty sprite.
- Create a handler for a certain event.
- Construct a horizotal left to right compact layout.
- Construct a horizontal left to right span layout.
- Construct a textbox.
- Construct a dummy entity for linebreak in a layout.
- Construct marker components by name.
- The core macro for our DSL.
- Construct a oneshot event dynamically as a
&'static OnceLock<SystemId>
- Construct a paragtaph layout.
- Construct a rectangle with
bevy_prototype_lyon
. - Construct a shape with
bevy_prototype_lyon
. - Construct a
Size2
through CSS like syntax. - Construct a sized grid layout.
- Construct a sized table layout.
- Construct a span layout.
- Construct an image based sprite.
- Construct a textbox.
- Construct a vertical top to bottom compact layout.
- Construct a vertical top to bottom span layout.
- Create a widget extension based on the definition of
Frame
Structs
- Plugin for both widgets and events.
- Submit something that should be handled with serde.