diff options
| author | HampusM <hampus@hampusmat.com> | 2026-04-18 21:23:15 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-04-18 21:24:45 +0200 |
| commit | 6171fb6c9157593906bbc0fe5145405f10131123 (patch) | |
| tree | 5d0b13c9ec6d1f5f0a110794a30d855c9508b33f /engine/src/renderer.rs | |
| parent | 450670dbfb153f00adf431ad77379042a9114ab0 (diff) | |
feat(engine): add offset options to renderer::Command::DrawMesh
Diffstat (limited to 'engine/src/renderer.rs')
| -rw-r--r-- | engine/src/renderer.rs | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/engine/src/renderer.rs b/engine/src/renderer.rs index 52764db..b52e6b9 100644 --- a/engine/src/renderer.rs +++ b/engine/src/renderer.rs @@ -191,10 +191,40 @@ pub enum Command mesh: Mesh, usage: MeshUsage, }, - DrawMesh(ObjectId), + DrawMesh(ObjectId, DrawMeshOptions), UpdateDrawProperties(DrawProperties, DrawPropertiesUpdateFlags), } +builder! { + #[builder(name = DrawMeshOptionsBuilder, derives = (Debug, Default, Clone))] + #[derive(Debug, Default, Clone)] + #[non_exhaustive] + pub struct DrawMeshOptions { + pub element_offset: u32, + pub vertex_offset: u32, + + #[builder(skip_generate_fn)] + pub element_cnt: Option<u32>, + } +} + +impl DrawMeshOptions +{ + pub fn builder() -> DrawMeshOptionsBuilder + { + DrawMeshOptionsBuilder::default() + } +} + +impl DrawMeshOptionsBuilder +{ + pub fn element_cnt(mut self, element_cnt: u32) -> Self + { + self.element_cnt = Some(element_cnt); + self + } +} + bitflags! { #[derive(Debug)] pub struct BufferClearMask: u8 { @@ -531,9 +561,10 @@ pub fn add_main_render_passes( }); } - render_pass - .commands - .push(Command::DrawMesh(ObjectId::Asset(mesh_asset.id()))); + render_pass.commands.push(Command::DrawMesh( + ObjectId::Asset(mesh_asset.id()), + DrawMeshOptions::default(), + )); if let Some(draw_flags) = draw_flags.as_deref() && draw_flags.polygon_mode_config != PolygonModeConfig::default() |
