From afaa14560f03840fb437fec0ba034064df6773e6 Mon Sep 17 00:00:00 2001 From: Orchaldir Date: Wed, 1 Nov 2023 19:35:15 +0100 Subject: [PATCH] [#46] Improve EyewearConfig --- .../src/rendering/config/equipment/eyewear.rs | 5 +++++ rpg_tools_rendering/src/rendering/config/example.rs | 1 + rpg_tools_rendering/src/rendering/equipment/eyewear.rs | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/rpg_tools_rendering/src/rendering/config/equipment/eyewear.rs b/rpg_tools_rendering/src/rendering/config/equipment/eyewear.rs index 48fa36fe..5ed0b2c0 100644 --- a/rpg_tools_rendering/src/rendering/config/equipment/eyewear.rs +++ b/rpg_tools_rendering/src/rendering/config/equipment/eyewear.rs @@ -5,6 +5,7 @@ use rpg_tools_core::model::equipment::appearance::eyewear::FrameType; pub struct EyewearConfig { pub bridge_factor: f32, pub radius_factor: f32, + pub radius_y_factor: f32, pub thickness_horn: f32, pub thickness_rimmed: f32, pub thickness_wire: f32, @@ -15,6 +16,10 @@ impl EyewearConfig { (eye_radius as f32 * self.radius_factor) as u32 } + pub fn get_radius_y(&self, radius_x: u32) -> u32 { + (radius_x as f32 * self.radius_y_factor) as u32 + } + pub fn get_bridge_height(&self, width: u32, frame_type: FrameType) -> u32 { let thickness = match frame_type { FrameType::Rimless => self.thickness_wire, diff --git a/rpg_tools_rendering/src/rendering/config/example.rs b/rpg_tools_rendering/src/rendering/config/example.rs index fd54f5dc..555fa58e 100644 --- a/rpg_tools_rendering/src/rendering/config/example.rs +++ b/rpg_tools_rendering/src/rendering/config/example.rs @@ -146,6 +146,7 @@ pub fn create_config() -> RenderConfig { eyewear: EyewearConfig { bridge_factor: 0.1, radius_factor: 1.4, + radius_y_factor: 0.8, thickness_horn: 5.0, thickness_rimmed: 3.0, thickness_wire: 1.0, diff --git a/rpg_tools_rendering/src/rendering/equipment/eyewear.rs b/rpg_tools_rendering/src/rendering/equipment/eyewear.rs index 41882027..110ff97d 100644 --- a/rpg_tools_rendering/src/rendering/equipment/eyewear.rs +++ b/rpg_tools_rendering/src/rendering/equipment/eyewear.rs @@ -70,7 +70,7 @@ fn render_lens( style, config.eyewear.get_frame_thickness(style.frame_type), ); - let radius_y = (radius as f32 * 0.8) as u32; + let radius_y = config.eyewear.get_radius_y(radius); match style.lens_shape { LensShape::Circle => renderer.render_circle(center, radius, &options),