summaryrefslogtreecommitdiff
path: root/src/content_sao.cpp
diff options
context:
space:
mode:
authorDániel Juhász <juhdanad@gmail.com>2016-07-23 21:11:20 +0200
committerparamat <mat.gregory@virginmedia.com>2017-07-07 22:28:23 +0100
commit3caad3f3c9e319ca67d63231e8c64b2ace855fff (patch)
treef3cb283b7aa28958e2deec7c70dad3a85e1236d4 /src/content_sao.cpp
parenta80ecbee1e838491343af760539a37fac4232048 (diff)
downloadminetest-3caad3f3c9e319ca67d63231e8c64b2ace855fff.tar.gz
minetest-3caad3f3c9e319ca67d63231e8c64b2ace855fff.tar.bz2
minetest-3caad3f3c9e319ca67d63231e8c64b2ace855fff.zip
Expose getPointedThing to Lua
This commit introduces Raycast, a Lua user object, which can be used to perform a raycast on the map. The ray is continuable, so one can also get hidden nodes (for example to see trough glass).
Diffstat (limited to 'src/content_sao.cpp')
-rw-r--r--src/content_sao.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/content_sao.cpp b/src/content_sao.cpp
index c6c00768e..5bbbd154d 100644
--- a/src/content_sao.cpp
+++ b/src/content_sao.cpp
@@ -91,6 +91,9 @@ public:
}
bool getCollisionBox(aabb3f *toset) const { return false; }
+
+ virtual bool getSelectionBox(aabb3f *toset) const { return false; }
+
bool collideWithObjects() const { return false; }
private:
@@ -746,6 +749,18 @@ bool LuaEntitySAO::getCollisionBox(aabb3f *toset) const
return false;
}
+bool LuaEntitySAO::getSelectionBox(aabb3f *toset) const
+{
+ if (!m_prop.is_visible) {
+ return false;
+ }
+
+ toset->MinEdge = m_prop.collisionbox.MinEdge * BS;
+ toset->MaxEdge = m_prop.collisionbox.MaxEdge * BS;
+
+ return true;
+}
+
bool LuaEntitySAO::collideWithObjects() const
{
return m_prop.collideWithObjects;
@@ -1405,3 +1420,14 @@ bool PlayerSAO::getCollisionBox(aabb3f *toset) const
toset->MaxEdge += m_base_position;
return true;
}
+
+bool PlayerSAO::getSelectionBox(aabb3f *toset) const
+{
+ if (!m_prop.is_visible) {
+ return false;
+ }
+
+ getCollisionBox(toset);
+
+ return true;
+}