Add keybinds for camera movement (#17071)

This commit is contained in:
siliconsniffer
2026-04-06 19:04:31 +02:00
committed by GitHub
parent dc6277d7a1
commit 434ec55026
6 changed files with 43 additions and 3 deletions
+10
View File
@@ -177,6 +177,11 @@ invert_mouse (Invert mouse) bool false
# Requires: keyboard_mouse
mouse_sensitivity (Mouse sensitivity) float 0.2 0.001 10.0
# Keyboard-controlled camera rotation speed, in degrees per second.
#
# Requires: keyboard_mouse
keyboard_camera_speed (Keyboard camera speed) float 170.0 0.001 720.0
# Enable mouse wheel (scroll) for item selection in hotbar.
#
# Requires: keyboard_mouse
@@ -258,6 +263,11 @@ keymap_drop (Drop item) key SYSTEM_SCANCODE_20
keymap_zoom (Zoom) key SYSTEM_SCANCODE_29
keymap_camera_yaw_left (Look left) key
keymap_camera_yaw_right (Look right) key
keymap_camera_pitch_up (Look up) key
keymap_camera_pitch_down (Look down) key
keymap_toggle_hud (Toggle HUD) key SYSTEM_SCANCODE_58
keymap_toggle_chat (Toggle chat log) key SYSTEM_SCANCODE_59
+16 -3
View File
@@ -385,6 +385,7 @@ Game::Game() :
"repeat_place_time", "repeat_dig_time", "noclip", "free_move", "fog_start",
"cinematic", "cinematic_camera_smoothing", "camera_smoothing", "invert_mouse",
"enable_hotbar_mouse_wheel", "invert_hotbar_mouse_wheel", "pause_on_lost_focus",
"keyboard_camera_speed",
};
for (auto s : settings)
g_settings->registerChangedCallback(s, &settingChangedCallback, this);
@@ -1984,9 +1985,10 @@ bool Game::isTouchShootlineUsed() const
void Game::updateCameraOrientation(CameraOrientation *cam, float dtime)
{
f32 sens_scale = getSensitivityScaleFactor();
if (g_touchcontrols) {
// User setting is already applied by TouchControls.
f32 sens_scale = getSensitivityScaleFactor();
cam->camera_yaw += g_touchcontrols->getYawChange() * sens_scale;
cam->camera_pitch += g_touchcontrols->getPitchChange() * sens_scale;
} else {
@@ -1997,7 +1999,6 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime)
dist.Y = -dist.Y;
}
f32 sens_scale = getSensitivityScaleFactor();
cam->camera_yaw -= dist.X * m_cache_mouse_sensitivity * sens_scale;
cam->camera_pitch += dist.Y * m_cache_mouse_sensitivity * sens_scale;
@@ -2006,12 +2007,23 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime)
}
if (m_cache_enable_joysticks) {
f32 sens_scale = getSensitivityScaleFactor();
f32 c = m_cache_joystick_frustum_sensitivity * dtime * sens_scale;
cam->camera_yaw -= input->joystick.getAxisWithoutDead(JA_FRUSTUM_HORIZONTAL) * c;
cam->camera_pitch += input->joystick.getAxisWithoutDead(JA_FRUSTUM_VERTICAL) * c;
}
// Keyboard look
const f32 rate = m_cache_keyboard_camera_speed * dtime * sens_scale;
if (input->isKeyDown(KeyType::CAMERA_YAW_LEFT))
cam->camera_yaw += rate;
if (input->isKeyDown(KeyType::CAMERA_YAW_RIGHT))
cam->camera_yaw -= rate;
if (input->isKeyDown(KeyType::CAMERA_PITCH_UP))
cam->camera_pitch -= rate;
if (input->isKeyDown(KeyType::CAMERA_PITCH_DOWN))
cam->camera_pitch += rate;
cam->camera_pitch = rangelim(cam->camera_pitch, -90, 90);
}
@@ -3726,6 +3738,7 @@ void Game::readSettings()
m_cache_enable_joysticks = g_settings->getBool("enable_joysticks");
m_cache_enable_fog = g_settings->getBool("enable_fog");
m_cache_mouse_sensitivity = g_settings->getFloat("mouse_sensitivity", 0.001f, 10.0f);
m_cache_keyboard_camera_speed = g_settings->getFloat("keyboard_camera_speed", 0.001f, 720.0f);
m_cache_joystick_frustum_sensitivity = std::max(g_settings->getFloat("joystick_frustum_sensitivity"), 0.001f);
m_repeat_place_time = g_settings->getFloat("repeat_place_time", 0.16f, 2.0f);
m_repeat_dig_time = g_settings->getFloat("repeat_dig_time", 0.0f, 2.0f);
+1
View File
@@ -360,6 +360,7 @@ private:
bool m_cache_enable_noclip;
bool m_cache_enable_free_move;
f32 m_cache_mouse_sensitivity;
f32 m_cache_keyboard_camera_speed;
f32 m_cache_joystick_frustum_sensitivity;
f32 m_repeat_place_time;
f32 m_repeat_dig_time;
+5
View File
@@ -63,6 +63,11 @@ void MyEventReceiver::reloadKeybindings()
keybindings[KeyType::RANGESELECT] = getKeySetting("keymap_rangeselect");
keybindings[KeyType::ZOOM] = getKeySetting("keymap_zoom");
keybindings[KeyType::CAMERA_YAW_LEFT] = getKeySetting("keymap_camera_yaw_left");
keybindings[KeyType::CAMERA_YAW_RIGHT] = getKeySetting("keymap_camera_yaw_right");
keybindings[KeyType::CAMERA_PITCH_UP] = getKeySetting("keymap_camera_pitch_up");
keybindings[KeyType::CAMERA_PITCH_DOWN] = getKeySetting("keymap_camera_pitch_down");
keybindings[KeyType::QUICKTUNE_NEXT] = getKeySetting("keymap_quicktune_next");
keybindings[KeyType::QUICKTUNE_PREV] = getKeySetting("keymap_quicktune_prev");
keybindings[KeyType::QUICKTUNE_INC] = getKeySetting("keymap_quicktune_inc");
+6
View File
@@ -23,6 +23,12 @@ public:
ESC,
// Camera look (keyboard)
CAMERA_YAW_LEFT,
CAMERA_YAW_RIGHT,
CAMERA_PITCH_UP,
CAMERA_PITCH_DOWN,
// Other
DROP,
INVENTORY,
+5
View File
@@ -175,6 +175,10 @@ void set_default_settings()
settings->setDefault("keymap_toggle_debug", "SYSTEM_SCANCODE_62"); // KEY_F5
settings->setDefault("keymap_toggle_profiler", "SYSTEM_SCANCODE_63"); // KEY_F6
settings->setDefault("keymap_camera_mode", "SYSTEM_SCANCODE_6"); // KEY_KEY_C
settings->setDefault("keymap_camera_yaw_left", "");
settings->setDefault("keymap_camera_yaw_right", "");
settings->setDefault("keymap_camera_pitch_up", "");
settings->setDefault("keymap_camera_pitch_down", "");
settings->setDefault("keymap_screenshot", "SYSTEM_SCANCODE_69"); // KEY_F12
settings->setDefault("keymap_fullscreen", "SYSTEM_SCANCODE_68"); // KEY_F11
settings->setDefault("keymap_increase_viewing_range_min", "SYSTEM_SCANCODE_46"); // +
@@ -364,6 +368,7 @@ void set_default_settings()
settings->setDefault("enable_hotbar_mouse_wheel", "true");
settings->setDefault("invert_hotbar_mouse_wheel", "false");
settings->setDefault("mouse_sensitivity", "0.2");
settings->setDefault("keyboard_camera_speed", "170.0");
settings->setDefault("repeat_place_time", "0.25");
settings->setDefault("repeat_dig_time", "0.0");
settings->setDefault("safe_dig_and_place", "false");