diff options
Diffstat (limited to 'src/client/game.cpp')
-rw-r--r-- | src/client/game.cpp | 19 |
1 files changed, 19 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; |