randomize rotatable plants in world generation
This commit is contained in:
parent
721286c2ba
commit
0649419485
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user