diff --git a/src/menus/lib/plugin.rs b/src/menus/lib/plugin.rs index 022919e..5210373 100644 --- a/src/menus/lib/plugin.rs +++ b/src/menus/lib/plugin.rs @@ -5,6 +5,8 @@ use bevy::{ state::state::FreelyMutableState, }; +use crate::cleanup::despawn; + use super::{ ItemPosition, MenuItemInternal, MenuItemType, OnPressAction, menus::{Menu, Menus}, @@ -30,7 +32,8 @@ where update_ui_trigger::, handle_press_actions::.run_if(in_state(self.trigger.clone())), ), - ); + ) + .add_systems(OnExit(self.trigger.clone()), close_menu::); } } @@ -53,6 +56,15 @@ impl Menus { } } +fn close_menu( + mut c: Commands, + mut nav_state: ResMut>, + closed_when: Res>, +) { + c.run_system_cached(despawn::>); + nav_state.set(closed_when.0.clone()); +} + #[derive(Resource)] struct MenusStore(HashMap>); #[derive(Resource)]