Fix imgui renderer once and for all

Finally solved the problems with the imgui renderer after a long chat with clankers. Fixed some other stuff as well.

Reminder to keep the rendered_this_frame check as that's what solved it. Probably a deeper issue down there that caused us to render twice, but whatever.
This commit is contained in:
reo 2025-09-10 01:31:43 +03:00
parent 15122b8ebd
commit 0c0d5cdb2a
7 changed files with 77 additions and 51 deletions

View file

@ -75,6 +75,11 @@ impl<E: EngineTrait> Platform<E> for GliumPlatform<E> {
};
self.engine.initialize(ctx.clone());
let _ = &self.event_loop.run(move |event, el| {
self.rendering_system_manager
.systems
.iter_mut()
.for_each(|(_, system)| system.handle_event(&mut self.window, event.clone()));
match event {
Event::WindowEvent { event, .. } => match event {
WindowEvent::CloseRequested => {
@ -93,9 +98,10 @@ impl<E: EngineTrait> Platform<E> for GliumPlatform<E> {
debug_ui_buffer,
};
for (system_id, system) in self.rendering_system_manager.systems.iter_mut() {
system.render(&mut context);
}
self.rendering_system_manager
.systems
.iter_mut()
.for_each(|(_, system)| system.render(&mut context));
target.finish().unwrap();
}
_ => {},
@ -104,6 +110,10 @@ impl<E: EngineTrait> Platform<E> for GliumPlatform<E> {
let mut ctx2 = ctx.clone();
ctx2.current_event = event.clone();
self.engine.update(ctx2);
self.rendering_system_manager
.systems
.iter_mut()
.for_each(|(_, system)| system.prepare_frame(&mut self.window));
self.window.request_redraw();
}
_ => {},