summaryrefslogtreecommitdiff
path: root/src/script/common/c_content.cpp
diff options
context:
space:
mode:
authorDániel Juhász <juhdanad@gmail.com>2018-08-16 20:10:08 +0200
committerSmallJoker <SmallJoker@users.noreply.github.com>2018-08-16 20:10:08 +0200
commit325bf680410e8012394e5f3ba5ba947c69034899 (patch)
tree66ed6c2b0c9d7a1c915006212ecde535699e16c4 /src/script/common/c_content.cpp
parent798724efeab2d71da4f041be99de86baa3d3cdd5 (diff)
downloadminetest-325bf680410e8012394e5f3ba5ba947c69034899.tar.gz
minetest-325bf680410e8012394e5f3ba5ba947c69034899.tar.bz2
minetest-325bf680410e8012394e5f3ba5ba947c69034899.zip
Raycast: export exact pointing location (#6304)
* Return intersection point in node coordinates. * Clarify 'intersection_point' documentation
Diffstat (limited to 'src/script/common/c_content.cpp')
-rw-r--r--src/script/common/c_content.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp
index 889b94660..1d62ad98a 100644
--- a/src/script/common/c_content.cpp
+++ b/src/script/common/c_content.cpp
@@ -1757,7 +1757,8 @@ void read_json_value(lua_State *L, Json::Value &root, int index, u8 recursion)
lua_pop(L, 1); // Pop value
}
-void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm)
+void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm,
+ bool hitpoint)
{
lua_newtable(L);
if (pointed.type == POINTEDTHING_NODE) {
@@ -1782,6 +1783,14 @@ void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm)
lua_pushstring(L, "nothing");
lua_setfield(L, -2, "type");
}
+ if (hitpoint && (pointed.type != POINTEDTHING_NOTHING)) {
+ push_v3f(L, pointed.intersection_point / BS); // convert to node coords
+ lua_setfield(L, -2, "intersection_point");
+ push_v3s16(L, pointed.intersection_normal);
+ lua_setfield(L, -2, "intersection_normal");
+ lua_pushinteger(L, pointed.box_id + 1); // change to Lua array index
+ lua_setfield(L, -2, "box_id");
+ }
}
void push_objectRef(lua_State *L, const u16 id)