diff --git a/assets/voxygen/voxel/sprite/cacti/barrel_cactus.vox b/assets/voxygen/voxel/sprite/cacti/barrel_cactus.vox new file mode 100644 index 0000000000..0d89f0a4cb Binary files /dev/null and b/assets/voxygen/voxel/sprite/cacti/barrel_cactus.vox differ diff --git a/assets/voxygen/voxel/sprite/cacti/large_cactus.vox b/assets/voxygen/voxel/sprite/cacti/large_cactus.vox new file mode 100644 index 0000000000..3a2d5e6dd5 Binary files /dev/null and b/assets/voxygen/voxel/sprite/cacti/large_cactus.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers.vox b/assets/voxygen/voxel/sprite/flowers/flower_blue_1.vox similarity index 90% rename from assets/voxygen/voxel/sprite/flowers.vox rename to assets/voxygen/voxel/sprite/flowers/flower_blue_1.vox index f29d16239a..f1818ab24c 100644 Binary files a/assets/voxygen/voxel/sprite/flowers.vox and b/assets/voxygen/voxel/sprite/flowers/flower_blue_1.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_blue_2.vox b/assets/voxygen/voxel/sprite/flowers/flower_blue_2.vox new file mode 100644 index 0000000000..b6b0bf5f6d Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_blue_2.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_pink_1.vox b/assets/voxygen/voxel/sprite/flowers/flower_pink_1.vox new file mode 100644 index 0000000000..6df5c49be6 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_pink_1.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_pink_2.vox b/assets/voxygen/voxel/sprite/flowers/flower_pink_2.vox new file mode 100644 index 0000000000..cb963ef509 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_pink_2.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_pink_3.vox b/assets/voxygen/voxel/sprite/flowers/flower_pink_3.vox new file mode 100644 index 0000000000..ffc7616288 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_pink_3.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_purple_1.vox b/assets/voxygen/voxel/sprite/flowers/flower_purple_1.vox new file mode 100644 index 0000000000..613cae4001 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_purple_1.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_red_1.vox b/assets/voxygen/voxel/sprite/flowers/flower_red_1.vox new file mode 100644 index 0000000000..d54146b869 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_red_1.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_white_1.vox b/assets/voxygen/voxel/sprite/flowers/flower_white_1.vox new file mode 100644 index 0000000000..998e74b278 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_white_1.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/flower_yellow_1.vox b/assets/voxygen/voxel/sprite/flowers/flower_yellow_1.vox new file mode 100644 index 0000000000..3f63a03729 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/flower_yellow_1.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/sunflower_1.vox b/assets/voxygen/voxel/sprite/flowers/sunflower_1.vox new file mode 100644 index 0000000000..f56e0f478c Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/sunflower_1.vox differ diff --git a/assets/voxygen/voxel/sprite/flowers/sunflower_2.vox b/assets/voxygen/voxel/sprite/flowers/sunflower_2.vox new file mode 100644 index 0000000000..6d221bd5a6 Binary files /dev/null and b/assets/voxygen/voxel/sprite/flowers/sunflower_2.vox differ diff --git a/assets/voxygen/voxel/sprite/fruit/apple.vox b/assets/voxygen/voxel/sprite/fruit/apple.vox new file mode 100644 index 0000000000..860e0fb3b8 Binary files /dev/null and b/assets/voxygen/voxel/sprite/fruit/apple.vox differ diff --git a/assets/voxygen/voxel/sprite/fruit/apple_half.vox b/assets/voxygen/voxel/sprite/fruit/apple_half.vox new file mode 100644 index 0000000000..58cfcb80cf Binary files /dev/null and b/assets/voxygen/voxel/sprite/fruit/apple_half.vox differ diff --git a/assets/voxygen/voxel/sprite/grass-0.vox b/assets/voxygen/voxel/sprite/grass-0.vox deleted file mode 100644 index e7cf80970b..0000000000 Binary files a/assets/voxygen/voxel/sprite/grass-0.vox and /dev/null differ diff --git a/assets/voxygen/voxel/sprite/grass-1.vox b/assets/voxygen/voxel/sprite/grass-1.vox deleted file mode 100644 index 96ee8daf99..0000000000 Binary files a/assets/voxygen/voxel/sprite/grass-1.vox and /dev/null differ diff --git a/assets/voxygen/voxel/sprite/grass-2.vox b/assets/voxygen/voxel/sprite/grass-2.vox deleted file mode 100644 index 28289d1e4d..0000000000 Binary files a/assets/voxygen/voxel/sprite/grass-2.vox and /dev/null differ diff --git a/assets/voxygen/voxel/sprite/grass-3.vox b/assets/voxygen/voxel/sprite/grass-3.vox deleted file mode 100644 index 28289d1e4d..0000000000 Binary files a/assets/voxygen/voxel/sprite/grass-3.vox and /dev/null differ diff --git a/assets/voxygen/voxel/sprite/grass-4.vox b/assets/voxygen/voxel/sprite/grass-4.vox deleted file mode 100644 index fc40908ee6..0000000000 Binary files a/assets/voxygen/voxel/sprite/grass-4.vox and /dev/null differ diff --git a/assets/voxygen/voxel/sprite/grass-5.vox b/assets/voxygen/voxel/sprite/grass-5.vox deleted file mode 100644 index 835eb6e425..0000000000 Binary files a/assets/voxygen/voxel/sprite/grass-5.vox and /dev/null differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_long_1.vox b/assets/voxygen/voxel/sprite/grass/grass_long_1.vox new file mode 100644 index 0000000000..af20632807 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_long_1.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_long_2.vox b/assets/voxygen/voxel/sprite/grass/grass_long_2.vox new file mode 100644 index 0000000000..4d279b6771 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_long_2.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_long_3.vox b/assets/voxygen/voxel/sprite/grass/grass_long_3.vox new file mode 100644 index 0000000000..fc5106a6c0 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_long_3.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_long_4.vox b/assets/voxygen/voxel/sprite/grass/grass_long_4.vox new file mode 100644 index 0000000000..1837f425e0 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_long_4.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_long_5.vox b/assets/voxygen/voxel/sprite/grass/grass_long_5.vox new file mode 100644 index 0000000000..936b4e2ce0 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_long_5.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_med_1.vox b/assets/voxygen/voxel/sprite/grass/grass_med_1.vox new file mode 100644 index 0000000000..468cd2247a Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_med_1.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_med_2.vox b/assets/voxygen/voxel/sprite/grass/grass_med_2.vox new file mode 100644 index 0000000000..197b3273b9 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_med_2.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_med_3.vox b/assets/voxygen/voxel/sprite/grass/grass_med_3.vox new file mode 100644 index 0000000000..c5a8b3c7ad Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_med_3.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_med_4.vox b/assets/voxygen/voxel/sprite/grass/grass_med_4.vox new file mode 100644 index 0000000000..69abb22acb Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_med_4.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_med_5.vox b/assets/voxygen/voxel/sprite/grass/grass_med_5.vox new file mode 100644 index 0000000000..9df3b40b4a Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_med_5.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_short_1.vox b/assets/voxygen/voxel/sprite/grass/grass_short_1.vox new file mode 100644 index 0000000000..49c92d1ff2 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_short_1.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_short_2.vox b/assets/voxygen/voxel/sprite/grass/grass_short_2.vox new file mode 100644 index 0000000000..af39651511 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_short_2.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_short_3.vox b/assets/voxygen/voxel/sprite/grass/grass_short_3.vox new file mode 100644 index 0000000000..c12fab47c1 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_short_3.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_short_4.vox b/assets/voxygen/voxel/sprite/grass/grass_short_4.vox new file mode 100644 index 0000000000..929f4dd1a5 Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_short_4.vox differ diff --git a/assets/voxygen/voxel/sprite/grass/grass_short_5.vox b/assets/voxygen/voxel/sprite/grass/grass_short_5.vox new file mode 100644 index 0000000000..f8b23ffaba Binary files /dev/null and b/assets/voxygen/voxel/sprite/grass/grass_short_5.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_1.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_1.vox new file mode 100644 index 0000000000..76cb76ddab Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_1.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_10.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_10.vox new file mode 100644 index 0000000000..37cbba521a Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_10.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_2.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_2.vox new file mode 100644 index 0000000000..cba1e4b955 Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_2.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_3.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_3.vox new file mode 100644 index 0000000000..2a18293a4b Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_3.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_4.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_4.vox new file mode 100644 index 0000000000..7275f215ae Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_4.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_5.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_5.vox new file mode 100644 index 0000000000..2f689c9074 Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_5.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_6.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_6.vox new file mode 100644 index 0000000000..de8078669a Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_6.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_7.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_7.vox new file mode 100644 index 0000000000..f0811626cd Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_7.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_8.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_8.vox new file mode 100644 index 0000000000..2d4664f10e Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_8.vox differ diff --git a/assets/voxygen/voxel/sprite/velorite_small/velorite_9.vox b/assets/voxygen/voxel/sprite/velorite_small/velorite_9.vox new file mode 100644 index 0000000000..523c292e9a Binary files /dev/null and b/assets/voxygen/voxel/sprite/velorite_small/velorite_9.vox differ diff --git a/assets/voxygen/voxel/sprite/wheat.vox b/assets/voxygen/voxel/sprite/wheat.vox deleted file mode 100644 index 003281024e..0000000000 Binary files a/assets/voxygen/voxel/sprite/wheat.vox and /dev/null differ diff --git a/assets/world/tree/fruit/1.vox b/assets/world/tree/fruit/1.vox index 0648a279aa..4ed90a0b5b 100644 Binary files a/assets/world/tree/fruit/1.vox and b/assets/world/tree/fruit/1.vox differ diff --git a/assets/world/tree/fruit/2.vox b/assets/world/tree/fruit/2.vox index 3369c6c853..c47268df49 100644 Binary files a/assets/world/tree/fruit/2.vox and b/assets/world/tree/fruit/2.vox differ diff --git a/assets/world/tree/fruit/3.vox b/assets/world/tree/fruit/3.vox index 634099a2a4..f7d5fc915b 100644 Binary files a/assets/world/tree/fruit/3.vox and b/assets/world/tree/fruit/3.vox differ diff --git a/assets/world/tree/fruit/4.vox b/assets/world/tree/fruit/4.vox index 742845e60c..f4499f27ba 100644 Binary files a/assets/world/tree/fruit/4.vox and b/assets/world/tree/fruit/4.vox differ diff --git a/assets/world/tree/fruit/5.vox b/assets/world/tree/fruit/5.vox index b6b682ae48..5b649b1db7 100644 Binary files a/assets/world/tree/fruit/5.vox and b/assets/world/tree/fruit/5.vox differ diff --git a/assets/world/tree/fruit/6.vox b/assets/world/tree/fruit/6.vox index 936d825a06..cb5048186a 100644 Binary files a/assets/world/tree/fruit/6.vox and b/assets/world/tree/fruit/6.vox differ diff --git a/common/src/terrain/block.rs b/common/src/terrain/block.rs index c7276f952c..fbd5d035f4 100644 --- a/common/src/terrain/block.rs +++ b/common/src/terrain/block.rs @@ -10,18 +10,38 @@ pub enum BlockKind { Normal, Dense, Water, - Wheat, + LargeCactus, + BarrelCactus, + BlueFlower, + PinkFlower, + PurpleFlower, + RedFlower, + WhiteFlower, + YellowFlower, + Sunflower, LongGrass, - Flowers, + MediumGrass, + ShortGrass, + Apple, } impl BlockKind { pub fn is_air(&self) -> bool { match self { BlockKind::Air => true, - BlockKind::Wheat => true, + BlockKind::LargeCactus => false, + BlockKind::BarrelCactus => true, + BlockKind::BlueFlower => true, + BlockKind::PinkFlower => true, + BlockKind::PurpleFlower => true, + BlockKind::RedFlower => true, + BlockKind::WhiteFlower => true, + BlockKind::YellowFlower => true, + BlockKind::Sunflower => true, BlockKind::LongGrass => true, - BlockKind::Flowers => true, + BlockKind::MediumGrass => true, + BlockKind::ShortGrass => true, + BlockKind::Apple => true, _ => false, } } @@ -37,9 +57,19 @@ impl BlockKind { match self { BlockKind::Air => false, BlockKind::Water => false, - BlockKind::Wheat => false, + BlockKind::LargeCactus => false, + BlockKind::BarrelCactus => false, + BlockKind::BlueFlower => false, + BlockKind::PinkFlower => false, + BlockKind::PurpleFlower => false, + BlockKind::RedFlower => false, + BlockKind::WhiteFlower => false, + BlockKind::YellowFlower => false, + BlockKind::Sunflower => false, BlockKind::LongGrass => false, - BlockKind::Flowers => false, + BlockKind::MediumGrass => false, + BlockKind::ShortGrass => false, + BlockKind::Apple => false, _ => true, } } @@ -48,9 +78,19 @@ impl BlockKind { match self { BlockKind::Air => false, BlockKind::Water => false, - BlockKind::Wheat => false, + BlockKind::LargeCactus => true, + BlockKind::BarrelCactus => true, + BlockKind::BlueFlower => false, + BlockKind::PinkFlower => false, + BlockKind::PurpleFlower => false, + BlockKind::RedFlower => false, + BlockKind::WhiteFlower => false, + BlockKind::YellowFlower => false, + BlockKind::Sunflower => false, BlockKind::LongGrass => false, - BlockKind::Flowers => false, + BlockKind::MediumGrass => false, + BlockKind::ShortGrass => false, + BlockKind::Apple => true, _ => true, } } diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs index b773699c7c..d01e5e52fa 100644 --- a/voxygen/src/scene/terrain.rs +++ b/voxygen/src/scene/terrain.rs @@ -24,7 +24,7 @@ struct TerrainChunk { // GPU data opaque_model: Model, fluid_model: Model, - sprite_instances: HashMap>, + sprite_instances: HashMap<(BlockKind, usize), Instances>, locals: Consts, visible: bool, @@ -43,19 +43,68 @@ struct MeshWorkerResponse { z_bounds: (f32, f32), opaque_mesh: Mesh, fluid_mesh: Mesh, - sprite_instances: HashMap>, + sprite_instances: HashMap<(BlockKind, usize), Vec>, started_tick: u64, } struct SpriteConfig { + variations: usize, wind_sway: f32, // 1.0 is normal } fn sprite_config_for(kind: BlockKind) -> Option { match kind { - BlockKind::Wheat => Some(SpriteConfig { wind_sway: 1.0 }), - BlockKind::LongGrass => Some(SpriteConfig { wind_sway: 1.0 }), - BlockKind::Flowers => Some(SpriteConfig { wind_sway: 0.3 }), + BlockKind::LargeCactus => Some(SpriteConfig { + variations: 1, + wind_sway: 0.0, + }), + BlockKind::BarrelCactus => Some(SpriteConfig { + variations: 1, + wind_sway: 0.0, + }), + + BlockKind::BlueFlower => Some(SpriteConfig { + variations: 2, + wind_sway: 0.3, + }), + BlockKind::PinkFlower => Some(SpriteConfig { + variations: 3, + wind_sway: 0.3, + }), + BlockKind::RedFlower => Some(SpriteConfig { + variations: 1, + wind_sway: 0.3, + }), + BlockKind::WhiteFlower => Some(SpriteConfig { + variations: 1, + wind_sway: 0.3, + }), + BlockKind::YellowFlower => Some(SpriteConfig { + variations: 1, + wind_sway: 0.3, + }), + BlockKind::Sunflower => Some(SpriteConfig { + variations: 2, + wind_sway: 0.3, + }), + + BlockKind::LongGrass => Some(SpriteConfig { + variations: 5, + wind_sway: 1.0, + }), + BlockKind::MediumGrass => Some(SpriteConfig { + variations: 5, + wind_sway: 1.0, + }), + BlockKind::ShortGrass => Some(SpriteConfig { + variations: 5, + wind_sway: 1.0, + }), + + BlockKind::Apple => Some(SpriteConfig { + variations: 1, + wind_sway: 0.0, + }), _ => None, } } @@ -88,7 +137,7 @@ fn mesh_worker( let kind = volume.get(wpos).unwrap_or(&Block::empty()).kind(); if let Some(cfg) = sprite_config_for(kind) { - let seed = x * 3 + y * 7 + z * 13 + x * y; + let seed = wpos.x * 3 + wpos.y * 7 + wpos.z * 13 + wpos.x * wpos.y; let instance = SpriteInstance::new( Mat4::identity() @@ -101,7 +150,7 @@ fn mesh_worker( ); instances - .entry(kind) + .entry((kind, seed as usize % cfg.variations)) .or_insert_with(|| Vec::new()) .push(instance); } @@ -125,7 +174,7 @@ pub struct Terrain { mesh_todo: HashMap, ChunkMeshState>, // GPU data - sprite_models: HashMap>, + sprite_models: HashMap<(BlockKind, usize), Model>, } impl Terrain { @@ -152,14 +201,125 @@ impl Terrain { mesh_recv: recv, mesh_todo: HashMap::default(), sprite_models: vec![ - (BlockKind::Wheat, make_model("voxygen.voxel.sprite.wheat")), + // Cacti ( - BlockKind::LongGrass, - make_model("voxygen.voxel.sprite.grass-0"), + (BlockKind::LargeCactus, 0), + make_model("voxygen.voxel.sprite.cacti.large_cactus"), ), ( - BlockKind::Flowers, - make_model("voxygen.voxel.sprite.flowers"), + (BlockKind::BarrelCactus, 0), + make_model("voxygen.voxel.sprite.cacti.barrel_cactus"), + ), + // Fruit + ( + (BlockKind::Apple, 0), + make_model("voxygen.voxel.sprite.fruit.apple"), + ), + // Flowers + ( + (BlockKind::BlueFlower, 0), + make_model("voxygen.voxel.sprite.flowers.flower_blue_1"), + ), + ( + (BlockKind::BlueFlower, 1), + make_model("voxygen.voxel.sprite.flowers.flower_blue_2"), + ), + ( + (BlockKind::PinkFlower, 0), + make_model("voxygen.voxel.sprite.flowers.flower_pink_1"), + ), + ( + (BlockKind::PinkFlower, 1), + make_model("voxygen.voxel.sprite.flowers.flower_pink_2"), + ), + ( + (BlockKind::PinkFlower, 2), + make_model("voxygen.voxel.sprite.flowers.flower_pink_3"), + ), + ( + (BlockKind::PurpleFlower, 0), + make_model("voxygen.voxel.sprite.flowers.flower_purple_1"), + ), + ( + (BlockKind::RedFlower, 0), + make_model("voxygen.voxel.sprite.flowers.flower_red_1"), + ), + ( + (BlockKind::WhiteFlower, 0), + make_model("voxygen.voxel.sprite.flowers.flower_white_1"), + ), + ( + (BlockKind::YellowFlower, 0), + make_model("voxygen.voxel.sprite.flowers.flower_purple_1"), + ), + ( + (BlockKind::Sunflower, 0), + make_model("voxygen.voxel.sprite.flowers.sunflower_1"), + ), + ( + (BlockKind::Sunflower, 1), + make_model("voxygen.voxel.sprite.flowers.sunflower_2"), + ), + // Grass + ( + (BlockKind::LongGrass, 0), + make_model("voxygen.voxel.sprite.grass.grass_long_1"), + ), + ( + (BlockKind::LongGrass, 1), + make_model("voxygen.voxel.sprite.grass.grass_long_2"), + ), + ( + (BlockKind::LongGrass, 2), + make_model("voxygen.voxel.sprite.grass.grass_long_3"), + ), + ( + (BlockKind::LongGrass, 3), + make_model("voxygen.voxel.sprite.grass.grass_long_4"), + ), + ( + (BlockKind::LongGrass, 4), + make_model("voxygen.voxel.sprite.grass.grass_long_5"), + ), + ( + (BlockKind::MediumGrass, 0), + make_model("voxygen.voxel.sprite.grass.grass_med_1"), + ), + ( + (BlockKind::MediumGrass, 1), + make_model("voxygen.voxel.sprite.grass.grass_med_2"), + ), + ( + (BlockKind::MediumGrass, 2), + make_model("voxygen.voxel.sprite.grass.grass_med_3"), + ), + ( + (BlockKind::MediumGrass, 3), + make_model("voxygen.voxel.sprite.grass.grass_med_4"), + ), + ( + (BlockKind::MediumGrass, 4), + make_model("voxygen.voxel.sprite.grass.grass_med_5"), + ), + ( + (BlockKind::ShortGrass, 0), + make_model("voxygen.voxel.sprite.grass.grass_short_1"), + ), + ( + (BlockKind::ShortGrass, 1), + make_model("voxygen.voxel.sprite.grass.grass_short_2"), + ), + ( + (BlockKind::ShortGrass, 2), + make_model("voxygen.voxel.sprite.grass.grass_short_3"), + ), + ( + (BlockKind::ShortGrass, 3), + make_model("voxygen.voxel.sprite.grass.grass_short_3"), + ), + ( + (BlockKind::ShortGrass, 4), + make_model("voxygen.voxel.sprite.grass.grass_short_5"), ), ] .into_iter() diff --git a/world/src/block/mod.rs b/world/src/block/mod.rs index fb149cc0a5..f9409f934d 100644 --- a/world/src/block/mod.rs +++ b/world/src/block/mod.rs @@ -149,6 +149,7 @@ impl<'a> BlockGen<'a> { cave_xy, cave_alt, marble, + marble_small, rock, //cliffs, cliff_hill, @@ -257,16 +258,31 @@ impl<'a> BlockGen<'a> { )) } else if (wposf.z as f32) < height + 0.9 && (wposf.z as f32 > water_height + 3.0) - && (chaos * 4096.0).fract() < 0.15 && marble > 0.6 + && marble_small > 0.7 + && (marble * 3173.7).fract() < 0.5 { + let flowers = [ + BlockKind::BlueFlower, + BlockKind::PinkFlower, + BlockKind::PurpleFlower, + BlockKind::RedFlower, + BlockKind::WhiteFlower, + BlockKind::YellowFlower, + BlockKind::Sunflower, + ]; + + let grasses = [ + BlockKind::LongGrass, + BlockKind::MediumGrass, + BlockKind::ShortGrass, + ]; + Some(Block::new( - if (height * 121.0).fract() < 0.15 { - BlockKind::Wheat - } else if (height * 121.0).fract() < 0.2 { - BlockKind::Flowers + if (height * 1271.0).fract() < 0.3 { + flowers[(height * 7319.0) as usize % flowers.len()] } else { - BlockKind::LongGrass + grasses[(height * 7319.0) as usize % grasses.len()] }, Rgb::broadcast(0), )) @@ -520,11 +536,7 @@ fn block_from_structure( ) .map(|e| e as u8), )), - StructureBlock::Fruit => Some(Block::new( - BlockKind::Normal, - Lerp::lerp(Rgb::new(237.0, 0.0, 0.0), Rgb::new(200.0, 237.0, 0.0), lerp) - .map(|e| e as u8), - )), + StructureBlock::Fruit => Some(Block::new(BlockKind::Apple, Rgb::new(194, 30, 37))), StructureBlock::Hollow => Some(Block::empty()), StructureBlock::Normal(color) => { Some(Block::new(default_kind, color)).filter(|block| !block.is_empty()) diff --git a/world/src/block/natural.rs b/world/src/block/natural.rs index 9360e87941..102a8c6c42 100644 --- a/world/src/block/natural.rs +++ b/world/src/block/natural.rs @@ -366,11 +366,11 @@ lazy_static! { pub static ref FRUIT_TREES: Vec> = vec![ // fruit trees st_asset("world.tree.fruit.1", (5, 5, 7)), - st_asset("world.tree.fruit.2", (5, 5, 7)), - st_asset("world.tree.fruit.3", (5, 5, 7)), - st_asset("world.tree.fruit.4", (5, 5, 7)), - st_asset("world.tree.fruit.5", (5, 5, 7)), - st_asset("world.tree.fruit.6", (5, 5, 7)), + st_asset("world.tree.fruit.2", (6, 6, 7)), + st_asset("world.tree.fruit.3", (6, 7, 7)), + st_asset("world.tree.fruit.4", (3, 3, 7)), + st_asset("world.tree.fruit.5", (6, 8, 7)), + st_asset("world.tree.fruit.6", (7, 7, 7)), ]; /* diff --git a/world/src/column/mod.rs b/world/src/column/mod.rs index c718b4efc9..9319fdd2f9 100644 --- a/world/src/column/mod.rs +++ b/world/src/column/mod.rs @@ -360,6 +360,7 @@ impl<'a> Sampler for ColumnGen<'a> { cave_xy, cave_alt, marble, + marble_small, rock, is_cliffs, near_cliffs, @@ -386,6 +387,7 @@ pub struct ColumnSample<'a> { pub cave_xy: f32, pub cave_alt: f32, pub marble: f32, + pub marble_small: f32, pub rock: f32, pub is_cliffs: bool, pub near_cliffs: bool,