aboutsummaryrefslogtreecommitdiff
path: root/src/client/activeobjectmgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/activeobjectmgr.cpp')
-rw-r--r--src/client/activeobjectmgr.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/client/activeobjectmgr.cpp b/src/client/activeobjectmgr.cpp
index 3f5178908..7b7fab033 100644
--- a/src/client/activeobjectmgr.cpp
+++ b/src/client/activeobjectmgr.cpp
@@ -117,7 +117,9 @@ void ActiveObjectMgr::getActiveSelectableObjects(const core::line3d<f32> &shootl
f32 max_d = shootline.getLength();
v3f dir = shootline.getVector().normalize();
- v3f dir_ortho1 = dir.crossProduct(dir + v3f(1,0,0)).normalize();
+ // arbitrary linearly independent vector and orthogonal dirs
+ v3f li2dir = dir + (std::fabs(dir.X) < 0.5f ? v3f(1,0,0) : v3f(0,1,0));
+ v3f dir_ortho1 = dir.crossProduct(li2dir).normalize();
v3f dir_ortho2 = dir.crossProduct(dir_ortho1);
for (auto &ao_it : m_active_objects) {