| 120 | } |
| 121 | |
| 122 | pub fn process_event( |
| 123 | &mut self, |
| 124 | ev: Event<()>, |
| 125 | control_flow: &mut ControlFlow, |
| 126 | last_frame: &mut Instant, |
| 127 | ) { |
| 128 | self.renderer.process_event(&ev, control_flow); |
| 129 | { |
| 130 | let gl_window = self.display.gl_window(); |
| 131 | self.platform |
| 132 | .handle_event(self.imgui_ctx.io_mut(), gl_window.window(), &ev); |
| 133 | } |
| 134 | |
| 135 | #[allow(clippy::single_match)] |
| 136 | match ev { |
| 137 | Event::NewEvents(_) => { |
| 138 | let now = Instant::now(); |
| 139 | self.imgui_ctx.io_mut().update_delta_time(now - *last_frame); |
| 140 | *last_frame = now; |
| 141 | } |
| 142 | Event::MainEventsCleared => { |
| 143 | let gl_window = self.display.gl_window(); |
| 144 | self.platform |
| 145 | .prepare_frame(self.imgui_ctx.io_mut(), gl_window.window()) |
| 146 | .expect("Failed to prepare frame"); |
| 147 | gl_window.window().request_redraw(); |
| 148 | } |
| 149 | Event::WindowEvent { event, .. } => match event { |
| 150 | WindowEvent::CloseRequested => { |
| 151 | *control_flow = ControlFlow::Exit; |
| 152 | } |
| 153 | WindowEvent::Resized(new) => { |
| 154 | let image_size = Vec2::new(new.width as usize, new.height as usize); |
| 155 | self.image_size = image_size; |
| 156 | self.texture = SrgbTexture2d::empty( |
| 157 | &self.display, |
| 158 | image_size.x as u32, |
| 159 | image_size.y as u32, |
| 160 | ) |
| 161 | .unwrap(); |
| 162 | self.renderer.resize(image_size); |
| 163 | } |
| 164 | _ => {} |
| 165 | }, |
| 166 | Event::RedrawRequested(_) => { |
| 167 | self.render(); |
| 168 | } |
| 169 | _ => {} |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | pub fn render(&mut self) { |
| 174 | let ViewerRenderer { |