use bevy_ecs::prelude::Resource;
#[derive(Resource, Default)]
pub struct RuntimeUi {
context: egui::Context,
input: egui::RawInput,
output: Option<egui::FullOutput>,
}
impl RuntimeUi {
#[must_use]
pub fn context(&self) -> &egui::Context {
&self.context
}
pub fn set_input(&mut self, input: egui::RawInput) {
self.input = input;
}
pub fn take_output(&mut self) -> Option<egui::FullOutput> {
self.output.take()
}
pub(super) fn begin_pass(&mut self) {
self.context.begin_pass(std::mem::take(&mut self.input));
}
pub(super) fn end_pass(&mut self) {
let mut output = self.context.end_pass();
if let Some(previous) = self.output.take() {
let mut textures = previous.textures_delta;
textures.append(output.textures_delta);
output.textures_delta = textures;
}
self.output = Some(output);
}
}