randomize rotatable plants in world generation

This commit is contained in:
MihailRis 2025-02-21 19:35:37 +03:00
parent 721286c2ba
commit 0649419485
3 changed files with 12 additions and 3 deletions

View File

@ -101,7 +101,8 @@ const BlockRotProfile BlockRotProfile::NONE {
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // West
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // Up
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // Down
}
},
0
};
const BlockRotProfile BlockRotProfile::PIPE {
@ -113,7 +114,8 @@ const BlockRotProfile BlockRotProfile::PIPE {
{{0, 0, -1}, {1, 0, 0}, {0, -1, 0}}, // West
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // Up
{{1, 0, 0}, {0, -1, 0}, {0, 0, -1}}, // Down
}
},
6
};
const BlockRotProfile BlockRotProfile::PANE {
@ -123,7 +125,8 @@ const BlockRotProfile BlockRotProfile::PANE {
{{0, 0, -1}, {0, 1, 0}, {1, 0, 0}}, // East
{{-1, 0, 0}, {0, 1, 0}, {0, 0, -1}}, // South
{{0, 0, 1}, {0, 1, 0}, {-1, 0, 0}}, // West
}
},
4
};
Block::Block(const std::string& name)

View File

@ -65,6 +65,7 @@ struct BlockRotProfile {
static const int MAX_COUNT = 8;
std::string name;
CoordSystem variants[MAX_COUNT];
int variantsCount;
/// @brief No rotation
static const BlockRotProfile NONE;

View File

@ -389,7 +389,12 @@ void WorldGenerator::generatePlants(
}
auto& groundVoxel = voxels[vox_index(x, height, z)];
if (indices.get(groundVoxel.id)->rt.solid) {
const auto& def = indices.require(plant);
voxel = {plant, {}};
if (def.rotatable && def.rotations.variantsCount) {
voxel.state.rotation =
plantsRand.rand() % def.rotations.variantsCount;
}
}
}
}