1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00
This commit is contained in:
TheXGuy 2025-06-25 14:31:46 +02:00 committed by GitHub
commit d7326a0a70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 32 additions and 17 deletions

View file

@ -160,11 +160,6 @@ safe_dig_and_place (Safe digging and placing) bool false
[*Keyboard and Mouse] [*Keyboard and Mouse]
# Invert vertical mouse movement.
#
# Requires: keyboard_mouse
invert_mouse (Invert mouse) bool false
# Mouse sensitivity multiplier. # Mouse sensitivity multiplier.
# #
# Requires: keyboard_mouse # Requires: keyboard_mouse
@ -493,6 +488,12 @@ view_bobbing_amount (View bobbing factor) float 1.0 0.0 7.9
[**Camera] [**Camera]
# Invert vertical camera movement.
invert_camera (Invert camera) bool false
# Inverts the 3rd person front-facing camera.
invert_third_person_front (Invert 3rd person front) bool true
# Field of view in degrees. # Field of view in degrees.
fov (Field of view) int 72 45 160 fov (Field of view) int 72 45 160

View file

@ -632,6 +632,7 @@ protected:
void updateCameraDirection(CameraOrientation *cam, float dtime); void updateCameraDirection(CameraOrientation *cam, float dtime);
void updateCameraOrientation(CameraOrientation *cam, float dtime); void updateCameraOrientation(CameraOrientation *cam, float dtime);
float getInvertedCameraState(float dir);
bool getTogglableKeyState(GameKeyType key, bool toggling_enabled, bool prev_key_state); bool getTogglableKeyState(GameKeyType key, bool toggling_enabled, bool prev_key_state);
void updatePlayerControl(const CameraOrientation &cam); void updatePlayerControl(const CameraOrientation &cam);
void updatePauseState(); void updatePauseState();
@ -832,7 +833,8 @@ private:
f32 m_repeat_dig_time; f32 m_repeat_dig_time;
f32 m_cache_cam_smoothing; f32 m_cache_cam_smoothing;
bool m_invert_mouse; bool m_invert_camera;
bool m_invert_third_person_front;
bool m_enable_hotbar_mouse_wheel; bool m_enable_hotbar_mouse_wheel;
bool m_invert_hotbar_mouse_wheel; bool m_invert_hotbar_mouse_wheel;
@ -895,7 +897,9 @@ Game::Game() :
&settingChangedCallback, this); &settingChangedCallback, this);
g_settings->registerChangedCallback("camera_smoothing", g_settings->registerChangedCallback("camera_smoothing",
&settingChangedCallback, this); &settingChangedCallback, this);
g_settings->registerChangedCallback("invert_mouse", g_settings->registerChangedCallback("invert_camera",
&settingChangedCallback, this);
g_settings->registerChangedCallback("invert_third_person_front",
&settingChangedCallback, this); &settingChangedCallback, this);
g_settings->registerChangedCallback("enable_hotbar_mouse_wheel", g_settings->registerChangedCallback("enable_hotbar_mouse_wheel",
&settingChangedCallback, this); &settingChangedCallback, this);
@ -2484,18 +2488,14 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime)
// User setting is already applied by TouchControls. // User setting is already applied by TouchControls.
f32 sens_scale = getSensitivityScaleFactor(); f32 sens_scale = getSensitivityScaleFactor();
cam->camera_yaw += g_touchcontrols->getYawChange() * sens_scale; cam->camera_yaw += g_touchcontrols->getYawChange() * sens_scale;
cam->camera_pitch += g_touchcontrols->getPitchChange() * sens_scale; cam->camera_pitch += getInvertedCameraState(g_touchcontrols->getPitchChange()) * sens_scale;
} else { } else {
v2s32 center(driver->getScreenSize().Width / 2, driver->getScreenSize().Height / 2); v2s32 center(driver->getScreenSize().Width / 2, driver->getScreenSize().Height / 2);
v2s32 dist = input->getMousePos() - center; v2s32 dist = input->getMousePos() - center;
if (m_invert_mouse || camera->getCameraMode() == CAMERA_MODE_THIRD_FRONT) {
dist.Y = -dist.Y;
}
f32 sens_scale = getSensitivityScaleFactor(); f32 sens_scale = getSensitivityScaleFactor();
cam->camera_yaw -= dist.X * m_cache_mouse_sensitivity * sens_scale; cam->camera_yaw -= dist.X * m_cache_mouse_sensitivity * sens_scale;
cam->camera_pitch += dist.Y * m_cache_mouse_sensitivity * sens_scale; cam->camera_pitch += getInvertedCameraState(dist.Y) * m_cache_mouse_sensitivity * sens_scale;
if (dist.X != 0 || dist.Y != 0) if (dist.X != 0 || dist.Y != 0)
input->setMousePos(center.X, center.Y); input->setMousePos(center.X, center.Y);
@ -2505,12 +2505,24 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime)
f32 sens_scale = getSensitivityScaleFactor(); f32 sens_scale = getSensitivityScaleFactor();
f32 c = m_cache_joystick_frustum_sensitivity * dtime * sens_scale; f32 c = m_cache_joystick_frustum_sensitivity * dtime * sens_scale;
cam->camera_yaw -= input->joystick.getAxisWithoutDead(JA_FRUSTUM_HORIZONTAL) * c; cam->camera_yaw -= input->joystick.getAxisWithoutDead(JA_FRUSTUM_HORIZONTAL) * c;
cam->camera_pitch += input->joystick.getAxisWithoutDead(JA_FRUSTUM_VERTICAL) * c; cam->camera_pitch += getInvertedCameraState(input->joystick.getAxisWithoutDead(JA_FRUSTUM_VERTICAL)) * c;
} }
cam->camera_pitch = rangelim(cam->camera_pitch, -90, 90); cam->camera_pitch = rangelim(cam->camera_pitch, -90, 90);
} }
float Game::getInvertedCameraState(float dir)
{
if (m_invert_camera) {
dir = -dir;
}
if (m_invert_third_person_front) {
if (camera->getCameraMode() == CAMERA_MODE_THIRD_FRONT) {
dir = -dir;
}
}
return dir;
}
// Get the state of an optionally togglable key // Get the state of an optionally togglable key
bool Game::getTogglableKeyState(GameKeyType key, bool toggling_enabled, bool prev_key_state) bool Game::getTogglableKeyState(GameKeyType key, bool toggling_enabled, bool prev_key_state)
@ -4229,7 +4241,8 @@ void Game::readSettings()
m_cache_cam_smoothing = rangelim(m_cache_cam_smoothing, 0.01f, 1.0f); m_cache_cam_smoothing = rangelim(m_cache_cam_smoothing, 0.01f, 1.0f);
m_cache_mouse_sensitivity = rangelim(m_cache_mouse_sensitivity, 0.001, 100.0); m_cache_mouse_sensitivity = rangelim(m_cache_mouse_sensitivity, 0.001, 100.0);
m_invert_mouse = g_settings->getBool("invert_mouse"); m_invert_camera = g_settings->getBool("invert_camera");
m_invert_third_person_front = g_settings->getBool("invert_third_person_front");
m_enable_hotbar_mouse_wheel = g_settings->getBool("enable_hotbar_mouse_wheel"); m_enable_hotbar_mouse_wheel = g_settings->getBool("enable_hotbar_mouse_wheel");
m_invert_hotbar_mouse_wheel = g_settings->getBool("invert_hotbar_mouse_wheel"); m_invert_hotbar_mouse_wheel = g_settings->getBool("invert_hotbar_mouse_wheel");

View file

@ -263,6 +263,8 @@ void set_default_settings()
settings->setDefault("autosave_screensize", "true"); settings->setDefault("autosave_screensize", "true");
settings->setDefault("fullscreen", bool_to_cstr(has_touch)); settings->setDefault("fullscreen", bool_to_cstr(has_touch));
settings->setDefault("vsync", "false"); settings->setDefault("vsync", "false");
settings->setDefault("invert_camera", "false");
settings->setDefault("invert_third_person_front", "true");
settings->setDefault("fov", "72"); settings->setDefault("fov", "72");
settings->setDefault("leaves_style", "fancy"); settings->setDefault("leaves_style", "fancy");
settings->setDefault("connected_glass", "false"); settings->setDefault("connected_glass", "false");
@ -355,7 +357,6 @@ void set_default_settings()
settings->setDefault("shadow_sky_body_orbit_tilt", "0.0"); settings->setDefault("shadow_sky_body_orbit_tilt", "0.0");
// Input // Input
settings->setDefault("invert_mouse", "false");
settings->setDefault("enable_hotbar_mouse_wheel", "true"); settings->setDefault("enable_hotbar_mouse_wheel", "true");
settings->setDefault("invert_hotbar_mouse_wheel", "false"); settings->setDefault("invert_hotbar_mouse_wheel", "false");
settings->setDefault("mouse_sensitivity", "0.2"); settings->setDefault("mouse_sensitivity", "0.2");