mirror of
https://github.com/minetest/minetest.git
synced 2024-11-30 11:33:44 +01:00
Fix camera jumping on Android when panning past 0/360 mark
This commit is contained in:
parent
d9675d3d92
commit
0fdf24d64a
@ -3362,7 +3362,7 @@ void Game::updateCameraOrientation(CameraOrientation *cam,
|
|||||||
{
|
{
|
||||||
#ifdef HAVE_TOUCHSCREENGUI
|
#ifdef HAVE_TOUCHSCREENGUI
|
||||||
if (g_touchscreengui) {
|
if (g_touchscreengui) {
|
||||||
cam->camera_yaw = g_touchscreengui->getYaw();
|
cam->camera_yaw += g_touchscreengui->getYawChange();
|
||||||
cam->camera_pitch = g_touchscreengui->getPitch();
|
cam->camera_pitch = g_touchscreengui->getPitch();
|
||||||
} else {
|
} else {
|
||||||
#endif
|
#endif
|
||||||
|
@ -414,7 +414,7 @@ void AutoHideButtonBar::show()
|
|||||||
TouchScreenGUI::TouchScreenGUI(IrrlichtDevice *device, IEventReceiver* receiver):
|
TouchScreenGUI::TouchScreenGUI(IrrlichtDevice *device, IEventReceiver* receiver):
|
||||||
m_device(device),
|
m_device(device),
|
||||||
m_guienv(device->getGUIEnvironment()),
|
m_guienv(device->getGUIEnvironment()),
|
||||||
m_camera_yaw(0.0),
|
m_camera_yaw_change(0.0),
|
||||||
m_camera_pitch(0.0),
|
m_camera_pitch(0.0),
|
||||||
m_visible(false),
|
m_visible(false),
|
||||||
m_move_id(-1),
|
m_move_id(-1),
|
||||||
@ -835,18 +835,12 @@ void TouchScreenGUI::translateEvent(const SEvent &event)
|
|||||||
|
|
||||||
/* adapt to similar behaviour as pc screen */
|
/* adapt to similar behaviour as pc screen */
|
||||||
double d = g_settings->getFloat("mouse_sensitivity") *4;
|
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;
|
double old_pitch = m_camera_pitch;
|
||||||
|
|
||||||
m_camera_yaw -= dx * d;
|
m_camera_yaw_change -= dx * d;
|
||||||
m_camera_pitch = MYMIN(MYMAX(m_camera_pitch + (dy * d), -180), 180);
|
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;
|
|
||||||
|
|
||||||
// update shootline
|
// update shootline
|
||||||
m_shootline = m_device
|
m_shootline = m_device
|
||||||
->getSceneManager()
|
->getSceneManager()
|
||||||
|
@ -147,8 +147,14 @@ public:
|
|||||||
|
|
||||||
void init(ISimpleTextureSource* tsrc);
|
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; }
|
double getPitch() { return m_camera_pitch; }
|
||||||
|
|
||||||
line3d<f32> getShootline() { return m_shootline; }
|
line3d<f32> getShootline() { return m_shootline; }
|
||||||
|
|
||||||
void step(float dtime);
|
void step(float dtime);
|
||||||
@ -170,7 +176,7 @@ private:
|
|||||||
bool m_visible; // is the gui visible
|
bool m_visible; // is the gui visible
|
||||||
|
|
||||||
/* value in degree */
|
/* value in degree */
|
||||||
double m_camera_yaw;
|
double m_camera_yaw_change;
|
||||||
double m_camera_pitch;
|
double m_camera_pitch;
|
||||||
|
|
||||||
line3d<f32> m_shootline;
|
line3d<f32> m_shootline;
|
||||||
|
Loading…
Reference in New Issue
Block a user