Back to Bevy

Observer Run Conditions

release-content/release-notes/observer_run_conditions.md

0.18.1570 B
Original Source

Observers can now use run conditions with .run_if(), the same pattern systems use for conditional execution.

rust
#[derive(Resource)]
struct GamePaused(bool);

// Observer only runs when game is not paused
app.add_observer(
    on_damage.run_if(|paused: Res<GamePaused>| !paused.0)
);

// Multiple conditions can be chained (AND semantics)
app.add_observer(
    on_damage
        .run_if(|paused: Res<GamePaused>| !paused.0)
        .run_if(resource_exists::<Player>)
);

This works with add_observer, entity .observe(), and the Observer builder pattern.