summaryrefslogtreecommitdiff
path: root/engine/src/ui/dear_imgui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/ui/dear_imgui.rs')
-rw-r--r--engine/src/ui/dear_imgui.rs123
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,
}
}