From 36cab14859940c1745e7e75402330a53ac22ad60 Mon Sep 17 00:00:00 2001 From: Treeco <5021038-Treeco@users.noreply.gitlab.com> Date: Sat, 23 Mar 2024 17:22:44 +0000 Subject: [PATCH] Addressed comments --- common/src/lod.rs | 4 +-- voxygen/src/render/pipelines/lod_object.rs | 4 +-- voxygen/src/scene/lod.rs | 30 +++++++++------------- world/src/lib.rs | 10 ++++---- 4 files changed, 21 insertions(+), 27 deletions(-) diff --git a/common/src/lod.rs b/common/src/lod.rs index 2878318229..6c420de168 100644 --- a/common/src/lod.rs +++ b/common/src/lod.rs @@ -8,7 +8,7 @@ pub const ZONE_SIZE: u32 = 32; bitflags::bitflags! { #[derive(Debug, Clone, Copy, Serialize, Deserialize)] - pub struct Flags: u8 { + pub struct InstFlags: u8 { const SNOW_COVERED = 0b00000001; const GLOW = 0b00000010; } @@ -38,7 +38,7 @@ pub enum ObjectKind { pub struct Object { pub kind: ObjectKind, pub pos: Vec3, - pub flags: Flags, + pub flags: InstFlags, pub color: Rgb, } diff --git a/voxygen/src/render/pipelines/lod_object.rs b/voxygen/src/render/pipelines/lod_object.rs index 86eb4e962c..074d797477 100644 --- a/voxygen/src/render/pipelines/lod_object.rs +++ b/voxygen/src/render/pipelines/lod_object.rs @@ -18,7 +18,7 @@ impl Vertex { pos: Vec3, norm: Vec3, col: Rgb, - flags: crate::scene::lod::Flags, + flags: crate::scene::lod::VertexFlags, ) -> Self { Self { pos: pos.into_array(), @@ -53,7 +53,7 @@ pub struct Instance { } impl Instance { - pub fn new(inst_pos: Vec3, col: Rgb, flags: common::lod::Flags) -> Self { + pub fn new(inst_pos: Vec3, col: Rgb, flags: common::lod::InstFlags) -> Self { Self { inst_pos: inst_pos.into_array(), inst_col: srgb_to_linear(col.map(|c| c as f32 / 255.0)).into_array(), diff --git a/voxygen/src/scene/lod.rs b/voxygen/src/scene/lod.rs index d57b826038..c895006829 100644 --- a/voxygen/src/scene/lod.rs +++ b/voxygen/src/scene/lod.rs @@ -25,7 +25,7 @@ const MAX_OBJECT_RADIUS: i32 = 64; bitflags::bitflags! { #[derive(Debug, Clone, Copy)] - pub struct Flags: u8 { + pub struct VertexFlags: u8 { // Use instance not vertex colour const INST_COLOR = 0b00000001; // Glow! @@ -276,25 +276,19 @@ fn make_lod_object(name: &str, renderer: &mut Renderer) -> Model().ok()); + let color = color + .next() + .and_then(|r| Some(Rgb::new(r, color.next()?, color.next()?))) + .unwrap_or(Rgb::broadcast(127)); + let color = srgb_to_linear(color.map(|c| (c as f32 / 255.0))); + let flags = match objname { + "InstCol" => VertexFlags::INST_COLOR, + "Glow" => VertexFlags::GLOW, + _ => VertexFlags::empty(), + }; obj.triangles().map(move |vs| { let [a, b, c] = vs.map(|v| { - let color = { - let color = objname - .split('_') - .filter_map(|x| x.parse::().ok()) - .collect::>(); - if color.len() >= 3 { - Rgb::new(color[0], color[1], color[2]) - } else { - Rgb::broadcast(127) - } - }; - let color = srgb_to_linear(color.map(|c| (c as f32 / 255.0))); - let flags = match objname { - "InstCol" => Flags::INST_COLOR, - "Glow" => Flags::GLOW, - _ => Flags::empty(), - }; LodObjectVertex::new( v.position().into(), v.normal().unwrap_or([0.0, 0.0, 1.0]).into(), diff --git a/world/src/lib.rs b/world/src/lib.rs index 020a64a7f7..f6d1ca23c2 100644 --- a/world/src/lib.rs +++ b/world/src/lib.rs @@ -640,11 +640,11 @@ impl World { rpos.map(|e| e as i16).with_z(col.alt as i16) } }, - flags: lod::Flags::empty() + flags: lod::InstFlags::empty() | if col.snow_cover { - lod::Flags::SNOW_COVERED + lod::InstFlags::SNOW_COVERED } else { - lod::Flags::empty() + lod::InstFlags::empty() }, color: { let field = crate::util::RandomField::new(tree.seed); @@ -713,9 +713,9 @@ impl World { .map(|e| e as i16) .with_z(self.sim().get_alt_approx(wpos2d).unwrap_or(0.0) as i16), flags: if column.snow_cover { - lod::Flags::SNOW_COVERED + lod::InstFlags::SNOW_COVERED } else { - lod::Flags::empty() + lod::InstFlags::empty() }, color, }),