From 8407e3acd1a5703dd98f998219e972c51db5e67b Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 1 Mar 2022 15:13:55 +0900 Subject: [PATCH] [client] Make input axes accessible and add camera axes And clean up the names (viewdelta_position_forward -> in_move_forward). --- include/client/input.h | 7 ++++++ libs/client/cl_chase.c | 4 +-- libs/client/cl_input.c | 56 +++++++++++++++++++++++++++--------------- 3 files changed, 45 insertions(+), 22 deletions(-) diff --git a/include/client/input.h b/include/client/input.h index ace69afa3..e66d02140 100644 --- a/include/client/input.h +++ b/include/client/input.h @@ -45,6 +45,10 @@ extern struct cvar_s *cl_pitchspeed; extern struct cvar_s *cl_anglespeedkey; +extern struct cvar_s *m_pitch; +extern struct cvar_s *m_yaw; +extern struct cvar_s *m_forward; +extern struct cvar_s *m_side; #define FORWARD 0 #define SIDE 1 @@ -66,6 +70,9 @@ void CL_Input_Init (struct cbuf_s *cbuf); void CL_Input_Init_Cvars (void); void CL_Input_Activate (int in_game); +extern in_axis_t in_move_forward, in_move_side, in_move_up; +extern in_axis_t in_move_pitch, in_move_yaw, in_move_roll; +extern in_axis_t in_cam_forward, in_cam_side, in_cam_up; extern in_button_t in_left, in_right, in_forward, in_back; extern in_button_t in_lookup, in_lookdown, in_moveleft, in_moveright; extern in_button_t in_use, in_jump, in_attack; diff --git a/libs/client/cl_chase.c b/libs/client/cl_chase.c index f3a8131f7..67d3f5749 100644 --- a/libs/client/cl_chase.c +++ b/libs/client/cl_chase.c @@ -147,8 +147,8 @@ cam_controls (chasestate_t *cs, viewstate_t *vs) // mouse and joystick controllers add to movement VectorSet (0, vs->player_angles[1] - cs->camera_angles[1], 0, dir); AngleVectors (&dir[0], &forward[0], &right[0], &up[0]); //FIXME - //forward *= viewdelta.position[2] * m_forward->value; FIXME - //right *= viewdelta.position[0] * m_side->value; FIXME + forward *= IN_UpdateAxis (&in_cam_forward) * m_forward->value; + right *= IN_UpdateAxis (&in_cam_side) * m_side->value; dir = forward + right; move[FORWARD] += dir[0]; move[SIDE] -= dir[1]; diff --git a/libs/client/cl_input.c b/libs/client/cl_input.c index 02c3a8255..739176db4 100644 --- a/libs/client/cl_input.c +++ b/libs/client/cl_input.c @@ -1,7 +1,7 @@ /* - cl_legacy.c + cl_input.c - Client legacy commands + Client input commands Copyright (C) 2021 Bill Currie @@ -60,33 +60,49 @@ static int cl_event_id; static struct LISTENER_SET_TYPE(int) cl_on_focus_change = LISTENER_SET_STATIC_INIT(4); -in_axis_t viewdelta_position_forward = { +in_axis_t in_move_forward = { .mode = ina_set, .name = "move.forward", .description = "Move forward (negative) or backward (positive)", }; -in_axis_t viewdelta_position_side = { +in_axis_t in_move_side = { .mode = ina_set, .name = "move.side", .description = "Move right (positive) or left (negative)", }; -in_axis_t viewdelta_position_up = { +in_axis_t in_move_up = { .mode = ina_set, .name = "move.up", .description = "Move up (positive) or down (negative)", }; -in_axis_t viewdelta_angles_pitch = { +in_axis_t in_cam_forward = { + .mode = ina_set, + .name = "cam.forward", + .description = "Move camera forward (negative) or backward (positive)", +}; +in_axis_t in_cam_side = { + .mode = ina_set, + .name = "cam.side", + .description = "Move camera right (positive) or left (negative)", +}; +in_axis_t in_cam_up = { + .mode = ina_set, + .name = "cam.up", + .description = "Move camera up (positive) or down (negative)", +}; + +in_axis_t in_move_pitch = { .mode = ina_set, .name = "move.pitch", .description = "Pitch axis", }; -in_axis_t viewdelta_angles_yaw = { +in_axis_t in_move_yaw = { .mode = ina_set, .name = "move.yaw", .description = "Yaw axis", }; -in_axis_t viewdelta_angles_roll = { +in_axis_t in_move_roll = { .mode = ina_set, .name = "move.roll", .description = "Roll axis", @@ -167,12 +183,12 @@ in_button_t in_mlook = { }; static in_axis_t *cl_in_axes[] = { - &viewdelta_position_forward, - &viewdelta_position_side, - &viewdelta_position_up, - &viewdelta_angles_pitch, - &viewdelta_angles_yaw, - &viewdelta_angles_roll, + &in_move_forward, + &in_move_side, + &in_move_up, + &in_move_pitch, + &in_move_yaw, + &in_move_roll, 0, }; @@ -246,9 +262,9 @@ CL_AdjustAngles (float frametime, movestate_t *ms, viewstate_t *vs) delta[PITCH] -= pitchspeed * up; delta[PITCH] += pitchspeed * down; - delta[PITCH] -= IN_UpdateAxis (&viewdelta_angles_pitch) * m_pitch->value; - delta[YAW] -= IN_UpdateAxis (&viewdelta_angles_yaw) * m_yaw->value; - delta[ROLL] -= IN_UpdateAxis (&viewdelta_angles_roll) * m_pitch->value; + delta[PITCH] -= IN_UpdateAxis (&in_move_pitch) * m_pitch->value; + delta[YAW] -= IN_UpdateAxis (&in_move_yaw) * m_yaw->value; + delta[ROLL] -= IN_UpdateAxis (&in_move_roll) * m_pitch->value; ms->angles += delta; @@ -371,9 +387,9 @@ CL_Input_BuildMove (float frametime, movestate_t *state, viewstate_t *vs) move *= cl_movespeedkey->value; } - move[FORWARD] -= IN_UpdateAxis (&viewdelta_position_forward) * m_forward->value; - move[SIDE] += IN_UpdateAxis (&viewdelta_position_side) * m_side->value; - move[UP] -= IN_UpdateAxis (&viewdelta_position_up); + move[FORWARD] -= IN_UpdateAxis (&in_move_forward) * m_forward->value; + move[SIDE] += IN_UpdateAxis (&in_move_side) * m_side->value; + move[UP] -= IN_UpdateAxis (&in_move_up); if (freelook) V_StopPitchDrift (vs);