diff options
author | rubenwardy <rubenwardy@gmail.com> | 2016-12-11 21:57:43 +0000 |
---|---|---|
committer | rubenwardy <rubenwardy@gmail.com> | 2016-12-12 13:20:18 +0000 |
commit | 0fdf24d64ab055a97e488eb3775cc7c721156d3c (patch) | |
tree | aa8063616612122eb3ad032c7f1b8202a58ef7e7 | |
parent | d9675d3d922a2c8f521102c9386d14c694fda365 (diff) | |
download | minetest-0fdf24d64ab055a97e488eb3775cc7c721156d3c.tar.gz minetest-0fdf24d64ab055a97e488eb3775cc7c721156d3c.tar.bz2 minetest-0fdf24d64ab055a97e488eb3775cc7c721156d3c.zip |
Fix camera jumping on Android when panning past 0/360 mark
-rw-r--r-- | src/game.cpp | 6 | ||||
-rw-r--r-- | src/touchscreengui.cpp | 14 | ||||
-rw-r--r-- | src/touchscreengui.h | 10 |
3 files changed, 15 insertions, 15 deletions
diff --git a/src/game.cpp b/src/game.cpp index ea07accf8..966c23073 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1205,7 +1205,7 @@ static inline void create_formspec_menu(GUIFormSpecMenu **cur_formspec, (*cur_formspec)->setFormSource(fs_src); (*cur_formspec)->setTextDest(txt_dest); } - + } #ifdef __ANDROID__ @@ -3362,8 +3362,8 @@ void Game::updateCameraOrientation(CameraOrientation *cam, { #ifdef HAVE_TOUCHSCREENGUI if (g_touchscreengui) { - cam->camera_yaw = g_touchscreengui->getYaw(); - cam->camera_pitch = g_touchscreengui->getPitch(); + cam->camera_yaw += g_touchscreengui->getYawChange(); + cam->camera_pitch = g_touchscreengui->getPitch(); } else { #endif diff --git a/src/touchscreengui.cpp b/src/touchscreengui.cpp index f51b2d5fa..e3c6a39a9 100644 --- a/src/touchscreengui.cpp +++ b/src/touchscreengui.cpp @@ -414,7 +414,7 @@ void AutoHideButtonBar::show() TouchScreenGUI::TouchScreenGUI(IrrlichtDevice *device, IEventReceiver* receiver): m_device(device), m_guienv(device->getGUIEnvironment()), - m_camera_yaw(0.0), + m_camera_yaw_change(0.0), m_camera_pitch(0.0), m_visible(false), m_move_id(-1), @@ -835,17 +835,11 @@ void TouchScreenGUI::translateEvent(const SEvent &event) /* adapt to similar behaviour as pc screen */ double d = g_settings->getFloat("mouse_sensitivity") *4; - double old_yaw = m_camera_yaw; + double old_yaw = m_camera_yaw_change; double old_pitch = m_camera_pitch; - m_camera_yaw -= dx * d; - m_camera_pitch = MYMIN(MYMAX( m_camera_pitch + (dy * d),-180),180); - - while (m_camera_yaw < 0) - m_camera_yaw += 360; - - while (m_camera_yaw > 360) - m_camera_yaw -= 360; + m_camera_yaw_change -= dx * d; + m_camera_pitch = MYMIN(MYMAX(m_camera_pitch + (dy * d), -180), 180); // update shootline m_shootline = m_device diff --git a/src/touchscreengui.h b/src/touchscreengui.h index d8106a260..b4de1b032 100644 --- a/src/touchscreengui.h +++ b/src/touchscreengui.h @@ -147,8 +147,14 @@ public: void init(ISimpleTextureSource* tsrc); - double getYaw() { return m_camera_yaw; } + double getYawChange() { + double res = m_camera_yaw_change; + m_camera_yaw_change = 0; + return res; + } + double getPitch() { return m_camera_pitch; } + line3d<f32> getShootline() { return m_shootline; } void step(float dtime); @@ -170,7 +176,7 @@ private: bool m_visible; // is the gui visible /* value in degree */ - double m_camera_yaw; + double m_camera_yaw_change; double m_camera_pitch; line3d<f32> m_shootline; |