#user-input #bevy #async #gamedev

bevy_flurx

Allows you to write sequential description of processes involving delays, user input, and other waits

17 unstable releases (3 breaking)

0.6.0 Aug 4, 2024
0.6.0-rc.1 Jul 1, 2024
0.5.3 Jun 4, 2024
0.5.1 May 21, 2024
0.3.0 Mar 14, 2024

#164 in Game dev

Download history 100/week @ 2024-06-28 72/week @ 2024-07-05 38/week @ 2024-07-26 118/week @ 2024-08-02 9/week @ 2024-08-09 2/week @ 2024-08-23 2/week @ 2024-08-30 1/week @ 2024-09-13 27/week @ 2024-09-20 24/week @ 2024-09-27 2/week @ 2024-10-04

54 downloads per month
Used in 5 crates

MIT/Apache

615KB
5.5K SLoC

bevy_flurx

Crates.io MIT/Apache 2.0 Crates.io

This library provides a mechanism for more sequential description of delays, character movement, waiting for user input, and other state waits.

As an example, here is an example of a cut-in effect that involves waiting for user input, a slight delay, and a sprite to move.

cut_in

The full source code can be found here.

fn spawn_reactor(
    mut commands: Commands
) {
    commands.spawn(Reactor::schedule(|task| async move {
        task.will(Update, {
            wait::input::just_pressed().with(KeyCode::KeyR)
                .then(once::switch::on::<CutInBackground>())
                .then(delay::time().with(Duration::from_millis(100)))
                .then(once::switch::on::<HandsomeFerris>())
                .then(wait::both(
                    wait::switch::off::<CutInBackground>(),
                    wait::switch::off::<HandsomeFerris>(),
                ))
                .then(once::switch::on::<MoveSlowly>())
                .then(delay::time().with(Duration::from_millis(500)))
                .then(once::switch::off::<MoveSlowly>())
                .then(once::switch::on::<MoveFast>())
                .then(delay::time().with(Duration::from_millis(300)))
                .then(once::event::app_exit())
        })
            .await;
    }));
}

Example

All examples are here.

Feature flags

flag name short description default
audio audio actions true
record undo/redo actions and events true
effect thread/async side effects true
tokio async-compat and async actions false

audio

Provides the actions that perform simple audio playback and waiting using bevy's default audio functionality.

  • once::audio
  • wait::audio

record

Provides Record to manage operation history.

undo_redo

effect

Allows to convert the operations with side effects such as asynchronous runtime or thread into the referential-transparent actions.

tokio

You will be able to write processes that depend on tokio's runtime in the reactor.

ChangeLog

Please see here.

Compatible Bevy versions

bevy_flurx bevy
0.3.0 0.13.0
0.3.1 0.13.1
0.3.2 ~ 0.5.3 0.13.2
0.6.0 0.4.1

License

This crate is licensed under the MIT License or the Apache License 2.0.

Dependencies

~36–73MB
~1.5M SLoC