Fix Android node selection distance (#6187)
authorDániel Juhász <juhdanad@gmail.com>
Thu, 24 Aug 2017 06:31:33 +0000 (06:31 +0000)
committerLoïc Blot <nerzhul@users.noreply.github.com>
Thu, 24 Aug 2017 06:31:33 +0000 (08:31 +0200)
src/game.cpp
src/touchscreengui.h

index c3d8446344237ea17ea95d27cc8d5330653bb3e4..68b8e076792fb51f993a7ecc130b19a5cba2a166 100644 (file)
@@ -3544,6 +3544,9 @@ void Game::processPlayerInteraction(f32 dtime, bool show_hud, bool show_debug)
 
        if ((g_settings->getBool("touchtarget")) && (g_touchscreengui)) {
                shootline = g_touchscreengui->getShootline();
+               // Scale shootline to the acual distance the player can reach
+               shootline.end = shootline.start
+                       + shootline.getVector().normalize() * BS * d;
                shootline.start += intToFloat(camera_offset, BS);
                shootline.end += intToFloat(camera_offset, BS);
        }
index 8dfec47d8abbfd904701978b7277e7d7ab275ea0..da97381cd4fc080616ec4cd0f864ab882c0b772f 100644 (file)
@@ -154,6 +154,14 @@ public:
 
        double getPitch() { return m_camera_pitch; }
 
+       /*!
+        * Returns a line which describes what the player is pointing at.
+        * The starting point and looking direction are significant,
+        * the line should be scaled to match its length to the actual distance
+        * the player can reach.
+        * The line starts at the camera and ends on the camera's far plane.
+        * The coordinates do not contain the camera offset.
+        */
        line3d<f32> getShootline() { return m_shootline; }
 
        void step(float dtime);
@@ -178,6 +186,12 @@ private:
        double m_camera_yaw_change = 0.0;
        double m_camera_pitch = 0.0;
 
+       /*!
+        * A line starting at the camera and pointing towards the
+        * selected object.
+        * The line ends on the camera's far plane.
+        * The coordinates do not contain the camera offset.
+        */
        line3d<f32> m_shootline;
 
        int m_move_id = -1;