forked from MineClone5/MineClone5
#11 Fix geode placement
This commit is contained in:
parent
19e77c755b
commit
6f1719b297
|
@ -16,6 +16,13 @@ local layers = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local function round(v)
|
||||||
|
if v < 0 then
|
||||||
|
return math.ceil(v - 0.5)
|
||||||
|
end
|
||||||
|
return math.floor(v + 0.5)
|
||||||
|
end
|
||||||
|
|
||||||
local function place(pos, rotation, pr)
|
local function place(pos, rotation, pr)
|
||||||
local radius = pr:next(radius_min, radius_max)
|
local radius = pr:next(radius_min, radius_max)
|
||||||
local pos = vector.add(pos, radius)
|
local pos = vector.add(pos, radius)
|
||||||
|
@ -23,7 +30,7 @@ local function place(pos, rotation, pr)
|
||||||
for y = pos.y - radius, pos.y + radius do
|
for y = pos.y - radius, pos.y + radius do
|
||||||
for z = pos.z - radius, pos.z + radius do
|
for z = pos.z - radius, pos.z + radius do
|
||||||
local node_pos = vector.new(x, y, z)
|
local node_pos = vector.new(x, y, z)
|
||||||
local inverted_layer = vector.round(vector.distance(node_pos, pos))
|
local inverted_layer = round(vector.distance(node_pos, pos))
|
||||||
if inverted_layer <= radius then
|
if inverted_layer <= radius then
|
||||||
local layer = math.max(radius - inverted_layer + 1, #layers)
|
local layer = math.max(radius - inverted_layer + 1, #layers)
|
||||||
local node_candidates = layers[layer]
|
local node_candidates = layers[layer]
|
||||||
|
|
Loading…
Reference in New Issue