use crate::interaction::InteractionState;
use crate::widgets::RenderUiSet;
use bevy::prelude::*;
use bevy_egui::EguiContexts;
#[derive(Resource, Clone, Default)]
pub struct UserCameraDisplay {
pub region: Rect,
}
#[derive(Default)]
pub struct UserCameraDisplayPlugin {}
impl Plugin for UserCameraDisplayPlugin {
fn build(&self, app: &mut App) {
app.init_resource::<UserCameraDisplay>().add_systems(
Update,
update_user_camera_display
.in_set(UserCameraDisplaySet)
.after(RenderUiSet)
.run_if(in_state(InteractionState::Enable)),
);
}
}
#[derive(SystemSet, Hash, PartialEq, Eq, Debug, Clone)]
pub struct UserCameraDisplaySet;
fn update_user_camera_display(
mut user_camera_display: ResMut<UserCameraDisplay>,
mut egui_contexts: EguiContexts,
) {
let available_rect = egui_contexts.ctx_mut().available_rect();
user_camera_display.region = Rect::new(
available_rect.min.x,
available_rect.min.y,
available_rect.max.x,
available_rect.max.y,
);
}