aboutsummaryrefslogtreecommitdiff
path: root/src/gui/tracers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/tracers.cpp')
-rw-r--r--src/gui/tracers.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/gui/tracers.cpp b/src/gui/tracers.cpp
index b1f7b15c0..ee41d0fb0 100644
--- a/src/gui/tracers.cpp
+++ b/src/gui/tracers.cpp
@@ -26,16 +26,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
void Tracers::draw(video::IVideoDriver* driver, Client *client)
{
ClientEnvironment &env = client->getEnv();
- LocalPlayer *player = env.getLocalPlayer();
Camera *camera = client->getCamera();
- v3f player_pos = player->getPosition();
v3f head_pos = camera->getPosition() + camera->getDirection();
- std::vector<DistanceSortedActiveObject> allObjects;
- env.getActiveObjects(player_pos, 1000000, allObjects);
- for (const auto &allObject : allObjects) {
- ClientActiveObject *obj = allObject.obj;
- if (obj->isLocalPlayer() || obj->getParent())
+ auto allObjects = env.getAllActiveObjects();
+ for (auto &it : allObjects) {
+ ClientActiveObject *obj = it.second;
+ if (obj->isLocalPlayer() || obj->getParent() || obj->isItem())
continue;
- driver->draw3DLine(head_pos, obj->getPosition(), video::SColor(255, 255, 255, 255));
+ v3f pos = obj->getPosition();
+ aabb3f box;
+ if (obj->getSelectionBox(&box))
+ pos += box.getCenter();
+ driver->draw3DLine(head_pos, pos, video::SColor(255, 255, 255, 255));
}
}