[client] Make input axes accessible and add camera axes

And clean up the names (viewdelta_position_forward -> in_move_forward).
This commit is contained in:
Bill Currie 2022-03-01 15:13:55 +09:00
parent 7c07118541
commit 8407e3acd1
3 changed files with 45 additions and 22 deletions

View file

@ -45,6 +45,10 @@ extern struct cvar_s *cl_pitchspeed;
extern struct cvar_s *cl_anglespeedkey; 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 FORWARD 0
#define SIDE 1 #define SIDE 1
@ -66,6 +70,9 @@ void CL_Input_Init (struct cbuf_s *cbuf);
void CL_Input_Init_Cvars (void); void CL_Input_Init_Cvars (void);
void CL_Input_Activate (int in_game); 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_left, in_right, in_forward, in_back;
extern in_button_t in_lookup, in_lookdown, in_moveleft, in_moveright; extern in_button_t in_lookup, in_lookdown, in_moveleft, in_moveright;
extern in_button_t in_use, in_jump, in_attack; extern in_button_t in_use, in_jump, in_attack;

View file

@ -147,8 +147,8 @@ cam_controls (chasestate_t *cs, viewstate_t *vs)
// mouse and joystick controllers add to movement // mouse and joystick controllers add to movement
VectorSet (0, vs->player_angles[1] - cs->camera_angles[1], 0, dir); VectorSet (0, vs->player_angles[1] - cs->camera_angles[1], 0, dir);
AngleVectors (&dir[0], &forward[0], &right[0], &up[0]); //FIXME AngleVectors (&dir[0], &forward[0], &right[0], &up[0]); //FIXME
//forward *= viewdelta.position[2] * m_forward->value; FIXME forward *= IN_UpdateAxis (&in_cam_forward) * m_forward->value;
//right *= viewdelta.position[0] * m_side->value; FIXME right *= IN_UpdateAxis (&in_cam_side) * m_side->value;
dir = forward + right; dir = forward + right;
move[FORWARD] += dir[0]; move[FORWARD] += dir[0];
move[SIDE] -= dir[1]; move[SIDE] -= dir[1];

View file

@ -1,7 +1,7 @@
/* /*
cl_legacy.c cl_input.c
Client legacy commands Client input commands
Copyright (C) 2021 Bill Currie <bill@taniwha.org> Copyright (C) 2021 Bill Currie <bill@taniwha.org>
@ -60,33 +60,49 @@ static int cl_event_id;
static struct LISTENER_SET_TYPE(int) cl_on_focus_change static struct LISTENER_SET_TYPE(int) cl_on_focus_change
= LISTENER_SET_STATIC_INIT(4); = LISTENER_SET_STATIC_INIT(4);
in_axis_t viewdelta_position_forward = { in_axis_t in_move_forward = {
.mode = ina_set, .mode = ina_set,
.name = "move.forward", .name = "move.forward",
.description = "Move forward (negative) or backward (positive)", .description = "Move forward (negative) or backward (positive)",
}; };
in_axis_t viewdelta_position_side = { in_axis_t in_move_side = {
.mode = ina_set, .mode = ina_set,
.name = "move.side", .name = "move.side",
.description = "Move right (positive) or left (negative)", .description = "Move right (positive) or left (negative)",
}; };
in_axis_t viewdelta_position_up = { in_axis_t in_move_up = {
.mode = ina_set, .mode = ina_set,
.name = "move.up", .name = "move.up",
.description = "Move up (positive) or down (negative)", .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, .mode = ina_set,
.name = "move.pitch", .name = "move.pitch",
.description = "Pitch axis", .description = "Pitch axis",
}; };
in_axis_t viewdelta_angles_yaw = { in_axis_t in_move_yaw = {
.mode = ina_set, .mode = ina_set,
.name = "move.yaw", .name = "move.yaw",
.description = "Yaw axis", .description = "Yaw axis",
}; };
in_axis_t viewdelta_angles_roll = { in_axis_t in_move_roll = {
.mode = ina_set, .mode = ina_set,
.name = "move.roll", .name = "move.roll",
.description = "Roll axis", .description = "Roll axis",
@ -167,12 +183,12 @@ in_button_t in_mlook = {
}; };
static in_axis_t *cl_in_axes[] = { static in_axis_t *cl_in_axes[] = {
&viewdelta_position_forward, &in_move_forward,
&viewdelta_position_side, &in_move_side,
&viewdelta_position_up, &in_move_up,
&viewdelta_angles_pitch, &in_move_pitch,
&viewdelta_angles_yaw, &in_move_yaw,
&viewdelta_angles_roll, &in_move_roll,
0, 0,
}; };
@ -246,9 +262,9 @@ CL_AdjustAngles (float frametime, movestate_t *ms, viewstate_t *vs)
delta[PITCH] -= pitchspeed * up; delta[PITCH] -= pitchspeed * up;
delta[PITCH] += pitchspeed * down; delta[PITCH] += pitchspeed * down;
delta[PITCH] -= IN_UpdateAxis (&viewdelta_angles_pitch) * m_pitch->value; delta[PITCH] -= IN_UpdateAxis (&in_move_pitch) * m_pitch->value;
delta[YAW] -= IN_UpdateAxis (&viewdelta_angles_yaw) * m_yaw->value; delta[YAW] -= IN_UpdateAxis (&in_move_yaw) * m_yaw->value;
delta[ROLL] -= IN_UpdateAxis (&viewdelta_angles_roll) * m_pitch->value; delta[ROLL] -= IN_UpdateAxis (&in_move_roll) * m_pitch->value;
ms->angles += delta; ms->angles += delta;
@ -371,9 +387,9 @@ CL_Input_BuildMove (float frametime, movestate_t *state, viewstate_t *vs)
move *= cl_movespeedkey->value; move *= cl_movespeedkey->value;
} }
move[FORWARD] -= IN_UpdateAxis (&viewdelta_position_forward) * m_forward->value; move[FORWARD] -= IN_UpdateAxis (&in_move_forward) * m_forward->value;
move[SIDE] += IN_UpdateAxis (&viewdelta_position_side) * m_side->value; move[SIDE] += IN_UpdateAxis (&in_move_side) * m_side->value;
move[UP] -= IN_UpdateAxis (&viewdelta_position_up); move[UP] -= IN_UpdateAxis (&in_move_up);
if (freelook) if (freelook)
V_StopPitchDrift (vs); V_StopPitchDrift (vs);