summaryrefslogtreecommitdiffstats
path: root/src/tacmap.rs
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-04-22 15:40:32 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-04-22 15:40:32 -0400
commit25255a8b9147d27aa40b28d6aadb62c0ab275d32 (patch)
tree2d2ec324de7c0c16c098d85746ab060edb536f76 /src/tacmap.rs
parent3d3864171785c589872bf23faaaa3a421f56ee4e (diff)
downloadsystemic4x-25255a8b9147d27aa40b28d6aadb62c0ab275d32.tar.gz
systemic4x-25255a8b9147d27aa40b28d6aadb62c0ab275d32.tar.bz2
systemic4x-25255a8b9147d27aa40b28d6aadb62c0ab275d32.zip
simplify rendering pipeline. add gridlines to tacmap
Diffstat (limited to 'src/tacmap.rs')
-rw-r--r--src/tacmap.rs31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/tacmap.rs b/src/tacmap.rs
index e4cb76a..abae50e 100644
--- a/src/tacmap.rs
+++ b/src/tacmap.rs
@@ -17,6 +17,8 @@ use crate::canvas::Canvas;
use crate::solar_system::SolarSystem;
use crate::solar_system::SystemId;
use crate::ui;
+use crate::wgpuctx::RenderPassBuilder;
+use crate::wgpuctx::SceneCtx;
use crate::wgpuctx::WgpuCtx;
use render::*;
use camera::*;
@@ -28,7 +30,8 @@ pub struct TacticalMap
pmatrix: Projection,
camera_controller: CameraController,
- renderstate: Option<(SystemId, BodyRenderer)>
+ body_renderer: Option<(SystemId, BodyRenderer)>,
+ grid_renderer: GridRenderer
}
impl TacticalMap
@@ -66,7 +69,8 @@ impl TacticalMap
camera: camera,
pmatrix: projection,
camera_controller: CameraController::new(),
- renderstate: None,
+ body_renderer: None,
+ grid_renderer: GridRenderer::new(wgpuctx)
}
}
@@ -121,7 +125,7 @@ impl TacticalMap
self.camera.update_buffer(wgpuctx, &self.pmatrix);
- let tacrender = match &mut self.renderstate {
+ let body_renderer = match &mut self.body_renderer {
Some((id, render)) => {
if *id != current_system_id {
*id = current_system_id;
@@ -131,14 +135,14 @@ impl TacticalMap
},
None => {
let tmp = render::BodyRenderer::new(wgpuctx);
- self.renderstate = Some((current_system_id, tmp));
- &mut self.renderstate.as_mut().unwrap().1
+ self.body_renderer = Some((current_system_id, tmp));
+ &mut self.body_renderer.as_mut().unwrap().1
}
};
//Update buffers for the current system and time.
- tacrender.rebuild(wgpuctx, current_system);
- match tacrender.update(
+ body_renderer.rebuild(wgpuctx, current_system);
+ match body_renderer.update(
wgpuctx, current_system, &self.camera,
game_state.timeman().seconds())
{
@@ -146,8 +150,19 @@ impl TacticalMap
Err(e) => println!("Tactical map render update error: {}", e)
}
- tacrender.render(wgpuctx, &self.canvas, &self.camera);
+ let mut scene = SceneCtx::from_view_default(wgpuctx, self.canvas.view(), Some("Tactical map scene"));
+ let pass_builder = RenderPassBuilder::new(Some("Tactical map render pass"), scene.view())
+ .clear_color(wgpu::Color { r: 0.0, g: 0.0, b: 0.1, a: 1.0 });
+ self.camera.stage_changes(scene.encoder_mut());
+ {
+ let mut pass = pass_builder.build_from_scene(&mut scene);
+
+ self.grid_renderer.render(wgpuctx, &mut pass, &self.camera);
+ body_renderer.render(wgpuctx, &mut pass, &self.camera);
+ }
+
+ scene.submit(wgpuctx);
Ok(())
}