Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions functions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

cart_func = {}

dofile(minetest.get_modpath("carts").."/voxelgetter.lua")

function cart_func:get_sign(z)
if z == 0 then
return 0
Expand All @@ -25,6 +27,10 @@ end

function cart_func:is_rail(p)
local nn = minetest.env:get_node(p).name
if nn=="ignore" then
print("oops")
nn=cart_func:get_content_voxel(p)
end
return minetest.get_item_group(nn, "rail") ~= 0
end

Expand Down
16 changes: 16 additions & 0 deletions voxelgetter.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
function cart_func:get_content_voxel(pos)
local t1 = os.clock()
local vm = minetest.get_voxel_manip()
local pos1, pos2 = vm:read_from_map(vector.add(pos, {x=-1,y=-1,z=-1}),vector.add(pos, {x=1,y=1,z=1}))
local a = VoxelArea:new{
MinEdge=pos1,
MaxEdge=pos2,
}

local data = vm:get_data()
local vi = a:indexp(pos)
local railid = data[vi]
local real_name = minetest.get_name_from_content_id(railid)
print(string.format("voxel-ing rail: elapsed time: %.2fms", (os.clock() - t1) * 1000))
return real_name
end