bevy_mod_actuate

Crates.iobevy_mod_actuate
lib.rsbevy_mod_actuate
version0.4.1
sourcesrc
created_at2024-11-19 02:13:54.892984
updated_at2024-11-24 02:45:47.383791
descriptionA reactive user-interface framework
homepage
repositoryhttps://github.com/actuate-rs/bevy_mod_actuate
max_upload_size
id1452827
size180,549
Matt Hunzinger (matthunz)

documentation

README

bevy_mod_actuate

Crates.io version docs.rs docs CI status
Examples

Declarative scenes and reactivity for Bevy powered by Actuate.

use actuate::prelude::{*, Mut};
use bevy::prelude::*;
use bevy_mod_actuate::prelude::*;

// Timer composable.
#[derive(Data)]
struct Timer;

impl Compose for Timer {
    fn compose(cx: Scope<Self>) -> impl Compose {
        let current_time = use_mut(&cx, Time::default);

        // Use the `Time` resource from the ECS world, updating the `current_time`.
        use_world(&cx, move |time: Res<Time>| Mut::set(current_time, *time));

        // Spawn a `Text` component, updating it when this scope is re-composed.
        spawn(Text::new(format!("Elapsed: {:?}", current_time.elapsed())))
    }
}

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, ActuatePlugin))
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands) {
    commands.spawn(Camera2d::default());

    // Spawn a composition with a `Timer`, adding it to the Actuate runtime.
    commands.spawn(Composition::new(Timer));
}
Commit count: 87

cargo fmt