1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use crate::WindowCloseRequested; use bevy_app::{ prelude::{EventReader, Events}, AppExit, }; use bevy_ecs::{Local, Res, ResMut}; #[derive(Default)] pub struct ExitOnWindowCloseState { event_reader: EventReader<WindowCloseRequested>, } pub fn exit_on_window_close_system( mut state: Local<ExitOnWindowCloseState>, mut app_exit_events: ResMut<Events<AppExit>>, window_close_requested_events: Res<Events<WindowCloseRequested>>, ) { if state .event_reader .iter(&window_close_requested_events) .next() .is_some() { app_exit_events.send(AppExit); } }