mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-27 17:28:41 +00:00
Allow giving "pointabilities" to Lua raycasts (#14390)
This commit is contained in:
parent
aac616fcc5
commit
e40417f687
4 changed files with 55 additions and 11 deletions
|
@ -182,6 +182,7 @@ dofile(modpath .. "/get_version.lua")
|
|||
dofile(modpath .. "/itemstack_equals.lua")
|
||||
dofile(modpath .. "/content_ids.lua")
|
||||
dofile(modpath .. "/metadata.lua")
|
||||
dofile(modpath .. "/raycast.lua")
|
||||
|
||||
--------------
|
||||
|
||||
|
|
36
games/devtest/mods/unittests/raycast.lua
Normal file
36
games/devtest/mods/unittests/raycast.lua
Normal file
|
@ -0,0 +1,36 @@
|
|||
local function raycast_with_pointabilities(start_pos, end_pos, pointabilities)
|
||||
local ray = core.raycast(start_pos, end_pos, nil, nil, pointabilities)
|
||||
for hit in ray do
|
||||
if hit.type == "node" then
|
||||
return hit.under
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
local function test_raycast_pointabilities(player, pos1)
|
||||
local pos2 = pos1:offset(0, 0, 1)
|
||||
local pos3 = pos1:offset(0, 0, 2)
|
||||
|
||||
local oldnode1 = core.get_node(pos1)
|
||||
local oldnode2 = core.get_node(pos2)
|
||||
local oldnode3 = core.get_node(pos3)
|
||||
core.swap_node(pos1, {name = "air"})
|
||||
core.swap_node(pos2, {name = "testnodes:not_pointable"})
|
||||
core.swap_node(pos3, {name = "testnodes:pointable"})
|
||||
|
||||
local p = nil
|
||||
assert(raycast_with_pointabilities(pos1, pos3, p) == pos3)
|
||||
|
||||
p = core.registered_items["testtools:blocked_pointing_staff"].pointabilities
|
||||
assert(raycast_with_pointabilities(pos1, pos3, p) == nil)
|
||||
|
||||
p = core.registered_items["testtools:ultimate_pointing_staff"].pointabilities
|
||||
assert(raycast_with_pointabilities(pos1, pos3, p) == pos2)
|
||||
|
||||
core.swap_node(pos1, oldnode1)
|
||||
core.swap_node(pos2, oldnode2)
|
||||
core.swap_node(pos3, oldnode3)
|
||||
end
|
||||
|
||||
unittests.register("test_raycast_pointabilities", test_raycast_pointabilities, {map=true})
|
Loading…
Add table
Add a link
Reference in a new issue