add chunk_height parameter to place_structures
This commit is contained in:
parent
abc8eccab8
commit
16fac768c8
@ -1,10 +1,10 @@
|
||||
function place_structures(x, z, w, d, seed, hmap)
|
||||
function place_structures(x, z, w, d, seed, hmap, chunk_height)
|
||||
local placements = {}
|
||||
for i=1,10 do
|
||||
local sx = math.random() * w
|
||||
local sz = math.random() * d
|
||||
local sy = math.random() * 128
|
||||
if sy < hmap:at(sx, sz) * 256 - 6 then
|
||||
local sy = math.random() * (chunk_height * 0.5)
|
||||
if sy < hmap:at(sx, sz) * chunk_height - 6 then
|
||||
table.insert(placements, {"coal_ore0", {sx, sy, sz}, math.random()*4})
|
||||
end
|
||||
end
|
||||
|
||||
@ -76,7 +76,7 @@ public:
|
||||
|
||||
std::vector<StructurePlacement> placeStructures(
|
||||
const glm::ivec2& offset, const glm::ivec2& size, uint64_t seed,
|
||||
const std::shared_ptr<Heightmap>& heightmap
|
||||
const std::shared_ptr<Heightmap>& heightmap, uint chunkHeight
|
||||
) override {
|
||||
std::vector<StructurePlacement> placements;
|
||||
|
||||
@ -88,7 +88,8 @@ public:
|
||||
lua::pushivec_stack(L, size);
|
||||
lua::pushinteger(L, seed);
|
||||
lua::newuserdata<lua::LuaHeightmap>(L, heightmap);
|
||||
if (lua::call_nothrow(L, 6, 1)) {
|
||||
lua::pushinteger(L, chunkHeight);
|
||||
if (lua::call_nothrow(L, 7, 1)) {
|
||||
int len = lua::objlen(L, -1);
|
||||
for (int i = 1; i <= len; i++) {
|
||||
lua::rawgeti(L, i);
|
||||
|
||||
@ -155,10 +155,11 @@ public:
|
||||
/// @param size size of the area (blocks)
|
||||
/// @param seed world seed
|
||||
/// @param heightmap area heightmap
|
||||
/// @param chunkHeight chunk height to use as heights multiplier
|
||||
/// @return structure placements
|
||||
virtual std::vector<StructurePlacement> placeStructures(
|
||||
const glm::ivec2& offset, const glm::ivec2& size, uint64_t seed,
|
||||
const std::shared_ptr<Heightmap>& heightmap) = 0;
|
||||
const std::shared_ptr<Heightmap>& heightmap, uint chunkHeight) = 0;
|
||||
};
|
||||
|
||||
/// @brief Structure voxel fragments and metadata
|
||||
|
||||
@ -177,7 +177,7 @@ void WorldGenerator::generateStructures(
|
||||
|
||||
util::concat(prototype.structures, def.script->placeStructures(
|
||||
{chunkX * CHUNK_W, chunkZ * CHUNK_D}, {CHUNK_W, CHUNK_D}, seed,
|
||||
heightmap
|
||||
heightmap, CHUNK_H
|
||||
));
|
||||
for (const auto& placement : prototype.structures) {
|
||||
const auto& offset = placement.position;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user