diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-05-04 11:03:27 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-05-04 11:03:27 -0400 |
| commit | b35d6cf47ed154697fb45e10586206295148eb35 (patch) | |
| tree | b28f7de2152eff94f7e2d2f156f1390daff19106 /src/window.rs | |
| parent | dd5de0107163bc3ea3898c07089d00f82feeec5e (diff) | |
| download | systemic4x-b35d6cf47ed154697fb45e10586206295148eb35.tar.gz systemic4x-b35d6cf47ed154697fb45e10586206295148eb35.tar.bz2 systemic4x-b35d6cf47ed154697fb45e10586206295148eb35.zip | |
add label rendering for planetary bodies
Diffstat (limited to 'src/window.rs')
| -rw-r--r-- | src/window.rs | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/src/window.rs b/src/window.rs index c64d653..73034ef 100644 --- a/src/window.rs +++ b/src/window.rs @@ -38,10 +38,7 @@ impl GameWindow let wgpuctx = pollster::block_on(WgpuCtx::new(instance, window.clone())); let eguictx = EguiCtx::new(&window, &wgpuctx); - let tacmap = TacticalMap::new( - &wgpuctx, - winit::dpi::LogicalPosition::new(0.0, 0.0), - winit::dpi::LogicalSize::new(1.0, 1.0)); + let tacmap = TacticalMap::new(&wgpuctx); let ui_state = ui::State{ topbar_sate: ui::topbar::TopBarState { @@ -100,7 +97,16 @@ impl GameWindow if !self.wgpuctx.is_ready() { return Ok(()); } + + let view = self.wgpuctx.prepare_surface(&wgpu::TextureViewDescriptor::default())?; + let mut scene = SceneCtx::from_view_default(&self.wgpuctx, &view, Some("Systemic window scene")); + self.eguictx.prepare(&self.window); + let screen_size = egui::vec2( + self.wgpuctx.surface_config().width as f32, + self.wgpuctx.surface_config().height as f32); + + self.ui_state.render(game_state, &self.eguictx); if self.ui_state.topbar_sate.current_system.is_some() { let game_state = game_state.borrow(); let current_system = &game_state.solar_systems()[self.ui_state.topbar_sate.current_system.unwrap()]; @@ -109,28 +115,27 @@ impl GameWindow &self.wgpuctx, current_system, game_state.timeman())?; - } - - let view = self.wgpuctx.prepare_surface(&wgpu::TextureViewDescriptor::default())?; - let mut scene = SceneCtx::from_view_default(&self.wgpuctx, &view, Some("Systemic window scene")); - { + + self.tactical_map.prepare(&mut scene); + let mut pass = RenderPassBuilder::new(Some("Systemic window render pass"), &view) - .clear_color(wgpu::Color { r: 0.0, g: 0.0, b: 0.0, a: 1.0 }) + .clear_color(wgpu::Color { r: 0.0, g: 0.0, b: 0.1, a: 1.0 }) .build_from_scene(&mut scene); //Draw the tactical map canvas. - self.tactical_map.present(&mut pass)?; - } - { - self.eguictx.prepare(&self.window); - self.ui_state.render(game_state, &self.eguictx); - - self.eguictx.present( - &self.window, - &self.wgpuctx, - scene.encoder_mut(), - &view); + self.tactical_map.paint(&mut pass); + + egui::CentralPanel::default() + .frame(egui::Frame::new()) + .show(self.eguictx.context(), |ui| { + self.tactical_map.paint_labels(current_system, screen_size, ui); + }); } + self.eguictx.present( + &self.window, + &self.wgpuctx, + scene.encoder_mut(), + &view); scene.submit(&self.wgpuctx); self.wgpuctx.present_surface(); @@ -155,7 +160,7 @@ impl GameWindow ) { if width > 0 && height > 0 { self.wgpuctx.resize(width, height); - self.tactical_map.resize(&self.wgpuctx, width, height); + self.tactical_map.resize(width, height); self.window.request_redraw(); } } |
