From eb3ab60383ceb2df3c99f2a52e352b7965f61a64 Mon Sep 17 00:00:00 2001 From: whosit Date: Mon, 24 May 2021 09:35:26 +0300 Subject: [PATCH] factor out player_get_eye_pos(player) --- init.lua | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/init.lua b/init.lua index 7e89076..12e45a8 100644 --- a/init.lua +++ b/init.lua @@ -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()