mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-06-17 16:17:02 +08:00
refactor(generation): move ocean water build to later phase
This commit is contained in:
@@ -9,10 +9,10 @@ public:
|
|||||||
virtual ChunkGenerator& get_chunk_generator() = 0;
|
virtual ChunkGenerator& get_chunk_generator() = 0;
|
||||||
virtual void build_biome() = 0;
|
virtual void build_biome() = 0;
|
||||||
virtual void build_vegetation() = 0;
|
virtual void build_vegetation() = 0;
|
||||||
|
void ocean_water_build();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void build_bottom();
|
void build_bottom();
|
||||||
void place_grass();
|
void place_grass();
|
||||||
void ocean_water_build();
|
|
||||||
};
|
};
|
||||||
} // namespace Cubed
|
} // namespace Cubed
|
||||||
@@ -45,6 +45,7 @@ public:
|
|||||||
Chunk& chunk();
|
Chunk& chunk();
|
||||||
Random& random();
|
Random& random();
|
||||||
const std::array<BiomeType, 8>& neighbor_biome() const;
|
const std::array<BiomeType, 8>& neighbor_biome() const;
|
||||||
|
void ocean_build();
|
||||||
void generate_cave();
|
void generate_cave();
|
||||||
void generate_river();
|
void generate_river();
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ void DesertBuilder::build_blocks() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ocean_water_build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DesertBuilder::build_vegetation() {}
|
void DesertBuilder::build_vegetation() {}
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ void ForestBuilder::build_blocks() {
|
|||||||
m_blocks[Chunk::index(x, height, z)] = 1;
|
m_blocks[Chunk::index(x, height, z)] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ocean_water_build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ForestBuilder::build_vegetation() {
|
void ForestBuilder::build_vegetation() {
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ void MountainBuilder::build_blocks() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ocean_water_build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MountainBuilder::build_vegetation() {}
|
void MountainBuilder::build_vegetation() {}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ void OceanBuilder::build_blocks() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ocean_water_build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OceanBuilder::build_vegetation() {}
|
void OceanBuilder::build_vegetation() {}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ void PlainBuilder::build_blocks() {
|
|||||||
m_blocks[Chunk::index(x, height, z)] = 1;
|
m_blocks[Chunk::index(x, height, z)] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ocean_water_build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlainBuilder::build_vegetation() { place_grass(); }
|
void PlainBuilder::build_vegetation() { place_grass(); }
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ void SnowyPlainBuilder::build_blocks() {
|
|||||||
m_blocks[Chunk::index(x, height, z)] = 8;
|
m_blocks[Chunk::index(x, height, z)] = 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ocean_water_build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SnowyPlainBuilder::build_vegetation() {}
|
void SnowyPlainBuilder::build_vegetation() {}
|
||||||
|
|||||||
@@ -199,9 +199,8 @@ void Chunk::gen_phase_six(
|
|||||||
Logger::error("ChunkGenerator is Nullptr");
|
Logger::error("ChunkGenerator is Nullptr");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// This must be fully completed before any other operations can proceed!
|
||||||
m_generator->blend_surface_blocks_borders(neighbor_block);
|
m_generator->blend_surface_blocks_borders(neighbor_block);
|
||||||
m_generator->generate_cave();
|
|
||||||
m_generator->generate_river();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Chunk::gen_phase_seven() {
|
void Chunk::gen_phase_seven() {
|
||||||
@@ -209,6 +208,10 @@ void Chunk::gen_phase_seven() {
|
|||||||
Logger::error("ChunkGenerator is Nullptr");
|
Logger::error("ChunkGenerator is Nullptr");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
m_generator->ocean_build();
|
||||||
|
m_generator->generate_river();
|
||||||
|
m_generator->generate_cave();
|
||||||
|
|
||||||
m_generator->generate_vegetation();
|
m_generator->generate_vegetation();
|
||||||
mark_dirty();
|
mark_dirty();
|
||||||
m_generator = nullptr;
|
m_generator = nullptr;
|
||||||
|
|||||||
@@ -635,6 +635,8 @@ void ChunkGenerator::make_biome_builder() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChunkGenerator::ocean_build() { m_biome_builder->ocean_water_build(); }
|
||||||
|
|
||||||
void ChunkGenerator::generate_cave() {
|
void ChunkGenerator::generate_cave() {
|
||||||
auto& cave_carver = m_chunk.world().cave_carcer();
|
auto& cave_carver = m_chunk.world().cave_carcer();
|
||||||
auto& paths = cave_carver.paths();
|
auto& paths = cave_carver.paths();
|
||||||
|
|||||||
Reference in New Issue
Block a user