-
Notifications
You must be signed in to change notification settings - Fork 261
/
Copy pathsimple_multipass.rs
44 lines (37 loc) · 1.3 KB
/
simple_multipass.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use std::num::NonZero;
use bevy::prelude::*;
use bevy_egui::{
EguiContext, EguiContextSettings, EguiFullOutput, EguiInput, EguiPlugin, EguiStartupSet,
};
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugins(EguiPlugin)
.add_systems(
PreStartup,
configure_context.after(EguiStartupSet::InitContexts),
)
.add_systems(Update, ui_example_system)
.run();
}
fn configure_context(mut egui_settings: Query<&mut EguiContextSettings>) {
egui_settings.single_mut().run_manually = true;
}
fn ui_example_system(mut contexts: Query<(&mut EguiContext, &mut EguiInput, &mut EguiFullOutput)>) {
let (mut ctx, mut egui_input, mut egui_full_output) = contexts.single_mut();
let ui = |ctx: &egui::Context| {
egui::Window::new("Hello").show(ctx, |ui| {
let passes = ui
.ctx()
.viewport(|viewport| viewport.output.num_completed_passes)
+ 1;
ui.label(format!("Passes: {}", passes));
ui.ctx().request_discard("Trying to reach max limit");
});
};
let ctx = ctx.get_mut();
ctx.memory_mut(|memory| {
memory.options.max_passes = NonZero::new(5).unwrap();
});
**egui_full_output = Some(ctx.run(egui_input.take(), ui));
}