Skip to content

Commit 72395fc

Browse files
EXio4ShadowNinja
authored andcommitted
Add zoom, tweakable with zoom_fov, default key: Z (like optifine)
1 parent 3c3887b commit 72395fc

File tree

7 files changed

+23
-13
lines changed

7 files changed

+23
-13
lines changed

minetest.conf.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
#keymap_jump = KEY_SPACE
4141
#keymap_sneak = KEY_LSHIFT
4242
#keymap_inventory = KEY_KEY_I
43+
#keymap_zoom = KEY_KEY_Z
4344
# Go down ladder / go down in fly mode / go fast in fast mode
4445
#keymap_special1 = KEY_KEY_E
4546
#keymap_chat = KEY_KEY_T
@@ -55,6 +56,8 @@
5556
#doubletap_jump = false
5657
# If false aux1 is used to fly fast
5758
#always_fly_fast = true
59+
# FOV when using zoom
60+
#zoom_fov = 15
5861
# Some (temporary) keys for debugging
5962
#keymap_print_debug_stacks = KEY_KEY_P
6063
#keymap_quicktune_prev = KEY_HOME

src/camera.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
111111
m_cache_view_bobbing_amount = g_settings->getFloat("view_bobbing_amount");
112112
m_cache_wanted_fps = g_settings->getFloat("wanted_fps");
113113
m_cache_fov = g_settings->getFloat("fov");
114+
m_cache_zoom_fov = g_settings->getFloat("zoom_fov");
114115
m_cache_view_bobbing = g_settings->getBool("view_bobbing");
115116
}
116117

@@ -424,8 +425,13 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
424425
if (m_camera_mode == CAMERA_MODE_THIRD_FRONT)
425426
m_camera_position = my_cp;
426427

427-
// Get FOV setting
428-
f32 fov_degrees = m_cache_fov;
428+
// Get FOV
429+
f32 fov_degrees;
430+
if (player->getPlayerControl().zoom) {
431+
fov_degrees = m_cache_zoom_fov;
432+
} else {
433+
fov_degrees = m_cache_fov;
434+
}
429435
fov_degrees = MYMAX(fov_degrees, 10.0);
430436
fov_degrees = MYMIN(fov_degrees, 170.0);
431437

src/camera.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ class Camera
214214
f32 m_cache_view_bobbing_amount;
215215
f32 m_cache_wanted_fps;
216216
f32 m_cache_fov;
217+
f32 m_cache_zoom_fov;
217218
bool m_cache_view_bobbing;
218219
};
219220

src/defaultsettings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ void set_default_settings(Settings *settings)
3939
settings->setDefault("keymap_jump", "KEY_SPACE");
4040
settings->setDefault("keymap_sneak", "KEY_LSHIFT");
4141
settings->setDefault("keymap_drop", "KEY_KEY_Q");
42+
settings->setDefault("keymap_zoom", "KEY_KEY_Z");
4243
settings->setDefault("keymap_inventory", "KEY_KEY_I");
4344
settings->setDefault("keymap_special1", "KEY_KEY_E");
4445
settings->setDefault("keymap_chat", "KEY_KEY_T");
@@ -71,6 +72,7 @@ void set_default_settings(Settings *settings)
7172
settings->setDefault("always_fly_fast", "true");
7273
settings->setDefault("directional_colored_fog", "true");
7374
settings->setDefault("tooltip_show_delay", "400");
75+
settings->setDefault("zoom_fov", "15");
7476

7577
// Some (temporary) keys for debugging
7678
settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P");

src/game.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1243,6 +1243,7 @@ struct KeyCache {
12431243
KEYMAP_ID_INCREASE_VIEWING_RANGE,
12441244
KEYMAP_ID_DECREASE_VIEWING_RANGE,
12451245
KEYMAP_ID_RANGESELECT,
1246+
KEYMAP_ID_ZOOM,
12461247

12471248
KEYMAP_ID_QUICKTUNE_NEXT,
12481249
KEYMAP_ID_QUICKTUNE_PREV,
@@ -1299,6 +1300,7 @@ void KeyCache::populate()
12991300
= getKeySetting("keymap_decrease_viewing_range_min");
13001301
key[KEYMAP_ID_RANGESELECT]
13011302
= getKeySetting("keymap_rangeselect");
1303+
key[KEYMAP_ID_ZOOM] = getKeySetting("keymap_zoom");
13021304

13031305
key[KEYMAP_ID_QUICKTUNE_NEXT] = getKeySetting("keymap_quicktune_next");
13041306
key[KEYMAP_ID_QUICKTUNE_PREV] = getKeySetting("keymap_quicktune_prev");
@@ -2927,6 +2929,7 @@ void Game::updatePlayerControl(const CameraOrientation &cam)
29272929
input->isKeyDown(keycache.key[KeyCache::KEYMAP_ID_JUMP]),
29282930
input->isKeyDown(keycache.key[KeyCache::KEYMAP_ID_SPECIAL1]),
29292931
input->isKeyDown(keycache.key[KeyCache::KEYMAP_ID_SNEAK]),
2932+
input->isKeyDown(keycache.key[KeyCache::KEYMAP_ID_ZOOM]),
29302933
input->getLeftState(),
29312934
input->getRightState(),
29322935
cam.camera_pitch,

src/guiKeyChangeMenu.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ enum
5959
GUI_ID_KEY_INVENTORY_BUTTON,
6060
GUI_ID_KEY_DUMP_BUTTON,
6161
GUI_ID_KEY_RANGE_BUTTON,
62+
GUI_ID_KEY_ZOOM_BUTTON,
6263
// other
6364
GUI_ID_CB_AUX1_DESCENDS,
6465
GUI_ID_CB_DOUBLETAP_JUMP,
@@ -411,4 +412,5 @@ void GUIKeyChangeMenu::init_keys()
411412
this->add_key(GUI_ID_KEY_NOCLIP_BUTTON, wgettext("Toggle noclip"), "keymap_noclip");
412413
this->add_key(GUI_ID_KEY_RANGE_BUTTON, wgettext("Range select"), "keymap_rangeselect");
413414
this->add_key(GUI_ID_KEY_DUMP_BUTTON, wgettext("Print stacks"), "keymap_print_debug_stacks");
415+
this->add_key(GUI_ID_KEY_ZOOM_BUTTON, wgettext("Zoom"), "keymap_zoom");
414416
}

src/player.h

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,8 @@ struct PlayerControl
3333
{
3434
PlayerControl()
3535
{
36-
up = false;
37-
down = false;
38-
left = false;
39-
right = false;
40-
jump = false;
41-
aux1 = false;
42-
sneak = false;
43-
LMB = false;
44-
RMB = false;
45-
pitch = 0;
46-
yaw = 0;
4736
}
37+
4838
PlayerControl(
4939
bool a_up,
5040
bool a_down,
@@ -53,6 +43,7 @@ struct PlayerControl
5343
bool a_jump,
5444
bool a_aux1,
5545
bool a_sneak,
46+
bool a_zoom,
5647
bool a_LMB,
5748
bool a_RMB,
5849
float a_pitch,
@@ -66,6 +57,7 @@ struct PlayerControl
6657
jump = a_jump;
6758
aux1 = a_aux1;
6859
sneak = a_sneak;
60+
zoom = a_zoom;
6961
LMB = a_LMB;
7062
RMB = a_RMB;
7163
pitch = a_pitch;
@@ -78,6 +70,7 @@ struct PlayerControl
7870
bool jump;
7971
bool aux1;
8072
bool sneak;
73+
bool zoom;
8174
bool LMB;
8275
bool RMB;
8376
float pitch;

0 commit comments

Comments
 (0)