1use crate::camera::{camera_control_system, setup_ui_camera};
4use crate::dialogs::Dialogs;
5use crate::layout::render_editor_layout;
6use crate::notifications::Notifications;
7use crate::state::UiState;
8use bevy::app::App;
9use bevy::prelude::{Plugin, PostUpdate, Startup};
10use bevy_egui::{EguiPlugin, EguiPrimaryContextPass};
11
12pub struct UIPlugin;
14
15impl Plugin for UIPlugin {
16 fn build(&self, app: &mut App) {
17 app.add_plugins(EguiPlugin::default())
18 .insert_resource(Notifications::default())
19 .insert_resource(Dialogs::default());
20
21 app.add_systems(PostUpdate, camera_control_system)
23 .add_systems(Startup, setup_ui_camera);
24
25 app.insert_resource(UiState::default())
27 .add_systems(EguiPrimaryContextPass, render_editor_layout);
28 }
29}