factor out player_get_eye_pos(player)

This commit is contained in:
whosit 2021-05-24 09:35:26 +03:00
parent 1e7df1f115
commit eb3ab60383

View File

@ -23,16 +23,23 @@ function round (x)
end
end
-- return first thing player is pointing at
local function raycast_crosshair(player, range)
-- get actual eye_pos of the player (including eye_offset)
local function player_get_eye_pos(player)
local p_pos = player:get_pos()
local p_eye_height = player:get_properties().eye_height
local p_eye_pos = { x = p_pos.x, y = p_pos.y + p_eye_height, z = p_pos.z }
-- take eye_offset into account for camera position (when sitting, etc)
p_pos.y = p_pos.y + p_eye_height
local p_eye_pos = p_pos
local p_eye_offset = vector.multiply(player:get_eye_offset(), 0.1)
local yaw = player:get_look_horizontal()
p_eye_pos = vector.add(p_eye_pos, vector.rotate_around_axis(p_eye_offset, {x=0,y=1,z=0}, yaw))
return p_eye_pos
end
-- return first thing player is pointing at
local function raycast_crosshair(player, range)
local p_eye_pos = player_get_eye_pos(player)
local to = vector.add(p_eye_pos, vector.multiply(player:get_look_dir(), range))
local ray = minetest.raycast(p_eye_pos, to, point_to_objects, point_to_liquids)
local pointed_thing = ray:next()