mirror of
https://github.com/luanti-org/luanti.git
synced 2026-04-17 08:37:33 +00:00
Add keybinds for camera movement (#17071)
This commit is contained in:
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -23,6 +23,12 @@ public:
|
||||
|
||||
ESC,
|
||||
|
||||
// Camera look (keyboard)
|
||||
CAMERA_YAW_LEFT,
|
||||
CAMERA_YAW_RIGHT,
|
||||
CAMERA_PITCH_UP,
|
||||
CAMERA_PITCH_DOWN,
|
||||
|
||||
// Other
|
||||
DROP,
|
||||
INVENTORY,
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user