summaryrefslogtreecommitdiff
path: root/src/player.h
diff options
context:
space:
mode:
authorNeroBurner <pyro4hell@gmail.com>2021-08-27 20:24:24 +0200
committerGitHub <noreply@github.com>2021-08-27 20:24:24 +0200
commit1d69a23ba48d99b051dcf2a6be225edd7c644c7b (patch)
treeddc66759956a61e82092937897465313c65c17a0 /src/player.h
parent149d8fc8d6d92e8e0d6908125ad8d3179695b1ea (diff)
downloadminetest-1d69a23ba48d99b051dcf2a6be225edd7c644c7b.tar.gz
minetest-1d69a23ba48d99b051dcf2a6be225edd7c644c7b.tar.bz2
minetest-1d69a23ba48d99b051dcf2a6be225edd7c644c7b.zip
Joystick sensitivity for player movement (#11262)
This commit deprecates the forward, backward, left, and right binary inputs currently used for player movement in the PlayerControl struct. In their place, it adds the movement_speed and movement_direction values, which represents the player movement is a polar coordinate system. movement_speed is a scalar from 0.0 to 1.0. movement_direction is an angle from 0 to +-Pi: FWD 0 _ LFT / \ RGT -Pi/2 | | +Pi/2 \_/ +-Pi BCK Boolean movement bits will still be set for server telegrams and Lua script invocations to provide full backward compatibility. When generating these values from an analog input, a direction is considered active when it is 22.5 degrees away from either orthogonal axis. Co-authored-by: Markus Koch <markus@notsyncing.net> Co-authored-by: sfan5 <sfan5@live.de>
Diffstat (limited to 'src/player.h')
-rw-r--r--src/player.h25
1 files changed, 7 insertions, 18 deletions
diff --git a/src/player.h b/src/player.h
index ec068a8b1..3800e1a33 100644
--- a/src/player.h
+++ b/src/player.h
@@ -49,10 +49,6 @@ struct PlayerControl
PlayerControl() = default;
PlayerControl(
- bool a_up,
- bool a_down,
- bool a_left,
- bool a_right,
bool a_jump,
bool a_aux1,
bool a_sneak,
@@ -61,14 +57,10 @@ struct PlayerControl
bool a_place,
float a_pitch,
float a_yaw,
- float a_sidew_move_joystick_axis,
- float a_forw_move_joystick_axis
+ float a_movement_speed,
+ float a_movement_direction
)
{
- up = a_up;
- down = a_down;
- left = a_left;
- right = a_right;
jump = a_jump;
aux1 = a_aux1;
sneak = a_sneak;
@@ -77,13 +69,9 @@ struct PlayerControl
place = a_place;
pitch = a_pitch;
yaw = a_yaw;
- sidew_move_joystick_axis = a_sidew_move_joystick_axis;
- forw_move_joystick_axis = a_forw_move_joystick_axis;
+ movement_speed = a_movement_speed;
+ movement_direction = a_movement_direction;
}
- bool up = false;
- bool down = false;
- bool left = false;
- bool right = false;
bool jump = false;
bool aux1 = false;
bool sneak = false;
@@ -92,8 +80,9 @@ struct PlayerControl
bool place = false;
float pitch = 0.0f;
float yaw = 0.0f;
- float sidew_move_joystick_axis = 0.0f;
- float forw_move_joystick_axis = 0.0f;
+ // Note: These two are NOT available on the server
+ float movement_speed = 0.0f;
+ float movement_direction = 0.0f;
};
struct PlayerSettings