Dexterous Developer

GitHub Workflow Status (with event) GitHub Workflow Status (with event) crates.io cli Static Badge

An experimental hot reload system for the bevy game engine. Inspired by DGriffin91's Ridiculous bevy hot reloading - adding the ability to re-load arbitrary systems, and the ability to transform resource/component structures over time.

Fuller documentation is available at: https://lee-orr.github.io/dexterous_developer/

Features

Known issues

Installation

Grab the CLI by running: cargo install dexterous_developer_cli.

You'll be able to run the dexterous verion of your code by running dexterous_developer_cli run in your terminal.

In your Cargo.toml add the following:

```toml [lib] name = "libTHENAMEOFYOUR_GAME" path = "src/lib.rs" crate-type = ["rlib", "dylib"]

[dependencies] bevy = "0.11" dexterous_developer = "0.0.9" serde = "1" # If you want the serialization capacities ```

If your game is not a library yet, move all your main logic to lib.rs rather than main.rs. Then, in your main.rs - call the bevy_main function:

```rust fn main() { libNAMEOFYOURGAME::bevy_main(); }

```

and in your lib.rs, your main function should become:

```rust

[hotbevymain]

pub fn bevymain(initialplugins: impl InitialPlugins) { App::new() .addplugins(initialplugins.initialize::()) // You can use either DefaultPlugins or MinimnalPlugins here, and use "set" on this as you would with them // Here you can do what you'd normally do with app // ... and so on } ```

If you have a plugin where you want to add reloadable elements, add the following in the file defining the plugin:

```rust

impl Plugin for MyPlugin { fn build(&self, app: &mut App) { app .setupreloadableelements::(); } }

[dexterousdevelopersetup]

fn reloadable(app: &mut ReloadableAppContents) { app .addsystems(Update, thissystemwillreload); }

```