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}}, // West
|
||||||
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // Up
|
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // Up
|
||||||
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // Down
|
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, // Down
|
||||||
}
|
},
|
||||||
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
const BlockRotProfile BlockRotProfile::PIPE {
|
const BlockRotProfile BlockRotProfile::PIPE {
|
||||||
@ -113,7 +114,8 @@ const BlockRotProfile BlockRotProfile::PIPE {
|
|||||||
{{0, 0, -1}, {1, 0, 0}, {0, -1, 0}}, // West
|
{{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}}, // Up
|
||||||
{{1, 0, 0}, {0, -1, 0}, {0, 0, -1}}, // Down
|
{{1, 0, 0}, {0, -1, 0}, {0, 0, -1}}, // Down
|
||||||
}
|
},
|
||||||
|
6
|
||||||
};
|
};
|
||||||
|
|
||||||
const BlockRotProfile BlockRotProfile::PANE {
|
const BlockRotProfile BlockRotProfile::PANE {
|
||||||
@ -123,7 +125,8 @@ const BlockRotProfile BlockRotProfile::PANE {
|
|||||||
{{0, 0, -1}, {0, 1, 0}, {1, 0, 0}}, // East
|
{{0, 0, -1}, {0, 1, 0}, {1, 0, 0}}, // East
|
||||||
{{-1, 0, 0}, {0, 1, 0}, {0, 0, -1}}, // South
|
{{-1, 0, 0}, {0, 1, 0}, {0, 0, -1}}, // South
|
||||||
{{0, 0, 1}, {0, 1, 0}, {-1, 0, 0}}, // West
|
{{0, 0, 1}, {0, 1, 0}, {-1, 0, 0}}, // West
|
||||||
}
|
},
|
||||||
|
4
|
||||||
};
|
};
|
||||||
|
|
||||||
Block::Block(const std::string& name)
|
Block::Block(const std::string& name)
|
||||||
|
|||||||
@ -65,6 +65,7 @@ struct BlockRotProfile {
|
|||||||
static const int MAX_COUNT = 8;
|
static const int MAX_COUNT = 8;
|
||||||
std::string name;
|
std::string name;
|
||||||
CoordSystem variants[MAX_COUNT];
|
CoordSystem variants[MAX_COUNT];
|
||||||
|
int variantsCount;
|
||||||
|
|
||||||
/// @brief No rotation
|
/// @brief No rotation
|
||||||
static const BlockRotProfile NONE;
|
static const BlockRotProfile NONE;
|
||||||
|
|||||||
@ -389,7 +389,12 @@ void WorldGenerator::generatePlants(
|
|||||||
}
|
}
|
||||||
auto& groundVoxel = voxels[vox_index(x, height, z)];
|
auto& groundVoxel = voxels[vox_index(x, height, z)];
|
||||||
if (indices.get(groundVoxel.id)->rt.solid) {
|
if (indices.get(groundVoxel.id)->rt.solid) {
|
||||||
|
const auto& def = indices.require(plant);
|
||||||
voxel = {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