summaryrefslogtreecommitdiff
path: root/src/util
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/util
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/util')
-rw-r--r--src/util/pointedthing.cpp3
-rw-r--r--src/util/pointedthing.h12
2 files changed, 11 insertions, 4 deletions
diff --git a/src/util/pointedthing.cpp b/src/util/pointedthing.cpp
index c5961d56e..b906264d0 100644
--- a/src/util/pointedthing.cpp
+++ b/src/util/pointedthing.cpp
@@ -25,13 +25,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
PointedThing::PointedThing(const v3s16 &under, const v3s16 &above,
const v3s16 &real_under, const v3f &point, const v3s16 &normal,
- f32 distSq):
+ u16 box_id, f32 distSq):
type(POINTEDTHING_NODE),
node_undersurface(under),
node_abovesurface(above),
node_real_undersurface(real_under),
intersection_point(point),
intersection_normal(normal),
+ box_id(box_id),
distanceSq(distSq)
{}
diff --git a/src/util/pointedthing.h b/src/util/pointedthing.h
index 4c4c04234..5b30ed031 100644
--- a/src/util/pointedthing.h
+++ b/src/util/pointedthing.h
@@ -64,7 +64,8 @@ struct PointedThing
s16 object_id = -1;
/*!
* Only valid if type isn't POINTEDTHING_NONE.
- * First intersection point of the ray and the nodebox.
+ * First intersection point of the ray and the nodebox in irrlicht
+ * coordinates.
*/
v3f intersection_point;
/*!
@@ -75,8 +76,13 @@ struct PointedThing
*/
v3s16 intersection_normal;
/*!
+ * Only valid if type isn't POINTEDTHING_NONE.
+ * Indicates which selection box is selected, if there are more of them.
+ */
+ u16 box_id = 0;
+ /*!
* Square of the distance between the pointing
- * ray's start point and the intersection point.
+ * ray's start point and the intersection point in irrlicht coordinates.
*/
f32 distanceSq = 0;
@@ -85,7 +91,7 @@ struct PointedThing
//! Constructor for POINTEDTHING_NODE
PointedThing(const v3s16 &under, const v3s16 &above,
const v3s16 &real_under, const v3f &point, const v3s16 &normal,
- f32 distSq);
+ u16 box_id, f32 distSq);
//! Constructor for POINTEDTHING_OBJECT
PointedThing(s16 id, const v3f &point, const v3s16 &normal, f32 distSq);
std::string dump() const;