diff --git a/src/core/app/context.rs b/src/core/app/context.rs index 1c0ccb6..ce01c7c 100644 --- a/src/core/app/context.rs +++ b/src/core/app/context.rs @@ -180,6 +180,7 @@ impl ApplicationContext { f(&renderer) } + /// Méthode utilitaire pour accéder au renderer de manière thread-safe pub fn with_renderer_mut(&mut self, f: F) -> T where F: FnOnce(&mut VulkanoWindowRenderer) -> T, @@ -194,6 +195,7 @@ impl ApplicationContext { f(renderer) } + /// Méthode utilitaire pour accéder au gui de manière thread-safe pub fn with_gui(&self, f: F) -> T where F: FnOnce(&Gui) -> T, @@ -202,6 +204,7 @@ impl ApplicationContext { f(&gui) } + /// Méthode utilitaire pour accéder au gui de manière thread-safe pub fn with_gui_mut(&mut self, f: F) -> T where F: FnOnce(&mut Gui) -> T, diff --git a/src/core/app/mod.rs b/src/core/app/mod.rs index 243420b..140dee1 100644 --- a/src/core/app/mod.rs +++ b/src/core/app/mod.rs @@ -33,6 +33,7 @@ pub struct App { input_manager: Arc>, timer: Arc>, event_loop_proxy: EventLoopProxy, + // Context d'application partagé par fenêtre - architecture unifiée app_contexts: HashMap>>, } diff --git a/src/core/scene/manager.rs b/src/core/scene/manager.rs index 9ff65ac..a12892e 100644 --- a/src/core/scene/manager.rs +++ b/src/core/scene/manager.rs @@ -42,16 +42,9 @@ impl SceneManager { } pub fn current_scene_mut(&mut self) -> Option<&mut Box> { - log::debug!( - "current_scene_mut called - index: {:?}, scenes len: {}", - self.current_scene_index, - self.scenes.len() - ); if let Some(index) = self.current_scene_index { - log::debug!("Getting scene at index {}", index); self.scenes.get_mut(index) } else { - log::debug!("No current scene index set"); None } } @@ -60,21 +53,9 @@ impl SceneManager { &mut self, app_context: &mut ApplicationContext, ) -> Result<(), Box> { - log::debug!("SceneManager::load_scene_if_not_loaded called"); - log::debug!( - "Current scene index: {:?}, scenes count: {}", - self.current_scene_index, - self.scenes.len() - ); - if let Some(scene) = self.current_scene_mut() { - log::debug!("Scene found, checking if loaded: {}", scene.loaded()); if !scene.loaded() { - log::debug!("Scene not loaded, loading..."); scene.load(app_context)?; - log::debug!("Scene loaded successfully"); - } else { - log::debug!("Scene already loaded"); } } else { log::warn!("No scene found in SceneManager!"); diff --git a/src/game/scenes/main_scene.rs b/src/game/scenes/main_scene.rs index 6461289..26e8631 100644 --- a/src/game/scenes/main_scene.rs +++ b/src/game/scenes/main_scene.rs @@ -47,7 +47,7 @@ impl Scene for MainScene { }); let swapchain_image_view = - app_context.with_renderer_mut(|renderer| renderer.swapchain_image_view().clone()); + app_context.with_renderer(|renderer| renderer.swapchain_image_view().clone()); let square = Square::new( &app_context.device, @@ -180,7 +180,7 @@ impl Scene for MainScene { { let swapchain_image_view = - app_context.with_renderer_mut(|renderer| renderer.swapchain_image_view().clone()); + app_context.with_renderer(|renderer| renderer.swapchain_image_view().clone()); let depth_image_view = app_context.with_renderer_mut(|renderer| { renderer.get_additional_image_view(DEPTH_IMAGE_ID).clone() }); @@ -219,13 +219,14 @@ impl Scene for MainScene { before_future.then_execute(app_context.graphics_queue.clone(), command_buffer)?; let swapchain_image_view = - app_context.with_renderer_mut(|renderer| renderer.swapchain_image_view().clone()); + app_context.with_renderer(|renderer| renderer.swapchain_image_view().clone()); let input_manager_status = app_context.with_input_manager(|input_manager| format!("{:#?}", input_manager)); let event_loop_proxy = app_context.event_loop_proxy.clone(); let delta_time = app_context.get_delta_time(); let window_id = app_context.window_id; let window_size = app_context.get_window_size(); + let render_future = app_context.with_gui_mut(|gui| { gui.immediate_ui(|gui| { let ctx = gui.context(); @@ -270,15 +271,8 @@ impl Scene for MainScene { ui.label(format!(" Pitch: {:.2}°", rotation.x.to_degrees())); ui.separator(); + ui.label(input_manager_status); - - ui.label(format!("Delta time: {:?}", delta_time)); - - ui.label(format!( - "Position: {:?}, Rotation: {:?}", - state.camera.get_position(), - state.camera.get_rotation() - )); }); }); diff --git a/src/game/scenes/settings_scene.rs b/src/game/scenes/settings_scene.rs index 68e842b..4d6fc53 100644 --- a/src/game/scenes/settings_scene.rs +++ b/src/game/scenes/settings_scene.rs @@ -59,10 +59,11 @@ impl Scene for SettingsScene { // Utiliser le RenderPassManager { let swapchain_image_view = - app_context.with_renderer_mut(|renderer| renderer.swapchain_image_view().clone()); + app_context.with_renderer(|renderer| renderer.swapchain_image_view().clone()); let depth_stencil_image_view = app_context.with_renderer_mut(|renderer| { renderer.get_additional_image_view(DEPTH_IMAGE_ID).clone() }); + let config = RenderPassConfig::default(); RenderPassManager::begin_standard_rendering( &mut builder, @@ -82,7 +83,7 @@ impl Scene for SettingsScene { before_future.then_execute(app_context.graphics_queue.clone(), command_buffer)?; let swapchain_image_view = - app_context.with_renderer_mut(|renderer| renderer.swapchain_image_view().clone()); + app_context.with_renderer(|renderer| renderer.swapchain_image_view().clone()); let event_loop_proxy = app_context.event_loop_proxy.clone(); let window_id = app_context.window_id;