#bevy #gamedev #progress #tracking #mod #strong-typing

bevy_mod_progress

Convenient, strongly-typed progress tracking

1 unstable release

0.1.0 Apr 1, 2024

#589 in Game dev

Download history 127/week @ 2024-03-27 47/week @ 2024-04-03

174 downloads per month

MIT/Apache

17KB
181 lines

bevy_mod_progress

Strongly typed progress tracking. Based on the (very good) iyes_progress.

use bevy::prelude::*;
use bevy_mod_progress::*;

struct TrackerId;

fn main() {
    let mut app = App::new();
    app.add_plugins(DefaultPlugins);
    app.add_plugins(ProgressTrackerPlugin::<TrackerId>::default());
    app.add_systems(Update, tracking_system.track_progress::<TrackerId>()
        .run_if(currently_tracking::<TrackerId>()));
    app.add_systems(Done::<TrackerId>::new(), finished_system);
    app.run();
}

fn tracking_system(
    time: Res<Time<Real>>,
) -> Progress {
    let ts = (time.elapsed_seconds() * 1000.0) as u32;
    Progress {
        done: ts.min(5000),
        required: 5000,
    }
}

fn finished_system(
    time: Res<Time<Real>>,
) {
    info!("Finished at {} seconds", time.elapsed_seconds());
}

Dependencies

~16–47MB
~725K SLoC