From efc7dc08596d7fe35dcd2e589a8336282a4d5f6f Mon Sep 17 00:00:00 2001 From: Markus Ort <39794659+MarkusTheOrt@users.noreply.github.com> Date: Thu, 16 Nov 2023 22:31:25 +0100 Subject: [PATCH] Fix panic when using image in UiMaterial (#10591) # Objective - Fix the panic on using Images in UiMaterials due to assets not being loaded. - Fixes #10513 ## Solution - add `let else` statement that `return`s or `continue`s instead of unwrapping, causing a panic. --- crates/bevy_ui/src/render/ui_material_pipeline.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/bevy_ui/src/render/ui_material_pipeline.rs b/crates/bevy_ui/src/render/ui_material_pipeline.rs index 1188594282..83ef5ef592 100644 --- a/crates/bevy_ui/src/render/ui_material_pipeline.rs +++ b/crates/bevy_ui/src/render/ui_material_pipeline.rs @@ -298,10 +298,9 @@ impl RenderCommand

materials: SystemParamItem<'w, '_, Self::Param>, pass: &mut TrackedRenderPass<'w>, ) -> RenderCommandResult { - let material = materials - .into_inner() - .get(&material_handle.material) - .unwrap(); + let Some(material) = materials.into_inner().get(&material_handle.material) else { + return RenderCommandResult::Failure; + }; pass.set_bind_group(I, &material.bind_group, &[]); RenderCommandResult::Success } @@ -732,7 +731,9 @@ pub fn queue_ui_material_nodes( let draw_function = draw_functions.read().id::>(); for (entity, extracted_uinode) in extracted_uinodes.uinodes.iter() { - let material = render_materials.get(&extracted_uinode.material).unwrap(); + let Some(material) = render_materials.get(&extracted_uinode.material) else { + continue; + }; for (view, mut transparent_phase) in &mut views { let pipeline = pipelines.specialize( &pipeline_cache,