mirror of
https://github.com/ElCeejo/creatura.git
synced 2025-03-15 12:21:24 +00:00
Add creatura.get_ground_level
This commit is contained in:
parent
7b82f23abf
commit
00585fa406
1 changed files with 40 additions and 0 deletions
40
api.lua
40
api.lua
|
@ -124,6 +124,46 @@ function creatura.get_node_def(node) -- Node can be name or pos
|
|||
return def
|
||||
end
|
||||
|
||||
function creatura.get_ground_level(pos2, max_diff)
|
||||
local node = minetest.get_node(pos2)
|
||||
local node_under = minetest.get_node({
|
||||
x = pos2.x,
|
||||
y = pos2.y - 1,
|
||||
z = pos2.z
|
||||
})
|
||||
local walkable = creatura.get_node_def(node_under.name).walkable and not creatura.get_node_def(node.name).walkable
|
||||
if walkable then
|
||||
return pos2
|
||||
end
|
||||
local diff = 0
|
||||
if not creatura.get_node_def(node_under.name).walkable then
|
||||
for i = 1, max_diff do
|
||||
pos2.y = pos2.y - 1
|
||||
node = minetest.get_node(pos2)
|
||||
node_under = minetest.get_node({
|
||||
x = pos2.x,
|
||||
y = pos2.y - 1,
|
||||
z = pos2.z
|
||||
})
|
||||
walkable = creatura.get_node_def(node_under.name).walkable and not creatura.get_node_def(node.name).walkable
|
||||
if walkable then break end
|
||||
end
|
||||
else
|
||||
for i = 1, max_diff do
|
||||
pos2.y = pos2.y + 1
|
||||
node = minetest.get_node(pos2)
|
||||
node_under = minetest.get_node({
|
||||
x = pos2.x,
|
||||
y = pos2.y - 1,
|
||||
z = pos2.z
|
||||
})
|
||||
walkable = creatura.get_node_def(node_under.name).walkable and not creatura.get_node_def(node.name).walkable
|
||||
if walkable then break end
|
||||
end
|
||||
end
|
||||
return pos2
|
||||
end
|
||||
|
||||
function creatura.is_pos_moveable(pos, width, height)
|
||||
local pos1 = {
|
||||
x = pos.x - (width + 0.2),
|
||||
|
|
Loading…
Add table
Reference in a new issue