@@ -2333,13 +2333,15 @@ void Game::updateCameraDirection(CameraOrientation *cam, float dtime)
2333
2333
}
2334
2334
#endif
2335
2335
2336
- if (m_first_loop_after_window_activation)
2336
+ if (m_first_loop_after_window_activation) {
2337
2337
m_first_loop_after_window_activation = false ;
2338
- else
2338
+
2339
+ input->setMousePos (driver->getScreenSize ().Width / 2 ,
2340
+ driver->getScreenSize ().Height / 2 );
2341
+ } else {
2339
2342
updateCameraOrientation (cam, dtime);
2343
+ }
2340
2344
2341
- input->setMousePos ((driver->getScreenSize ().Width / 2 ),
2342
- (driver->getScreenSize ().Height / 2 ));
2343
2345
} else {
2344
2346
2345
2347
#ifndef ANDROID
@@ -2361,17 +2363,18 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime)
2361
2363
cam->camera_pitch = g_touchscreengui->getPitch ();
2362
2364
} else {
2363
2365
#endif
2364
-
2365
- s32 dx = input->getMousePos ().X - (driver->getScreenSize ().Width / 2 );
2366
- s32 dy = input->getMousePos ().Y - (driver->getScreenSize ().Height / 2 );
2366
+ v2s32 center (driver->getScreenSize ().Width / 2 , driver->getScreenSize ().Height / 2 );
2367
+ v2s32 dist = input->getMousePos () - center;
2367
2368
2368
2369
if (m_invert_mouse || camera->getCameraMode () == CAMERA_MODE_THIRD_FRONT) {
2369
- dy = -dy ;
2370
+ dist. Y = -dist. Y ;
2370
2371
}
2371
2372
2372
- cam->camera_yaw -= dx * m_cache_mouse_sensitivity;
2373
- cam->camera_pitch += dy * m_cache_mouse_sensitivity;
2373
+ cam->camera_yaw -= dist. X * m_cache_mouse_sensitivity;
2374
+ cam->camera_pitch += dist. Y * m_cache_mouse_sensitivity;
2374
2375
2376
+ if (dist.X != 0 || dist.Y != 0 )
2377
+ input->setMousePos (center.X , center.Y );
2375
2378
#ifdef HAVE_TOUCHSCREENGUI
2376
2379
}
2377
2380
#endif
0 commit comments