@@ -3,7 +3,7 @@ use bevy::{
33    prelude:: * , 
44    window:: { CursorGrabMode ,  CursorOptions ,  PrimaryWindow } , 
55} ; 
6- use  bevy_rerecast:: prelude:: NavmeshReady ; 
6+ use  bevy_rerecast:: { Navmesh ,   prelude:: NavmeshReady } ; 
77
88use  crate :: { 
99    enemy:: Enemy , 
@@ -12,6 +12,7 @@ use crate::{
1212        game_mode:: StartGameModeMessage , 
1313        states:: { GameLoadingState ,  InGameState ,  SelectedMapState } , 
1414    } , 
15+     nav_mesh_pathfinding:: NavMeshHandle , 
1516    player:: { Player ,  camera:: components:: FreeCam } , 
1617    user_interface:: main_menu:: MainMenuCamera , 
1718    world:: resources:: WorldSceneHandle , 
@@ -126,11 +127,24 @@ pub fn check_collider_constructor_hierarchy_ready(
126127} 
127128
128129pub  fn  check_navmesh_ready ( 
129-     _:  On < NavmeshReady > , 
130+     trigger :  On < NavmeshReady > , 
131+     mut  commands :  Commands , 
130132    mut  next_game_loading_state :  ResMut < NextState < GameLoadingState > > , 
133+     mut  nav_meshes :  ResMut < Assets < Navmesh > > , 
131134)  { 
135+     let  Some ( nav_mesh_handle)  = nav_meshes. get_strong_handle ( trigger. 0 )  else  { 
136+         panic ! ( 
137+             "Got navmeshready event but the Handle could not be found using \  
138+ 
139+         ) ; 
140+     } ; 
141+ 
132142    info ! ( "Navmesh is now ready!" ) ; 
133143    next_game_loading_state. set ( GameLoadingState :: NavMeshReady ) ; 
144+ 
145+     // need to store it in our own resource so we can call regenerate when a new map is selected 
146+     commands. insert_resource ( NavMeshHandle ( nav_mesh_handle) ) ; 
147+     info ! ( "Stored navmesh handle in our own resource, `NavMeshHandle`" ) ; 
134148} 
135149
136150pub  fn  on_game_loading_state_nav_mesh_ready ( 
0 commit comments