diff options
Diffstat (limited to 'engine/src/ui/dear_imgui.rs')
| -rw-r--r-- | engine/src/ui/dear_imgui.rs | 123 |
1 files changed, 62 insertions, 61 deletions
diff --git a/engine/src/ui/dear_imgui.rs b/engine/src/ui/dear_imgui.rs index 0a50ff7..c5f7ce2 100644 --- a/engine/src/ui/dear_imgui.rs +++ b/engine/src/ui/dear_imgui.rs @@ -130,12 +130,14 @@ pub struct Extension impl Extension { + #[must_use] pub fn with_start_enabled(mut self, start_enabled: bool) -> Self { self.start_enabled = start_enabled; self } + #[must_use] pub fn with_settings_ini_file( mut self, settings_ini_file_path: Option<PathBuf>, @@ -164,10 +166,12 @@ impl ecs::extension::Extension for Extension tracing::error!("Failed to set path of imgui settings ini file: {err}"); } - assert!( - dear_imgui_rs::HAS_FREETYPE, - "Freetype font rasterizer support is not enabled" - ); + const { + assert!( + dear_imgui_rs::HAS_FREETYPE, + "Freetype font rasterizer support is not enabled" + ); + } unsafe { context.ctx.font_atlas().add_font_from_memory_ttf( @@ -223,8 +227,8 @@ fn handle_window_changed( .set_display_framebuffer_scale([hidpi_factor as f32, hidpi_factor as f32]); let window_size_logical = PhysicalSize { - width: window.inner_size.width as f64, - height: window.inner_size.height as f64, + width: f64::from(window.inner_size.width), + height: f64::from(window.inner_size.height), } .to_logical::<f64>(hidpi_factor); @@ -272,7 +276,7 @@ fn update( window_surface.id, assets, render_passes, - &shader_context, + shader_context, ) else { *state = State::NotInitialized; return Ok(()); @@ -341,11 +345,9 @@ fn initialize_context( shader_context: &ShaderContext, ) -> Option<(AssetHandle<ShaderModuleSource>, RenderingObjectId, Mesh)> { - let shader_asset = if let Some(shader_asset) = + let Some(shader_asset) = assets.get_handle_to_loaded::<ShaderModuleSource>(SHADER_ASSET_LABEL.clone()) - { - shader_asset - } else { + else { assets.store_with_label( SHADER_ASSET_LABEL.clone(), ShaderModuleSource { @@ -362,19 +364,21 @@ fn initialize_context( return None; }; - let hidpi_factor = window.scale_factor().round(); + #[allow(clippy::cast_possible_truncation)] + let hidpi_factor = window.scale_factor().round() as f32; context .ctx .get_io_mut() - .set_display_framebuffer_scale([hidpi_factor as f32, hidpi_factor as f32]); + .set_display_framebuffer_scale([hidpi_factor, hidpi_factor]); let window_size = Dimens { width: window.inner_size.width as f32, height: window.inner_size.height as f32, }; - let window_logical_size = window_size / (hidpi_factor as f32); + #[allow(clippy::cast_possible_truncation)] + let window_logical_size = window_size / hidpi_factor; context .ctx @@ -455,6 +459,7 @@ fn update_inputs( let mouse_pos = mouse.position.to_logical::<f64>(window.scale_factor()); + #[allow(clippy::cast_possible_truncation)] io.add_mouse_pos_event([mouse_pos.x as f32, mouse_pos.y as f32]); if !mouse.curr_tick_scroll_delta.is_zero() { @@ -610,8 +615,8 @@ fn add_drawing_render_pass( height: rect.rect.h.into(), }, offset: Vec2 { - x: rect.rect.x as u32, - y: rect.rect.y as u32, + x: u32::from(rect.rect.x), + y: u32::from(rect.rect.y), }, }, }); @@ -715,7 +720,7 @@ fn add_drawing_render_pass( }, MeshNamedVertexAttr { label: VertexLabel::Color, - value: vertex.rgba().map(|elem| (elem as f32) / 255.0), + value: vertex.rgba().map(|elem| f32::from(elem) / 255.0), }, MeshNamedVertexAttr { label: VertexLabel::UvFromTopLeft, @@ -733,51 +738,47 @@ fn add_drawing_render_pass( }); for command in draw_list.commands() { - match command { - ImguiDrawCmd::Elements { count, cmd_params } => { - let Some(scissor_box) = - calc_draw_cmd_scissor_box(draw_data, &cmd_params) - else { - continue; - }; + if let ImguiDrawCmd::Elements { count, cmd_params } = command { + let Some(scissor_box) = calc_draw_cmd_scissor_box(draw_data, &cmd_params) + else { + continue; + }; - let tex_id = cmd_params.texture_id; + let tex_id = cmd_params.texture_id; - let Some(texture_object_id) = - texture_lookup.get(TextureLookupId::from(tex_id)) - else { - tracing::error!( - "Unknown texture {}. Skipping skipping draw command", - tex_id.id() - ); - continue; - }; + let Some(texture_object_id) = + texture_lookup.get(TextureLookupId::from(tex_id)) + else { + tracing::error!( + "Unknown texture {}. Skipping skipping draw command", + tex_id.id() + ); + continue; + }; - render_pass.commands.extend([ - RenderingCommand::UpdateDrawProperties( - DrawProperties { scissor_box, ..Default::default() }, - DrawPropertiesUpdateFlags::SCISSOR_BOX, - ), - RenderingCommand::SetShaderBinding( - shader_object_id, - shader_cursor.field("main_texture").binding( - ShaderBindingValue::Texture( - *texture_object_id, - ShaderBindingTextureKind::Texture2D, - ), - )?, - ), - RenderingCommand::DrawMesh( - mesh_obj_id, - DrawMeshOptions::builder() - .element_offset(cmd_params.idx_offset.try_into().unwrap()) - .vertex_offset(cmd_params.vtx_offset.try_into().unwrap()) - .element_cnt(count.try_into().unwrap()) - .build(), - ), - ]); - } - _ => {} + render_pass.commands.extend([ + RenderingCommand::UpdateDrawProperties( + DrawProperties { scissor_box, ..Default::default() }, + DrawPropertiesUpdateFlags::SCISSOR_BOX, + ), + RenderingCommand::SetShaderBinding( + shader_object_id, + shader_cursor.field("main_texture").binding( + ShaderBindingValue::Texture( + *texture_object_id, + ShaderBindingTextureKind::Texture2D, + ), + )?, + ), + RenderingCommand::DrawMesh( + mesh_obj_id, + DrawMeshOptions::builder() + .element_offset(cmd_params.idx_offset.try_into().unwrap()) + .vertex_offset(cmd_params.vtx_offset.try_into().unwrap()) + .element_cnt(count.try_into().unwrap()) + .build(), + ), + ]); } } } @@ -973,12 +974,12 @@ mod inner_context_wrapper ctx.io_mut() .set_backend_flags(dear_imgui_rs::BackendFlags::RENDERER_HAS_TEXTURES); - let _renderer_consumer = ctx.create_renderer_consumer().unwrap(); + let renderer_consumer = ctx.create_renderer_consumer().unwrap(); Self { ctx, frame: null_mut(), - _renderer_consumer, + _renderer_consumer: renderer_consumer, } } |
