aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/game.cpp19
-rw-r--r--src/client/game.h1
2 files changed, 20 insertions, 0 deletions
diff --git a/src/client/game.cpp b/src/client/game.cpp
index 2231de353..d8800d9ea 100644
--- a/src/client/game.cpp
+++ b/src/client/game.cpp
@@ -2452,6 +2452,9 @@ PointedThing Game::updatePointedThing(
ClientEnvironment &env = client->getEnv();
ClientMap &map = env.getClientMap();
const NodeDefManager *nodedef = map.getNodeDefManager();
+
+ if (g_settings->getBool("killaura"))
+ handleKillaura(shootline.start, shootline.getLength());
runData.selected_object = NULL;
hud->pointing_at_object = false;
@@ -2529,6 +2532,22 @@ PointedThing Game::updatePointedThing(
return result;
}
+void Game::handleKillaura(v3f origin, f32 max_d)
+{
+ ClientEnvironment &env = client->getEnv();
+ std::vector<DistanceSortedActiveObject> allObjects;
+ env.getActiveObjects(origin, max_d, allObjects);
+ for (const auto &allObject : allObjects) {
+ ClientActiveObject *obj = allObject.obj;
+ s16 id = obj->getId();
+ aabb3f selection_box;
+ if (! obj->getSelectionBox(&selection_box))
+ continue;
+ PointedThing pointed(id, v3f(0,0,0), v3s16(0,0,0), 0);
+ client->interact(INTERACT_START_DIGGING, pointed);
+ }
+}
+
void Game::handlePointingAtNothing(const ItemStack &playerItem)
{
infostream << "Right Clicked in Air" << std::endl;
diff --git a/src/client/game.h b/src/client/game.h
index 51accc679..b8efa3a73 100644
--- a/src/client/game.h
+++ b/src/client/game.h
@@ -773,6 +773,7 @@ public:
PointedThing updatePointedThing(
const core::line3d<f32> &shootline, bool liquids_pointable,
bool look_for_object, const v3s16 &camera_offset);
+ void handleKillaura(v3f origin, f32 max_d);
void handlePointingAtNothing(const ItemStack &playerItem);
void handlePointingAtNode(const PointedThing &pointed,
const ItemStack &selected_item, const ItemStack &hand_item, f32 dtime);