diff --git a/assets/world/manifests/trees/birch.ron b/assets/world/manifests/trees/birch.ron deleted file mode 100644 index 0eaa218e1a..0000000000 --- a/assets/world/manifests/trees/birch.ron +++ /dev/null @@ -1,52 +0,0 @@ -#![enable(unwrap_newtypes)] - -[ - ( - specifier: "world.tree.birch.1", - center: (12, 9, 10) - ), - ( - specifier: "world.tree.birch.2", - center: (12, 10, 10) - ), - ( - specifier: "world.tree.birch.3", - center: (9, 10, 10) - ), - ( - specifier: "world.tree.birch.4", - center: (9, 10, 10) - ), - ( - specifier: "world.tree.birch.5", - center: (9, 10, 10) - ), - ( - specifier: "world.tree.birch.6", - center: (9, 9, 10) - ), - ( - specifier: "world.tree.birch.7", - center: (10, 10, 10) - ), - ( - specifier: "world.tree.birch.8", - center: (9, 9, 10) - ), - ( - specifier: "world.tree.birch.9", - center: (9, 10, 10) - ), - ( - specifier: "world.tree.birch.10", - center: (9, 10, 10) - ), - ( - specifier: "world.tree.birch.11", - center: (9, 10, 10) - ), - ( - specifier: "world.tree.birch.12", - center: (9, 10, 10) - ), -] diff --git a/assets/world/tree/birch/1.vox b/assets/world/tree/birch/1.vox deleted file mode 100644 index 87d7786a9e..0000000000 Binary files a/assets/world/tree/birch/1.vox and /dev/null differ diff --git a/assets/world/tree/birch/10.vox b/assets/world/tree/birch/10.vox deleted file mode 100644 index 6bb49f83ad..0000000000 Binary files a/assets/world/tree/birch/10.vox and /dev/null differ diff --git a/assets/world/tree/birch/11.vox b/assets/world/tree/birch/11.vox deleted file mode 100644 index 19d6389445..0000000000 Binary files a/assets/world/tree/birch/11.vox and /dev/null differ diff --git a/assets/world/tree/birch/12.vox b/assets/world/tree/birch/12.vox deleted file mode 100644 index 19d6389445..0000000000 Binary files a/assets/world/tree/birch/12.vox and /dev/null differ diff --git a/assets/world/tree/birch/2.vox b/assets/world/tree/birch/2.vox deleted file mode 100644 index e0e1c3474e..0000000000 Binary files a/assets/world/tree/birch/2.vox and /dev/null differ diff --git a/assets/world/tree/birch/3.vox b/assets/world/tree/birch/3.vox deleted file mode 100644 index d881103e18..0000000000 Binary files a/assets/world/tree/birch/3.vox and /dev/null differ diff --git a/assets/world/tree/birch/4.vox b/assets/world/tree/birch/4.vox deleted file mode 100644 index 9ed042e3b6..0000000000 Binary files a/assets/world/tree/birch/4.vox and /dev/null differ diff --git a/assets/world/tree/birch/5.vox b/assets/world/tree/birch/5.vox deleted file mode 100644 index 485207b0e2..0000000000 Binary files a/assets/world/tree/birch/5.vox and /dev/null differ diff --git a/assets/world/tree/birch/6.vox b/assets/world/tree/birch/6.vox deleted file mode 100644 index 06020496d1..0000000000 Binary files a/assets/world/tree/birch/6.vox and /dev/null differ diff --git a/assets/world/tree/birch/7.vox b/assets/world/tree/birch/7.vox deleted file mode 100644 index 639caf3c83..0000000000 Binary files a/assets/world/tree/birch/7.vox and /dev/null differ diff --git a/assets/world/tree/birch/8.vox b/assets/world/tree/birch/8.vox deleted file mode 100644 index 45cdb7226c..0000000000 Binary files a/assets/world/tree/birch/8.vox and /dev/null differ diff --git a/assets/world/tree/birch/9.vox b/assets/world/tree/birch/9.vox deleted file mode 100644 index 3fee0ea5c0..0000000000 Binary files a/assets/world/tree/birch/9.vox and /dev/null differ diff --git a/world/src/layer/tree.rs b/world/src/layer/tree.rs index 05e0f5bc49..1e5e609f93 100644 --- a/world/src/layer/tree.rs +++ b/world/src/layer/tree.rs @@ -143,7 +143,15 @@ pub fn apply_trees_to(canvas: &mut Canvas, dynamic_rng: &mut impl Rng) { StructureBlock::PineLeaves, ); }, - ForestKind::Birch => *BIRCHES, + ForestKind::Birch => { + break 'model TreeModel::Procedural( + ProceduralTree::generate( + TreeConfig::birch(&mut RandomPerm::new(seed), scale), + &mut RandomPerm::new(seed), + ), + StructureBlock::TemperateLeaves, + ); + }, ForestKind::Mangrove => { break 'model TreeModel::Procedural( ProceduralTree::generate( @@ -434,6 +442,31 @@ impl TreeConfig { } } + pub fn birch(rng: &mut impl Rng, scale: f32) -> Self { + let scale = scale * (0.8 + rng.gen::().powi(2) * 0.5); + let log_scale = 1.0 + scale.log2().max(0.0); + + Self { + trunk_len: 24.0 * scale, + trunk_radius: 1.2 * scale, + branch_child_len: 0.4, + branch_child_radius: 0.75, + branch_child_radius_lerp: true, + leaf_radius: 4.0 * log_scale..5.0 * log_scale, + leaf_radius_scaled: 0.0, + straightness: 0.6, + max_depth: 4, + splits: 1.75..2.5, + split_range: 0.6..1.2, + branch_len_bias: 0.0, + leaf_vertical_scale: 0.5, + proportionality: 0.0, + inhabited: false, + hanging_sprites: &[(0.00007, SpriteKind::Beehive)], + wood_color: Rgb::new(220, 170, 160), + } + } + pub fn acacia(rng: &mut impl Rng, scale: f32) -> Self { let scale = scale * (0.9 + rng.gen::().powi(4) * 0.75); let log_scale = 1.0 + scale.log2().max(0.0);