bevy_dioxus/examples/basic.rs

43 lines
1.2 KiB
Rust
Raw Normal View History

use bevy::{
app::{App, Startup},
2023-12-12 08:12:06 +00:00
core_pipeline::{clear_color::ClearColor, core_2d::Camera2dBundle},
ecs::system::{Commands, ResMut},
render::color::Color,
ui::node_bundles::NodeBundle,
DefaultPlugins,
};
2023-12-10 23:44:27 +00:00
use bevy_dioxus::{
2023-12-12 08:12:06 +00:00
bevy_mod_picking::DefaultPickingPlugins, dioxus::prelude::*, hooks::use_system, DioxusUiBundle,
DioxusUiPlugin, DioxusUiRoot,
2023-12-10 23:44:27 +00:00
};
fn main() {
App::new()
2023-12-10 23:44:27 +00:00
.add_plugins((DefaultPlugins, DioxusUiPlugin, DefaultPickingPlugins))
.add_systems(Startup, |mut commands: Commands| {
commands.spawn(DioxusUiBundle {
dioxus_ui_root: DioxusUiRoot::new(ui_root),
node_bundle: NodeBundle::default(),
});
commands.spawn(Camera2dBundle::default());
})
.run();
}
fn ui_root(cx: Scope) -> Element {
2023-12-12 08:12:06 +00:00
let mut count = use_state(cx, || 0);
let change_clear_color = use_system(cx, |mut clear_color: ResMut<ClearColor>| {
clear_color.0 = Color::RED;
});
render!(
div {
onclick: move |_| {
count += 1;
change_clear_color.schedule();
},
"Count: {count}"
}
)
}