diff --git a/src/editor/ui/game_view.rs b/src/editor/ui/game_view.rs index 0a36167a..df29db9e 100644 --- a/src/editor/ui/game_view.rs +++ b/src/editor/ui/game_view.rs @@ -72,6 +72,23 @@ impl EditorTab for GameViewTab { } } +pub fn reset_camera_viewport( + primary_window: Query<&mut Window, With>, + mut cameras: Query<&mut Camera, With>, +) { + let mut cam = cameras.single_mut(); + + let Ok(window) = primary_window.get_single() else { + return; + }; + + cam.viewport = Some(bevy::render::camera::Viewport { + physical_position: UVec2::new(0, 0), + physical_size: UVec2::new(window.width() as u32, window.height() as u32), + depth: 0.0..1.0, + }); +} + pub fn set_camera_viewport( ui_state: Res, primary_window: Query<&mut Window, With>, diff --git a/src/editor/ui/mod.rs b/src/editor/ui/mod.rs index 84e75dc5..6812b82f 100644 --- a/src/editor/ui/mod.rs +++ b/src/editor/ui/mod.rs @@ -30,7 +30,7 @@ pub mod debug_panels; use bevy::{prelude::*, utils::HashMap, window::PrimaryWindow}; use bevy_egui::{egui, EguiContext}; -use crate::EditorSet; +use crate::{EditorSet, EditorState}; use self::tools::gizmo::GizmoTool; @@ -62,7 +62,12 @@ impl Plugin for EditorUiPlugin { app.add_plugins(bot_menu::BotMenuPlugin); - app.configure_set(Update, UiSystemSet.in_set(EditorSet::Editor)); + app.configure_set( + Update, + UiSystemSet + .in_set(EditorSet::Editor) + .run_if(in_state(EditorState::Editor)), + ); app.init_resource::(); app.init_resource::(); @@ -76,6 +81,10 @@ impl Plugin for EditorUiPlugin { ) .in_set(UiSystemSet), ); + app.add_systems( + Update, + reset_camera_viewport.run_if(in_state(EditorState::Game)), + ); app.editor_tab_by_trait(EditorTabName::GameView, GameViewTab::default()); app.editor_tab_by_trait(