MCPcopy Create free account
hub / github.com/AryanpurTech/BlueEngine / window_event

Method window_event

crates/blue_engine_core/src/window.rs:121–187  ·  view source on GitHub ↗
(
        &mut self,
        event_loop: &winit::event_loop::ActiveEventLoop,
        _window_id: winit::window::WindowId,
        event: WindowEvent,
    )

Source from the content-addressed store, hash-verified

119 }
120
121 fn window_event(
122 &mut self,
123 event_loop: &winit::event_loop::ActiveEventLoop,
124 _window_id: winit::window::WindowId,
125 event: WindowEvent,
126 ) {
127 self.simple_input.process_window_event(&event);
128 let mut events = std::mem::take(&mut self.signals.events);
129 events.iter_mut().for_each(|i| {
130 i.1.window_events(self, &event);
131 });
132 std::mem::swap(&mut self.signals.events, &mut events);
133
134 match event {
135 WindowEvent::CloseRequested => {
136 event_loop.exit();
137 std::process::exit(0);
138 }
139 WindowEvent::Resized(size) => {
140 let size = (size.width, size.height);
141 self.renderer.resize(size);
142 self.camera.set_resolution(size);
143 self.camera.update_view_projection(&mut self.renderer);
144 }
145 WindowEvent::RedrawRequested => {
146 if self.window.should_close {
147 event_loop.exit();
148 }
149
150 if let Some(window_ref) = self.window.as_ref() {
151 let size = window_ref.inner_size();
152 let size = (size.width, size.height);
153 if let Ok(Some((mut encoder, view, frame, headless_output))) =
154 self.renderer.pre_render(&self.objects, size, &self.camera)
155 {
156 let mut events = std::mem::take(&mut self.signals.events);
157 events.iter_mut().for_each(|i| {
158 i.1.frame(self, &mut encoder, &view);
159 });
160 std::mem::swap(&mut self.signals.events, &mut events);
161
162 for camera_value in self.camera.values_mut() {
163 camera_value.update_view_projection(&mut self.renderer);
164 }
165 self.objects.iter_mut().for_each(|i| {
166 if i.1.changed {
167 i.1.update(&mut self.renderer);
168 }
169 });
170
171 let mut update_function = self.update_loop.take();
172 if let Some(ref mut update_function) = update_function {
173 update_function(self);
174 }
175 self.update_loop = update_function;
176
177 self.renderer.render(encoder, frame, headless_output);
178 }

Callers

nothing calls this directly

Calls 9

process_window_eventMethod · 0.80
set_resolutionMethod · 0.80
pre_renderMethod · 0.80
renderMethod · 0.80
window_eventsMethod · 0.45
resizeMethod · 0.45
frameMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected