bevy_action

Crates.iobevy_action
lib.rsbevy_action
version0.1.0
sourcesrc
created_at2023-04-07 21:47:24.477289
updated_at2023-04-07 21:47:24.477289
descriptionSimple action system for Bevy.
homepagehttps://github.com/undersquire/bevy_action
repositoryhttps://github.com/undersquire/bevy_action
max_upload_size
id833217
size16,076
undersquire (undersquire)

documentation

https://docs.rs/bevy_action

README

bevy_action

Simple action system for Bevy.

Introduction

This plugin exists mainly to facilitate a common action system for other plugins to hook in to (e.g. bevy_action_animation).

It also serves as a way to decouple certain parts of game logic to avoid hard-coding things, such as hard-coding input handling to actions rather than directly to movement logic.

There are three main components, the Action trait, the ActionEvent event, and the ActionPlugin.

Usage

Start by defining your own type to represent the actions (enum is recommended). You will then need to derive the required traits and manually implement the Action trait (this will be derivable in the future):

#[derive(Clone, Debug, PartialEq, Eq, Hash, Default, Serialize, Deserialize, TypeUuid)]
#[uuid = "UUID_HERE"]
enum MyAction {
  #[default]
  Idle,
  Left,
  Right,
  Jump
}

impl Action for MyAction {}

Next, register the plugin using this type as the generic parameter:

fn main() {
  App::new()
    ...
    .add_plugin(ActionPlugin::<MyAction>::default())
    ...
}

Now, ActionEvent can be used with EventReader and EventWriter just like any normal Bevy event.

Compatibility

Bevy Version Plugin Version
0.10.x 0.1
Commit count: 8

cargo fmt