From 6285d4e72141e714ee319cf616e888fc6868a993 Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 17 Apr 2026 17:04:41 +0200 Subject: feat(engine): make mesh in renderer::command::CreateMesh optional --- engine/src/renderer.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'engine/src/renderer.rs') diff --git a/engine/src/renderer.rs b/engine/src/renderer.rs index a04fd4f..725f208 100644 --- a/engine/src/renderer.rs +++ b/engine/src/renderer.rs @@ -169,7 +169,15 @@ pub enum Command ActivateShader(ObjectId), SetShaderBinding(ShaderBindingLocation, ShaderBindingValue), CreateTexture(AssetHandle), - CreateMesh(ObjectId, Mesh), + CreateMesh + { + obj_id: ObjectId, + + /// Optional mesh data. Must be included if `obj_id` is [`ObjectId::Sequential`]. + /// If `obj_id` is [`ObjectId::Asset`], this mesh data will be used instead of + /// the mesh data stored in the asset. + mesh: Option, + }, DrawMesh(ObjectId), SetPolygonModeConfig(PolygonModeConfig), } @@ -336,9 +344,9 @@ pub fn add_main_render_passes( continue; }; - let Some(mesh) = assets.get(mesh_asset) else { + if assets.get(mesh_asset).is_none() { continue; - }; + } debug_assert!(model_spec.material_names.len() <= 1); @@ -417,10 +425,10 @@ pub fn add_main_render_passes( } if !object_store.contains_with_id(&ObjectId::Asset(mesh_asset.id())) { - render_pass.commands.push(Command::CreateMesh( - ObjectId::Asset(mesh_asset.id()), - mesh.clone(), - )); + render_pass.commands.push(Command::CreateMesh { + obj_id: ObjectId::Asset(mesh_asset.id()), + mesh: None, + }); } render_pass -- cgit v1.2.3-18-g5258