mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Better grass and lily distribution
This commit is contained in:
parent
353ccc5bce
commit
2ce88ac398
@ -795,6 +795,15 @@ pub fn apply_caverns_to<R: Rng>(canvas: &mut Canvas, dynamic_rng: &mut R) {
|
|||||||
)
|
)
|
||||||
.mul(16.0 + (cavern_avg_top - cavern_avg_bottom) as f64 * 0.35);
|
.mul(16.0 + (cavern_avg_top - cavern_avg_bottom) as f64 * 0.35);
|
||||||
|
|
||||||
|
let plant_factor = info
|
||||||
|
.index()
|
||||||
|
.noise
|
||||||
|
.cave_nz
|
||||||
|
.get(wpos2d.map(|e| e as f64 * 0.015).into_array())
|
||||||
|
.add(1.0)
|
||||||
|
.mul(0.5)
|
||||||
|
.powf(2.0);
|
||||||
|
|
||||||
let is_vine = |wpos: Vec3<f32>, dynamic_rng: &mut R| {
|
let is_vine = |wpos: Vec3<f32>, dynamic_rng: &mut R| {
|
||||||
let wpos = wpos + wpos.xy().yx().with_z(0.0) * 0.2; // A little twist
|
let wpos = wpos + wpos.xy().yx().with_z(0.0) * 0.2; // A little twist
|
||||||
let dims = Vec2::new(7.0, 256.0); // Long and thin
|
let dims = Vec2::new(7.0, 256.0); // Long and thin
|
||||||
@ -835,7 +844,7 @@ pub fn apply_caverns_to<R: Rng>(canvas: &mut Canvas, dynamic_rng: &mut R) {
|
|||||||
let water_level = cavern_avg_bottom as i32 + 16;
|
let water_level = cavern_avg_bottom as i32 + 16;
|
||||||
|
|
||||||
let cavern_top = cavern_top as i32;
|
let cavern_top = cavern_top as i32;
|
||||||
let mut on_ground = true;
|
let mut last_kind = BlockKind::Rock;
|
||||||
for z in cavern_bottom - 1..cavern_top {
|
for z in cavern_bottom - 1..cavern_top {
|
||||||
use SpriteKind::*;
|
use SpriteKind::*;
|
||||||
|
|
||||||
@ -844,7 +853,7 @@ pub fn apply_caverns_to<R: Rng>(canvas: &mut Canvas, dynamic_rng: &mut R) {
|
|||||||
|
|
||||||
let block = if z < cavern_bottom {
|
let block = if z < cavern_bottom {
|
||||||
if z > water_level + dynamic_rng.gen_range(4..16) {
|
if z > water_level + dynamic_rng.gen_range(4..16) {
|
||||||
Block::new(BlockKind::Leaves, Rgb::new(40, 85, 70))
|
Block::new(BlockKind::Grass, Rgb::new(10, 75, 90))
|
||||||
} else {
|
} else {
|
||||||
Block::new(BlockKind::Rock, Rgb::new(50, 40, 10))
|
Block::new(BlockKind::Rock, Rgb::new(50, 40, 10))
|
||||||
}
|
}
|
||||||
@ -871,14 +880,19 @@ pub fn apply_caverns_to<R: Rng>(canvas: &mut Canvas, dynamic_rng: &mut R) {
|
|||||||
} else if z < water_level {
|
} else if z < water_level {
|
||||||
Block::water(SpriteKind::Empty).with_sprite(
|
Block::water(SpriteKind::Empty).with_sprite(
|
||||||
if z == cavern_bottom + floor && dynamic_rng.gen_bool(0.01) {
|
if z == cavern_bottom + floor && dynamic_rng.gen_bool(0.01) {
|
||||||
SpriteKind::CaveMushroom
|
*[
|
||||||
|
SpriteKind::Seagrass,
|
||||||
|
SpriteKind::SeaGrapes,
|
||||||
|
SpriteKind::SeaweedTemperate,
|
||||||
|
SpriteKind::StonyCoral,
|
||||||
|
].choose(dynamic_rng).unwrap()
|
||||||
} else {
|
} else {
|
||||||
SpriteKind::Empty
|
SpriteKind::Empty
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
} else if z == water_level && dynamic_rng.gen_bool(0.01) && !on_ground {
|
} else if z == water_level && dynamic_rng.gen_bool(Lerp::lerp(0.0, 0.05, plant_factor)) && last_kind == BlockKind::Water {
|
||||||
Block::air(SpriteKind::CavernLillypadBlue)
|
Block::air(SpriteKind::CavernLillypadBlue)
|
||||||
} else if z == cavern_bottom + floor && dynamic_rng.gen_bool(0.1) && on_ground {
|
} else if z == cavern_bottom + floor && dynamic_rng.gen_bool(Lerp::lerp(0.0, 0.5, plant_factor)) && last_kind == BlockKind::Grass {
|
||||||
Block::air(
|
Block::air(
|
||||||
*if dynamic_rng.gen_bool(0.9) {
|
*if dynamic_rng.gen_bool(0.9) {
|
||||||
&[
|
&[
|
||||||
@ -919,7 +933,7 @@ pub fn apply_caverns_to<R: Rng>(canvas: &mut Canvas, dynamic_rng: &mut R) {
|
|||||||
Block::empty()
|
Block::empty()
|
||||||
};
|
};
|
||||||
|
|
||||||
on_ground |= block.is_solid();
|
last_kind = block.kind();
|
||||||
|
|
||||||
let _ = canvas.set(wpos, block);
|
let _ = canvas.set(wpos, block);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user