mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-01-29 20:20:43 +00:00
Merged joystick code. Great deal of cleanup in input, reduced bizarre overuse of protocol.h...
Maimed joy_win.c, very likely to get odd behavior there, even if it compiles.
This commit is contained in:
parent
5cd24de097
commit
f789b61c56
38 changed files with 282 additions and 775 deletions
|
@ -1440,6 +1440,8 @@ AC_OUTPUT(
|
||||||
libs/audio/targets/Makefile
|
libs/audio/targets/Makefile
|
||||||
libs/gamecode/Makefile
|
libs/gamecode/Makefile
|
||||||
libs/util/Makefile
|
libs/util/Makefile
|
||||||
|
libs/video/Makefile
|
||||||
|
libs/video/targets/Makefile
|
||||||
|
|
||||||
qw/Makefile
|
qw/Makefile
|
||||||
qw/quakeforge.lsm
|
qw/quakeforge.lsm
|
||||||
|
|
|
@ -29,10 +29,13 @@
|
||||||
#ifndef _INPUT_H
|
#ifndef _INPUT_H
|
||||||
#define _INPUT_H
|
#define _INPUT_H
|
||||||
|
|
||||||
#include "client.h"
|
|
||||||
#include "protocol.h"
|
|
||||||
#include "QF/cvar.h"
|
#include "QF/cvar.h"
|
||||||
|
|
||||||
|
struct {
|
||||||
|
vec3_t angles;
|
||||||
|
vec3_t position;
|
||||||
|
} viewdelta;
|
||||||
|
|
||||||
#define freelook (in_mlook.state&1 || cl_freelook->int_val)
|
#define freelook (in_mlook.state&1 || cl_freelook->int_val)
|
||||||
|
|
||||||
void IN_Init (void);
|
void IN_Init (void);
|
||||||
|
@ -46,7 +49,7 @@ void IN_Commands (void);
|
||||||
void IN_SendKeyEvents (void);
|
void IN_SendKeyEvents (void);
|
||||||
// Perform Key_Event () callbacks until the input que is empty
|
// Perform Key_Event () callbacks until the input que is empty
|
||||||
|
|
||||||
void IN_Move (usercmd_t *cmd);
|
void IN_Move (void); // FIXME: was cmduser_t?
|
||||||
// add additional movement on top of the keyboard move cmd
|
// add additional movement on top of the keyboard move cmd
|
||||||
|
|
||||||
void IN_ModeChanged (void);
|
void IN_ModeChanged (void);
|
||||||
|
|
|
@ -53,14 +53,14 @@ extern qboolean joy_active; // Joystick in use?
|
||||||
void JOY_Command (void);
|
void JOY_Command (void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
JOY_Move (usercmd_t *)
|
JOY_Move (usercmd_t *) // FIXME: Not anymore!
|
||||||
|
|
||||||
Use this function to process joystick movements to move the player around.
|
Use this function to process joystick movements to move the player around.
|
||||||
|
|
||||||
You should exit this function immediately if either joy_active or
|
You should exit this function immediately if either joy_active or
|
||||||
joy_enable->int_val are zero.
|
joy_enable->int_val are zero.
|
||||||
*/
|
*/
|
||||||
void JOY_Move (usercmd_t *);
|
void JOY_Move (void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
JOY_Init ()
|
JOY_Init ()
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#ifndef _IN_WIN_H
|
#ifndef _IN_WIN_H
|
||||||
#define _IN_WIN_H
|
#define _IN_WIN_H
|
||||||
|
|
||||||
#include "protocol.h"
|
#include "protocol.h" // FIXME: Do away with this.
|
||||||
|
|
||||||
extern qboolean mouseactive;
|
extern qboolean mouseactive;
|
||||||
extern float mouse_x, mouse_y;
|
extern float mouse_x, mouse_y;
|
||||||
|
@ -45,11 +45,9 @@ extern void IN_Init (void);
|
||||||
extern void IN_Shutdown (void);
|
extern void IN_Shutdown (void);
|
||||||
extern void IN_MouseEvent (int mstate);
|
extern void IN_MouseEvent (int mstate);
|
||||||
extern void IN_MouseMove (usercmd_t *cmd);
|
extern void IN_MouseMove (usercmd_t *cmd);
|
||||||
extern void IN_Move (usercmd_t *cmd);
|
extern void IN_Move (void);
|
||||||
extern void IN_Accumulate (void);
|
extern void IN_Accumulate (void);
|
||||||
extern void IN_ClearStates (void);
|
extern void IN_ClearStates (void);
|
||||||
extern void IN_Commands (void);
|
extern void IN_Commands (void);
|
||||||
|
|
||||||
#endif // _IN_WIN_H
|
#endif // _IN_WIN_H
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
SUBDIRS= audio gamecode util
|
SUBDIRS= audio gamecode util video
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
rm -f *.a
|
rm -f *.a
|
||||||
|
|
3
libs/video/.gitignore
vendored
Normal file
3
libs/video/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
.vimrc
|
||||||
|
Makefile.in
|
||||||
|
Makefile
|
4
libs/video/Makefile.am
Normal file
4
libs/video/Makefile.am
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
SUBDIRS= targets
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
rm -f *.a
|
3
libs/video/targets/.gitignore
vendored
Normal file
3
libs/video/targets/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
.vimrc
|
||||||
|
Makefile.in
|
||||||
|
Makefile
|
16
libs/video/targets/Makefile.am
Normal file
16
libs/video/targets/Makefile.am
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
lib_LTLIBRARIES = libQFjs.la
|
||||||
|
|
||||||
|
libQFjs_la_LDFLAGS = -version-info 1:0:0 $(CD_LIBS)
|
||||||
|
|
||||||
|
if JOYTYPE_LINUX
|
||||||
|
libQFjs_la_SOURCES= joy_linux.c
|
||||||
|
endif
|
||||||
|
if JOYTYPE_WIN32
|
||||||
|
libQFjs_la_SOURCES= joy_win.c
|
||||||
|
endif
|
||||||
|
if JOYTYPE_NULL
|
||||||
|
libQFjs_la_SOURCES= joy_null.c
|
||||||
|
endif
|
||||||
|
libQFjs_la_CFLAGS= $(JOY_CFLAGS)
|
||||||
|
|
||||||
|
LIBLIST = libQFjs.la @LIBRARY_SEARCH_PATH@
|
|
@ -37,11 +37,10 @@
|
||||||
|
|
||||||
#include "QF/compat.h"
|
#include "QF/compat.h"
|
||||||
#include "QF/console.h"
|
#include "QF/console.h"
|
||||||
#include "client.h"
|
|
||||||
#include "QF/cvar.h"
|
#include "QF/cvar.h"
|
||||||
|
#include "QF/input.h"
|
||||||
#include "QF/keys.h"
|
#include "QF/keys.h"
|
||||||
#include "protocol.h"
|
#include "QF/mathlib.h"
|
||||||
#include "view.h"
|
|
||||||
|
|
||||||
#define JOY_MAX_AXES 6
|
#define JOY_MAX_AXES 6
|
||||||
#define JOY_MAX_BUTTONS 16
|
#define JOY_MAX_BUTTONS 16
|
||||||
|
@ -119,44 +118,41 @@ JOY_Command (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
JOY_Move (usercmd_t *cmd)
|
JOY_Move (void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!joy_active || !joy_enable->int_val)
|
if (!joy_active || !joy_enable->int_val)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Cvar_SetValue (joy_sensitivity, bound (1, joy_sensitivity->value, 25));
|
Cvar_SetValue (joy_sensitivity, max (0.01, joy_sensitivity->value));
|
||||||
for (i = 0; i < JOY_MAX_AXES; i++) {
|
for (i = 0; i < JOY_MAX_AXES; i++) {
|
||||||
switch (joy_axes[i].axis->int_val) {
|
switch (joy_axes[i].axis->int_val) {
|
||||||
case 1:
|
case 1:
|
||||||
cl.viewangles[YAW] -=
|
viewdelta.angles[YAW] -=
|
||||||
m_yaw->value * (float) (joy_axes[i].current /
|
(float) (joy_axes[i].current /
|
||||||
(201 -
|
(201 -
|
||||||
(joy_sensitivity->value * 4)));
|
(joy_sensitivity->value * 4)));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
cmd->forwardmove -=
|
viewdelta.position[2] -=
|
||||||
m_forward->value * (float) (joy_axes[i].current /
|
(float) (joy_axes[i].current /
|
||||||
(201 -
|
(201 -
|
||||||
(joy_sensitivity->value * 4)));
|
(joy_sensitivity->value * 4)));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
cmd->sidemove +=
|
viewdelta.position[0] +=
|
||||||
m_side->value * (float) (joy_axes[i].current /
|
(float) (joy_axes[i].current /
|
||||||
(201 -
|
(201 -
|
||||||
(joy_sensitivity->value * 4)));
|
(joy_sensitivity->value * 4)));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (joy_axes[i].current) {
|
if (joy_axes[i].current) {
|
||||||
V_StopPitchDrift ();
|
viewdelta.angles[PITCH] -=
|
||||||
cl.viewangles[PITCH] -=
|
(float) (joy_axes[i].current /
|
||||||
m_pitch->value * (float) (joy_axes[i].current /
|
(201 -
|
||||||
(201 -
|
(joy_sensitivity->value *
|
||||||
(joy_sensitivity->value *
|
4)));
|
||||||
4)));
|
|
||||||
cl.viewangles[PITCH] =
|
|
||||||
bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -199,19 +195,19 @@ JOY_Init_Cvars (void)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
joy_device =
|
joy_device =
|
||||||
Cvar_Get ("joy_device", "/dev/js0", CVAR_NONE | CVAR_ROM, NULL,
|
Cvar_Get ("joy_device", "/dev/js0", CVAR_NONE | CVAR_ROM, 0,
|
||||||
"Joystick device");
|
"Joystick device");
|
||||||
joy_enable =
|
joy_enable =
|
||||||
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, 0,
|
||||||
"Joystick enable flag");
|
"Joystick enable flag");
|
||||||
joy_sensitivity =
|
joy_sensitivity =
|
||||||
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, 0,
|
||||||
"Joystick sensitivity");
|
"Joystick sensitivity");
|
||||||
|
|
||||||
for (i = 0; i < JOY_MAX_AXES; i++) {
|
for (i = 0; i < JOY_MAX_AXES; i++) {
|
||||||
joy_axes[i].axis = Cvar_Get (joy_axes[i].var.name,
|
joy_axes[i].axis = Cvar_Get (joy_axes[i].var.name,
|
||||||
joy_axes[i].var.string,
|
joy_axes[i].var.string,
|
||||||
CVAR_ARCHIVE, NULL, "Set joystick axes");
|
CVAR_ARCHIVE, 0, "Set joystick axes");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
|
|
||||||
#include "QF/console.h"
|
#include "QF/console.h"
|
||||||
#include "QF/cvar.h"
|
#include "QF/cvar.h"
|
||||||
#include "protocol.h"
|
|
||||||
#include "QF/qtypes.h"
|
#include "QF/qtypes.h"
|
||||||
|
|
||||||
// Joystick variables and structures
|
// Joystick variables and structures
|
||||||
|
@ -49,7 +48,7 @@ JOY_Command (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
JOY_Move (usercmd_t *cmd)
|
JOY_Move (void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,13 +62,13 @@ void
|
||||||
JOY_Init_Cvars (void)
|
JOY_Init_Cvars (void)
|
||||||
{
|
{
|
||||||
joy_device =
|
joy_device =
|
||||||
Cvar_Get ("joy_device", "none", CVAR_NONE | CVAR_ROM, NULL,
|
Cvar_Get ("joy_device", "none", CVAR_NONE | CVAR_ROM, 0,
|
||||||
"Joystick device");
|
"Joystick device");
|
||||||
joy_enable =
|
joy_enable =
|
||||||
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, 0,
|
||||||
"Joystick enable flag");
|
"Joystick enable flag");
|
||||||
joy_sensitivity =
|
joy_sensitivity =
|
||||||
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, 0,
|
||||||
"Joystick sensitivity");
|
"Joystick sensitivity");
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,6 @@
|
||||||
#include <dinput.h>
|
#include <dinput.h>
|
||||||
#undef byte
|
#undef byte
|
||||||
|
|
||||||
#include "cl_input.h"
|
|
||||||
#include "client.h"
|
|
||||||
#include "QF/cmd.h"
|
#include "QF/cmd.h"
|
||||||
#include "QF/compat.h"
|
#include "QF/compat.h"
|
||||||
#include "QF/console.h"
|
#include "QF/console.h"
|
||||||
|
@ -49,9 +47,7 @@
|
||||||
#include "host.h"
|
#include "host.h"
|
||||||
#include "QF/input.h"
|
#include "QF/input.h"
|
||||||
#include "QF/keys.h"
|
#include "QF/keys.h"
|
||||||
#include "protocol.h"
|
|
||||||
#include "QF/qargs.h"
|
#include "QF/qargs.h"
|
||||||
#include "view.h"
|
|
||||||
|
|
||||||
// Joystick variables and structures
|
// Joystick variables and structures
|
||||||
cvar_t *joy_device; // Joystick device name
|
cvar_t *joy_device; // Joystick device name
|
||||||
|
@ -129,7 +125,7 @@ DWORD joy_numbuttons;
|
||||||
//
|
//
|
||||||
void JOY_AdvancedUpdate_f (void);
|
void JOY_AdvancedUpdate_f (void);
|
||||||
void JOY_StartupJoystick (void);
|
void JOY_StartupJoystick (void);
|
||||||
void JOY_Move (usercmd_t *cmd);
|
void JOY_Move (void);
|
||||||
void JOY_Init_Cvars(void);
|
void JOY_Init_Cvars(void);
|
||||||
|
|
||||||
PDWORD RawValuePointer (int axis);
|
PDWORD RawValuePointer (int axis);
|
||||||
|
@ -221,7 +217,7 @@ JOY_Command (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
JOY_Move (usercmd_t *cmd)
|
JOY_Move (void)
|
||||||
{
|
{
|
||||||
float speed, aspeed;
|
float speed, aspeed;
|
||||||
float fAxisValue, fTemp;
|
float fAxisValue, fTemp;
|
||||||
|
@ -286,15 +282,14 @@ JOY_Move (usercmd_t *cmd)
|
||||||
// only absolute control support here (joy_advanced
|
// only absolute control support here (joy_advanced
|
||||||
// is false)
|
// is false)
|
||||||
if (m_pitch->value < 0.0) {
|
if (m_pitch->value < 0.0) {
|
||||||
cl.viewangles[PITCH] -=
|
viewdelta.angles[PITCH] -=
|
||||||
(fAxisValue * joy_pitchsensitivity->value) *
|
(fAxisValue * joy_pitchsensitivity->value) *
|
||||||
aspeed * cl_pitchspeed->value;
|
aspeed * cl_pitchspeed->value;
|
||||||
} else {
|
} else {
|
||||||
cl.viewangles[PITCH] +=
|
viewdelta.angles[PITCH] +=
|
||||||
(fAxisValue * joy_pitchsensitivity->value) *
|
(fAxisValue * joy_pitchsensitivity->value) *
|
||||||
aspeed * cl_pitchspeed->value;
|
aspeed * cl_pitchspeed->value;
|
||||||
}
|
}
|
||||||
V_StopPitchDrift ();
|
|
||||||
} else {
|
} else {
|
||||||
// no pitch movement
|
// no pitch movement
|
||||||
// disable pitch return-to-center unless requested by
|
// disable pitch return-to-center unless requested by
|
||||||
|
@ -308,7 +303,7 @@ JOY_Move (usercmd_t *cmd)
|
||||||
} else {
|
} else {
|
||||||
// user wants forward control to be forward control
|
// user wants forward control to be forward control
|
||||||
if (fabs (fAxisValue) > joy_forwardthreshold->value) {
|
if (fabs (fAxisValue) > joy_forwardthreshold->value) {
|
||||||
cmd->forwardmove +=
|
viewdelta.position[0] +=
|
||||||
(fAxisValue * joy_forwardsensitivity->value) *
|
(fAxisValue * joy_forwardsensitivity->value) *
|
||||||
speed * cl_forwardspeed->value;
|
speed * cl_forwardspeed->value;
|
||||||
}
|
}
|
||||||
|
@ -317,7 +312,7 @@ JOY_Move (usercmd_t *cmd)
|
||||||
|
|
||||||
case AxisSide:
|
case AxisSide:
|
||||||
if (fabs (fAxisValue) > joy_sidethreshold->value) {
|
if (fabs (fAxisValue) > joy_sidethreshold->value) {
|
||||||
cmd->sidemove +=
|
viewdelta.position[1] +=
|
||||||
(fAxisValue * joy_sidesensitivity->value) * speed *
|
(fAxisValue * joy_sidesensitivity->value) * speed *
|
||||||
cl_sidespeed->value;
|
cl_sidespeed->value;
|
||||||
}
|
}
|
||||||
|
@ -327,7 +322,7 @@ JOY_Move (usercmd_t *cmd)
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook)) {
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook)) {
|
||||||
// user wants turn control to become side control
|
// user wants turn control to become side control
|
||||||
if (fabs (fAxisValue) > joy_sidethreshold->value) {
|
if (fabs (fAxisValue) > joy_sidethreshold->value) {
|
||||||
cmd->sidemove -=
|
viewdelta.position[0] -=
|
||||||
(fAxisValue * joy_sidesensitivity->value) * speed *
|
(fAxisValue * joy_sidesensitivity->value) * speed *
|
||||||
cl_sidespeed->value;
|
cl_sidespeed->value;
|
||||||
}
|
}
|
||||||
|
@ -335,11 +330,11 @@ JOY_Move (usercmd_t *cmd)
|
||||||
// user wants turn control to be turn control
|
// user wants turn control to be turn control
|
||||||
if (fabs (fAxisValue) > joy_yawthreshold->value) {
|
if (fabs (fAxisValue) > joy_yawthreshold->value) {
|
||||||
if (dwControlMap[i] == JOY_ABSOLUTE_AXIS) {
|
if (dwControlMap[i] == JOY_ABSOLUTE_AXIS) {
|
||||||
cl.viewangles[YAW] +=
|
viewdelta.angles[YAW] +=
|
||||||
(fAxisValue * joy_yawsensitivity->value) *
|
(fAxisValue * joy_yawsensitivity->value) *
|
||||||
aspeed * cl_yawspeed->value;
|
aspeed * cl_yawspeed->value;
|
||||||
} else {
|
} else {
|
||||||
cl.viewangles[YAW] +=
|
viewdelta.angles[YAW] +=
|
||||||
(fAxisValue * joy_yawsensitivity->value) *
|
(fAxisValue * joy_yawsensitivity->value) *
|
||||||
speed * 180.0;
|
speed * 180.0;
|
||||||
}
|
}
|
||||||
|
@ -353,15 +348,14 @@ JOY_Move (usercmd_t *cmd)
|
||||||
// pitch movement detected and pitch movement desired
|
// pitch movement detected and pitch movement desired
|
||||||
// by user
|
// by user
|
||||||
if (dwControlMap[i] == JOY_ABSOLUTE_AXIS) {
|
if (dwControlMap[i] == JOY_ABSOLUTE_AXIS) {
|
||||||
cl.viewangles[PITCH] +=
|
viewdelta.angles[PITCH] +=
|
||||||
(fAxisValue * joy_pitchsensitivity->value) *
|
(fAxisValue * joy_pitchsensitivity->value) *
|
||||||
aspeed * cl_pitchspeed->value;
|
aspeed * cl_pitchspeed->value;
|
||||||
} else {
|
} else {
|
||||||
cl.viewangles[PITCH] +=
|
viewdelta.angles[PITCH] +=
|
||||||
(fAxisValue * joy_pitchsensitivity->value) *
|
(fAxisValue * joy_pitchsensitivity->value) *
|
||||||
speed * 180.0;
|
speed * 180.0;
|
||||||
}
|
}
|
||||||
V_StopPitchDrift ();
|
|
||||||
} else {
|
} else {
|
||||||
// no pitch movement
|
// no pitch movement
|
||||||
// disable pitch return-to-center unless requested by
|
// disable pitch return-to-center unless requested by
|
||||||
|
@ -379,9 +373,6 @@ JOY_Move (usercmd_t *cmd)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// bounds check pitch
|
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -555,66 +546,54 @@ void
|
||||||
JOY_Init_Cvars(void)
|
JOY_Init_Cvars(void)
|
||||||
{
|
{
|
||||||
joy_device =
|
joy_device =
|
||||||
Cvar_Get ("joy_device", "none", CVAR_NONE | CVAR_ROM, NULL,
|
Cvar_Get ("joy_device", "none", CVAR_NONE | CVAR_ROM, 0,
|
||||||
"Joystick device");
|
"Joystick device");
|
||||||
joy_enable =
|
joy_enable =
|
||||||
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, 0,
|
||||||
"Joystick enable flag");
|
"Joystick enable flag");
|
||||||
joy_sensitivity =
|
joy_sensitivity =
|
||||||
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, 0,
|
||||||
"Joystick sensitivity");
|
"Joystick sensitivity");
|
||||||
|
|
||||||
// joystick variables
|
// joystick variables
|
||||||
|
|
||||||
in_joystick =
|
in_joystick =
|
||||||
Cvar_Get ("joystick", "0", CVAR_ARCHIVE, NULL, "FIXME: No Description");
|
Cvar_Get ("joystick", "0", CVAR_ARCHIVE, 0, "FIXME: No Description");
|
||||||
joy_name =
|
joy_name =
|
||||||
Cvar_Get ("joyname", "joystick", CVAR_NONE, NULL,
|
Cvar_Get ("joyname", "joystick", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
joy_advanced =
|
joy_advanced =
|
||||||
Cvar_Get ("joyadvanced", "0", CVAR_NONE, NULL, "FIXME: No Description");
|
Cvar_Get ("joyadvanced", "0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_advaxisx =
|
joy_advaxisx =
|
||||||
Cvar_Get ("joyadvaxisx", "0", CVAR_NONE, NULL, "FIXME: No Description");
|
Cvar_Get ("joyadvaxisx", "0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_advaxisy =
|
joy_advaxisy =
|
||||||
Cvar_Get ("joyadvaxisy", "0", CVAR_NONE, NULL, "FIXME: No Description");
|
Cvar_Get ("joyadvaxisy", "0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_advaxisz =
|
joy_advaxisz =
|
||||||
Cvar_Get ("joyadvaxisz", "0", CVAR_NONE, NULL, "FIXME: No Description");
|
Cvar_Get ("joyadvaxisz", "0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_advaxisr =
|
joy_advaxisr =
|
||||||
Cvar_Get ("joyadvaxisr", "0", CVAR_NONE, NULL, "FIXME: No Description");
|
Cvar_Get ("joyadvaxisr", "0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_advaxisu =
|
joy_advaxisu =
|
||||||
Cvar_Get ("joyadvaxisu", "0", CVAR_NONE, NULL, "FIXME: No Description");
|
Cvar_Get ("joyadvaxisu", "0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_advaxisv =
|
joy_advaxisv =
|
||||||
Cvar_Get ("joyadvaxisv", "0", CVAR_NONE, NULL, "FIXME: No Description");
|
Cvar_Get ("joyadvaxisv", "0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_forwardthreshold =
|
joy_forwardthreshold =
|
||||||
Cvar_Get ("joyforwardthreshold", "0.15", CVAR_NONE, NULL,
|
Cvar_Get ("joyforwardthreshold", "0.15", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
joy_sidethreshold =
|
joy_sidethreshold =
|
||||||
Cvar_Get ("joysidethreshold", "0.15", CVAR_NONE, NULL,
|
Cvar_Get ("joysidethreshold", "0.15", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
joy_pitchthreshold =
|
joy_pitchthreshold =
|
||||||
Cvar_Get ("joypitchthreshold", "0.15", CVAR_NONE, NULL,
|
Cvar_Get ("joypitchthreshold", "0.15", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
joy_yawthreshold = Cvar_Get ("joyyawthreshold", "0.15", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_yawthreshold = Cvar_Get ("joyyawthreshold", "0.15", CVAR_NONE, NULL,
|
|
||||||
"FIXME: No Description");
|
|
||||||
joy_forwardsensitivity =
|
joy_forwardsensitivity =
|
||||||
Cvar_Get ("joyforwardsensitivity", "-1.0", CVAR_NONE, NULL,
|
Cvar_Get ("joyforwardsensitivity", "-1.0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
joy_sidesensitivity =
|
joy_sidesensitivity =
|
||||||
Cvar_Get ("joysidesensitivity", "-1.0", CVAR_NONE, NULL,
|
Cvar_Get ("joysidesensitivity", "-1.0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
joy_pitchsensitivity =
|
joy_pitchsensitivity =
|
||||||
Cvar_Get ("joypitchsensitivity", "1.0", CVAR_NONE, NULL,
|
Cvar_Get ("joypitchsensitivity", "1.0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
joy_yawsensitivity =
|
joy_yawsensitivity =
|
||||||
Cvar_Get ("joyyawsensitivity", "-1.0", CVAR_NONE, NULL,
|
Cvar_Get ("joyyawsensitivity", "-1.0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
joy_wwhack1 = Cvar_Get ("joywwhack1", "0.0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
joy_wwhack1 = Cvar_Get ("joywwhack1", "0.0", CVAR_NONE, NULL,
|
joy_wwhack2 = Cvar_Get ("joywwhack2", "0.0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
joy_wwhack2 = Cvar_Get ("joywwhack2", "0.0", CVAR_NONE, NULL,
|
|
||||||
"FIXME: No Description");
|
|
||||||
|
|
||||||
joy_debug = Cvar_Get ("joy_debug", "0.0", CVAR_NONE, NULL,
|
joy_debug = Cvar_Get ("joy_debug", "0.0", CVAR_NONE, 0, "FIXME: No Description");
|
||||||
"FIXME: No Description");
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
|
@ -224,6 +224,7 @@ extern mplane_t *mirror_plane;
|
||||||
extern float r_world_matrix[16];
|
extern float r_world_matrix[16];
|
||||||
|
|
||||||
extern float bubble_sintable[], bubble_costable[];
|
extern float bubble_sintable[], bubble_costable[];
|
||||||
|
extern float v_blend[4];
|
||||||
|
|
||||||
extern const char *gl_vendor;
|
extern const char *gl_vendor;
|
||||||
extern const char *gl_renderer;
|
extern const char *gl_renderer;
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
/*
|
|
||||||
view.h
|
|
||||||
|
|
||||||
@description@
|
|
||||||
|
|
||||||
Copyright (C) 1996-1997 Id Software, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to:
|
|
||||||
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
59 Temple Place - Suite 330
|
|
||||||
Boston, MA 02111-1307, USA
|
|
||||||
|
|
||||||
$Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __view_h
|
|
||||||
#define __view_h
|
|
||||||
|
|
||||||
#include "QF/qtypes.h"
|
|
||||||
#include "QF/cvar.h"
|
|
||||||
|
|
||||||
extern byte gammatable[256]; // palette is sent through this
|
|
||||||
extern byte ramps[3][256];
|
|
||||||
extern float v_blend[4];
|
|
||||||
|
|
||||||
extern cvar_t *brightness;
|
|
||||||
extern cvar_t *contrast;
|
|
||||||
extern cvar_t *crosshair;
|
|
||||||
|
|
||||||
|
|
||||||
void V_Init (void);
|
|
||||||
void V_RenderView (void);
|
|
||||||
float V_CalcRoll (vec3_t angles, vec3_t velocity);
|
|
||||||
void V_UpdatePalette (void);
|
|
||||||
void V_CalcBlend (void);
|
|
||||||
|
|
||||||
void V_CalcIntermissionRefdef (void);
|
|
||||||
void V_CalcRefdef (void);
|
|
||||||
void V_CalcPowerupCshift (void);
|
|
||||||
qboolean V_CheckGamma (void);
|
|
||||||
|
|
||||||
extern cvar_t *scr_ofsx;
|
|
||||||
extern cvar_t *scr_ofsy;
|
|
||||||
extern cvar_t *scr_ofsz;
|
|
||||||
extern cvar_t *cl_crossx;
|
|
||||||
extern cvar_t *cl_crossy;
|
|
||||||
extern cvar_t *gl_cshiftpercent;
|
|
||||||
|
|
||||||
extern vec3_t forward, right, up;
|
|
||||||
|
|
||||||
#endif // __cvar_h
|
|
|
@ -38,7 +38,7 @@ bin_PROGRAMS = @NQ_TARGETS@
|
||||||
EXTRA_PROGRAMS= nq-3dfx nq-fbdev nq-glx nq-mgl nq-sdl \
|
EXTRA_PROGRAMS= nq-3dfx nq-fbdev nq-glx nq-mgl nq-sdl \
|
||||||
nq-sgl nq-svga nq-wgl nq-x11 nq-server
|
nq-sgl nq-svga nq-wgl nq-x11 nq-server
|
||||||
|
|
||||||
noinst_LIBRARIES= libqfjs.a libqfnet.a
|
noinst_LIBRARIES= libqfsys.a libqfnet.a
|
||||||
|
|
||||||
#if ASM_ARCH
|
#if ASM_ARCH
|
||||||
math_ASM= cl_math.S
|
math_ASM= cl_math.S
|
||||||
|
@ -62,18 +62,6 @@ else
|
||||||
qfsys_SRC= sys_unix.c
|
qfsys_SRC= sys_unix.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
|
||||||
# ... Joystick
|
|
||||||
#
|
|
||||||
if JOYTYPE_LINUX
|
|
||||||
libqfjs_a_SOURCES= joy_linux.c
|
|
||||||
endif
|
|
||||||
if JOYTYPE_NULL
|
|
||||||
libqfjs_a_SOURCES= joy_null.c
|
|
||||||
endif
|
|
||||||
libqfjs_a_CFLAGS= $(JOY_CFLAGS)
|
|
||||||
EXTRA_libqfjs_a_SOURCES= joy_linux.c joy_null.c
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# ... Networking
|
# ... Networking
|
||||||
#
|
#
|
||||||
|
@ -87,8 +75,9 @@ client_LIBS= $(top_builddir)/libs/gamecode/libQFgamecode.la \
|
||||||
$(top_builddir)/libs/util/libQFutil.la \
|
$(top_builddir)/libs/util/libQFutil.la \
|
||||||
$(top_builddir)/libs/audio/cd/libQFcd.la \
|
$(top_builddir)/libs/audio/cd/libQFcd.la \
|
||||||
$(top_builddir)/libs/audio/targets/libQFsound.la \
|
$(top_builddir)/libs/audio/targets/libQFsound.la \
|
||||||
-L. -lqfjs -lqfnet $(SOUND_LIBS) $(NET_LIBS)
|
$(top_builddir)/libs/video/targets/libQFjs.la \
|
||||||
client_LIB_DEPS= libqfjs.a libqfnet.a
|
-L. -lqfsys -lqfnet $(SOUND_LIBS) $(NET_LIBS)
|
||||||
|
client_LIB_DEPS= libqfsys.a libqfnet.a
|
||||||
|
|
||||||
client_SOURCES= cl_cam.c cl_cmd.c cl_demo.c cl_input.c cl_main.c cl_parse.c \
|
client_SOURCES= cl_cam.c cl_cmd.c cl_demo.c cl_input.c cl_main.c cl_parse.c \
|
||||||
cl_tent.c console.c keys.c sbar.c r_part.c r_view.c \
|
cl_tent.c console.c keys.c sbar.c r_part.c r_view.c \
|
||||||
|
|
|
@ -34,9 +34,11 @@
|
||||||
|
|
||||||
#include "QF/msg.h"
|
#include "QF/msg.h"
|
||||||
#include "host.h"
|
#include "host.h"
|
||||||
#include "QF/console.h"
|
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "QF/cmd.h"
|
#include "QF/cmd.h"
|
||||||
|
#include "QF/console.h"
|
||||||
|
#include "QF/compat.h"
|
||||||
|
#include "QF/input.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
@ -512,6 +514,25 @@ CL_BaseMove (usercmd_t *cmd)
|
||||||
#ifdef QUAKE2
|
#ifdef QUAKE2
|
||||||
cmd->lightlevel = cl.light_level;
|
cmd->lightlevel = cl.light_level;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (freelook)
|
||||||
|
V_StopPitchDrift ();
|
||||||
|
|
||||||
|
viewdelta.angles[0] = viewdelta.angles[1] = viewdelta.angles[2] = 0;
|
||||||
|
viewdelta.position[0] = viewdelta.position[1] = viewdelta.position[2] = 0;
|
||||||
|
|
||||||
|
IN_Move ();
|
||||||
|
|
||||||
|
cmd->forwardmove += viewdelta.position[2] * m_forward->value;
|
||||||
|
cmd->sidemove += viewdelta.position[0] * m_side->value;
|
||||||
|
cmd->upmove += viewdelta.position[1];
|
||||||
|
cl.viewangles[PITCH] += viewdelta.angles[PITCH] * m_pitch->value;
|
||||||
|
cl.viewangles[YAW] += viewdelta.angles[YAW] * m_yaw->value;
|
||||||
|
cl.viewangles[ROLL] += viewdelta.angles[ROLL];
|
||||||
|
|
||||||
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
|
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -803,12 +803,8 @@ CL_SendCmd (void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (cls.signon == SIGNONS) {
|
if (cls.signon == SIGNONS) {
|
||||||
// get basic movement from keyboard
|
|
||||||
CL_BaseMove (&cmd);
|
CL_BaseMove (&cmd);
|
||||||
|
|
||||||
// allow mice or other external controllers to add to the move
|
|
||||||
IN_Move (&cmd);
|
|
||||||
|
|
||||||
// send the unreliable message
|
// send the unreliable message
|
||||||
CL_SendMove (&cmd);
|
CL_SendMove (&cmd);
|
||||||
|
|
||||||
|
|
|
@ -31,11 +31,26 @@
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "view.h"
|
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "host.h"
|
|
||||||
#include "QF/console.h"
|
#include "QF/console.h"
|
||||||
#include "QF/compat.h"
|
#include "QF/compat.h"
|
||||||
|
#include "glquake.h"
|
||||||
|
#include "host.h"
|
||||||
|
#include "view.h"
|
||||||
|
|
||||||
|
extern byte gammatable[256];
|
||||||
|
|
||||||
|
extern qboolean V_CheckGamma (void);
|
||||||
|
|
||||||
|
extern void V_CalcIntermissionRefdef (void);
|
||||||
|
extern void V_CalcPowerupCshift (void);
|
||||||
|
extern void V_CalcRefdef (void);
|
||||||
|
|
||||||
|
extern cvar_t *crosshair;
|
||||||
|
extern cvar_t *gl_cshiftpercent;
|
||||||
|
extern cvar_t *scr_ofsx;
|
||||||
|
extern cvar_t *scr_ofsy;
|
||||||
|
extern cvar_t *scr_ofsz;
|
||||||
|
|
||||||
byte ramps[3][256];
|
byte ramps[3][256];
|
||||||
float v_blend[4]; // rgba 0.0 - 1.0
|
float v_blend[4]; // rgba 0.0 - 1.0
|
||||||
|
|
|
@ -275,7 +275,7 @@ IN_Move
|
||||||
===========
|
===========
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
IN_MouseMove (usercmd_t *cmd)
|
IN_MouseMove (void)
|
||||||
{
|
{
|
||||||
int mx, my;
|
int mx, my;
|
||||||
|
|
||||||
|
@ -306,20 +306,13 @@ IN_MouseMove (usercmd_t *cmd)
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
||||||
|
|
||||||
if (in_mlook.state & 1)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if ((in_mlook.state & 1) && !(in_strafe.state & 1)) {
|
if ((in_mlook.state & 1) && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * mouse_y;
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
if (cl.viewangles[PITCH] > 80)
|
|
||||||
cl.viewangles[PITCH] = 80;
|
|
||||||
if (cl.viewangles[PITCH] < -70)
|
|
||||||
cl.viewangles[PITCH] = -70;
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +322,7 @@ IN_JoyMove
|
||||||
===========
|
===========
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
IN_JoyMove (usercmd_t *cmd)
|
IN_JoyMove (void)
|
||||||
{
|
{
|
||||||
float speed, aspeed;
|
float speed, aspeed;
|
||||||
|
|
||||||
|
@ -383,10 +376,10 @@ IN_Move
|
||||||
===========
|
===========
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
IN_MouseMove (cmd);
|
IN_MouseMove ();
|
||||||
IN_JoyMove (cmd);
|
IN_JoyMove ();
|
||||||
IN_ExternalMove (cmd);
|
IN_ExternalMove (cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,7 @@ IN_Commands (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ IN_Commands (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (null)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
HWND mainwindow;
|
HWND mainwindow;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
cvar_t *m_filter;
|
||||||
cvar_t *_windowed_mouse;
|
cvar_t *_windowed_mouse;
|
||||||
int old_windowed_mouse;
|
int old_windowed_mouse;
|
||||||
|
|
||||||
|
@ -61,6 +62,7 @@ int modestate; // FIXME: just to avoid cross-comp.
|
||||||
|
|
||||||
static qboolean mouse_avail;
|
static qboolean mouse_avail;
|
||||||
static float mouse_x, mouse_y;
|
static float mouse_x, mouse_y;
|
||||||
|
static float old_mouse_x, old_mouse_y;
|
||||||
static int mouse_oldbuttonstate = 0;
|
static int mouse_oldbuttonstate = 0;
|
||||||
|
|
||||||
extern viddef_t vid; // global video state
|
extern viddef_t vid; // global video state
|
||||||
|
@ -359,8 +361,7 @@ IN_Init_Cvars (void)
|
||||||
_windowed_mouse =
|
_windowed_mouse =
|
||||||
Cvar_Get ("_windowed_mouse", "0", CVAR_ARCHIVE, NULL,
|
Cvar_Get ("_windowed_mouse", "0", CVAR_ARCHIVE, NULL,
|
||||||
"If set to 1, quake will grab the mouse in X");
|
"If set to 1, quake will grab the mouse in X");
|
||||||
// m_filter = Cvar_Get ("m_filter", "0", CVAR_ARCHIVE, NULL,
|
m_filter = Cvar_Get ("m_filter", "0", CVAR_ARCHIVE, NULL, "Toggle mouse input filtering");
|
||||||
// "Toggle mouse input filtering");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -394,42 +395,35 @@ IN_Frame (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
JOY_Move (cmd);
|
JOY_Move ();
|
||||||
|
|
||||||
if (!mouse_avail)
|
if (!mouse_avail)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* from vid_sdl.c
|
|
||||||
if (m_filter->value) {
|
if (m_filter->value) {
|
||||||
mouse_x = (mouse_x + old_mouse_x) * 0.5;
|
mouse_x = (mouse_x + old_mouse_x) * 0.5;
|
||||||
mouse_y = (mouse_y + old_mouse_y) * 0.5;
|
mouse_y = (mouse_y + old_mouse_y) * 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
old_mouse_x = mouse_x;
|
old_mouse_x = mouse_x;
|
||||||
old_mouse_y = mouse_y;
|
old_mouse_y = mouse_y;
|
||||||
*/
|
|
||||||
|
|
||||||
mouse_x *= sensitivity->value;
|
mouse_x *= sensitivity->value;
|
||||||
mouse_y *= sensitivity->value;
|
mouse_y *= sensitivity->value;
|
||||||
|
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->value && (in_mlook.state & 1)))
|
if ((in_strafe.state & 1) || (lookstrafe->value && (in_mlook.state & 1)))
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] =
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
bound (-70, cl.viewangles[PITCH] + (m_pitch->value * mouse_y), 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
mouse_x = mouse_y = 0.0;
|
mouse_x = mouse_y = 0.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@ extern int global_dx, global_dy;
|
||||||
// globals
|
// globals
|
||||||
//
|
//
|
||||||
|
|
||||||
|
cvar_t *m_filter;
|
||||||
cvar_t *_windowed_mouse;
|
cvar_t *_windowed_mouse;
|
||||||
int x_root, y_root;
|
int x_root, y_root;
|
||||||
int x_root_old, y_root_old;
|
int x_root_old, y_root_old;
|
||||||
|
@ -199,7 +200,7 @@ IN_Commands (void)
|
||||||
//
|
//
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
static int last_dx, last_dy;
|
static int last_dx, last_dy;
|
||||||
static long long last_movement;
|
static long long last_movement;
|
||||||
|
@ -250,24 +251,17 @@ IN_Move (usercmd_t *cmd)
|
||||||
}
|
}
|
||||||
// add mouse X/Y movement to cmd
|
// add mouse X/Y movement to cmd
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && (in_mlook.state & 1)))
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && (in_mlook.state & 1)))
|
||||||
cmd->sidemove += m_side->value * dx;
|
viewdelta.position[0] += dx;
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * dx;
|
viewdelta.angles[YAW] -= dx;
|
||||||
|
|
||||||
if (in_mlook.state & 1)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if ((in_mlook.state & 1) && !(in_strafe.state & 1)) {
|
if ((in_mlook.state & 1) && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * dy;
|
viewdelta.angles[PITCH] += dy;
|
||||||
if (cl.viewangles[PITCH] > 80)
|
|
||||||
cl.viewangles[PITCH] = 80;
|
|
||||||
if (cl.viewangles[PITCH] < -70)
|
|
||||||
cl.viewangles[PITCH] = -70;
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * dy;
|
viewdelta.position[1] -= dy;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * dy;
|
viewdelta.position[2] -= dy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -360,9 +360,10 @@ IN_Commands (void)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
JOY_Move (cmd);
|
JOY_Move ();
|
||||||
|
|
||||||
if (!UseMouse)
|
if (!UseMouse)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -378,6 +379,7 @@ IN_Move (usercmd_t *cmd)
|
||||||
}
|
}
|
||||||
old_mouse_x = mx;
|
old_mouse_x = mx;
|
||||||
old_mouse_y = my;
|
old_mouse_y = my;
|
||||||
|
|
||||||
/* Clear for next update */
|
/* Clear for next update */
|
||||||
mx = my = 0;
|
mx = my = 0;
|
||||||
|
|
||||||
|
@ -386,22 +388,18 @@ IN_Move (usercmd_t *cmd)
|
||||||
|
|
||||||
/* Add mouse X/Y movement to cmd */
|
/* Add mouse X/Y movement to cmd */
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook)) {
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook)) {
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
} else {
|
} else {
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * mouse_y;
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack) {
|
if ((in_strafe.state & 1) && noclip_anglehack) {
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
} else {
|
} else {
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -591,7 +591,7 @@ IN_MouseMove
|
||||||
===========
|
===========
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
IN_MouseMove (usercmd_t *cmd)
|
IN_MouseMove (void)
|
||||||
{
|
{
|
||||||
int mx, my;
|
int mx, my;
|
||||||
|
|
||||||
|
@ -696,21 +696,17 @@ IN_MouseMove (usercmd_t *cmd)
|
||||||
|
|
||||||
// add mouse X/Y movement to cmd
|
// add mouse X/Y movement to cmd
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * mouse_y;
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] = mouse_y;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the mouse has moved, force it to the center, so there's room to move
|
// if the mouse has moved, force it to the center, so there's room to move
|
||||||
|
@ -726,12 +722,12 @@ IN_Move
|
||||||
===========
|
===========
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (ActiveApp && !Minimized) {
|
if (ActiveApp && !Minimized) {
|
||||||
IN_MouseMove (cmd);
|
IN_MouseMove ();
|
||||||
IN_JoyMove (cmd);
|
IN_JoyMove ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -431,9 +431,9 @@ IN_SendKeyEvents (void)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
JOY_Move (cmd);
|
JOY_Move ();
|
||||||
|
|
||||||
if (!mouse_avail)
|
if (!mouse_avail)
|
||||||
return;
|
return;
|
||||||
|
@ -441,30 +441,25 @@ IN_Move (usercmd_t *cmd)
|
||||||
if (m_filter->int_val) {
|
if (m_filter->int_val) {
|
||||||
mouse_x = (mouse_x + old_mouse_x) * 0.5;
|
mouse_x = (mouse_x + old_mouse_x) * 0.5;
|
||||||
mouse_y = (mouse_y + old_mouse_y) * 0.5;
|
mouse_y = (mouse_y + old_mouse_y) * 0.5;
|
||||||
|
|
||||||
old_mouse_x = mouse_x;
|
|
||||||
old_mouse_y = mouse_y;
|
|
||||||
}
|
}
|
||||||
|
old_mouse_x = mouse_x;
|
||||||
|
old_mouse_y = mouse_y;
|
||||||
|
|
||||||
mouse_x *= sensitivity->value;
|
mouse_x *= sensitivity->value;
|
||||||
mouse_y *= sensitivity->value;
|
mouse_y *= sensitivity->value;
|
||||||
|
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * mouse_y;
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
mouse_x = mouse_y = 0.0;
|
mouse_x = mouse_y = 0.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,231 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
joy_linux.c
|
|
||||||
|
|
||||||
Joystick driver for Linux
|
|
||||||
|
|
||||||
Copyright (C) 2000 David Jeffery
|
|
||||||
Copyright (C) 2000 Jeff Teunissen <deek@dusknet.dhs.org>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to:
|
|
||||||
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
59 Temple Place - Suite 330
|
|
||||||
Boston, MA 02111-1307, USA
|
|
||||||
|
|
||||||
$Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <linux/joystick.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include "QF/compat.h"
|
|
||||||
#include "QF/console.h"
|
|
||||||
#include "client.h"
|
|
||||||
#include "QF/cvar.h"
|
|
||||||
#include "QF/keys.h"
|
|
||||||
#include "protocol.h"
|
|
||||||
#include "view.h"
|
|
||||||
|
|
||||||
#define JOY_MAX_AXES 6
|
|
||||||
#define JOY_MAX_BUTTONS 16
|
|
||||||
|
|
||||||
cvar_t *joy_device; // Joystick device name
|
|
||||||
cvar_t *joy_enable; // Joystick enabling flag
|
|
||||||
cvar_t *joy_sensitivity; // Joystick sensitivity
|
|
||||||
|
|
||||||
qboolean joy_found = false;
|
|
||||||
qboolean joy_active = false;
|
|
||||||
|
|
||||||
// Variables and structures for this driver
|
|
||||||
int joy_handle;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char *name;
|
|
||||||
char *string;
|
|
||||||
} ocvar_t;
|
|
||||||
|
|
||||||
struct joy_axis {
|
|
||||||
cvar_t *axis;
|
|
||||||
ocvar_t var;
|
|
||||||
int current;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct joy_button {
|
|
||||||
int old;
|
|
||||||
int current;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct joy_axis joy_axes[JOY_MAX_AXES] = {
|
|
||||||
{NULL, {"joyaxis1", "1"}, 0},
|
|
||||||
{NULL, {"joyaxis2", "2"}, 0},
|
|
||||||
{NULL, {"joyaxis3", "3"}, 0},
|
|
||||||
{NULL, {"joyaxis4", "0"}, 0},
|
|
||||||
{NULL, {"joyaxis5", "0"}, 0},
|
|
||||||
{NULL, {"joyaxis6", "0"}, 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct joy_button joy_buttons[JOY_MAX_BUTTONS];
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Command (void)
|
|
||||||
{
|
|
||||||
struct js_event event;
|
|
||||||
|
|
||||||
if (!joy_active || !joy_enable->int_val)
|
|
||||||
return;
|
|
||||||
|
|
||||||
while (read (joy_handle, &event, sizeof (struct js_event)) > -1) {
|
|
||||||
if (event.type & JS_EVENT_BUTTON) {
|
|
||||||
if (event.number >= JOY_MAX_BUTTONS)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
joy_buttons[event.number].current = event.value;
|
|
||||||
|
|
||||||
if (joy_buttons[event.number].current >
|
|
||||||
joy_buttons[event.number].old) {
|
|
||||||
Key_Event (K_AUX1 + event.number, 0, true);
|
|
||||||
} else {
|
|
||||||
if (joy_buttons[event.number].current <
|
|
||||||
joy_buttons[event.number].old) {
|
|
||||||
Key_Event (K_AUX1 + event.number, 0, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
joy_buttons[event.number].old = joy_buttons[event.number].current;
|
|
||||||
} else {
|
|
||||||
if (event.type & JS_EVENT_AXIS) {
|
|
||||||
if (event.number >= JOY_MAX_AXES)
|
|
||||||
continue;
|
|
||||||
joy_axes[event.number].current = event.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Move (usercmd_t *cmd)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!joy_active || !joy_enable->int_val)
|
|
||||||
return;
|
|
||||||
|
|
||||||
Cvar_SetValue (joy_sensitivity, bound (1, joy_sensitivity->value, 25));
|
|
||||||
for (i = 0; i < JOY_MAX_AXES; i++) {
|
|
||||||
switch (joy_axes[i].axis->int_val) {
|
|
||||||
case 1:
|
|
||||||
cl.viewangles[YAW] -=
|
|
||||||
m_yaw->value * (float) (joy_axes[i].current /
|
|
||||||
(201 - (joy_sensitivity->value * 4)));
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
cmd->forwardmove -=
|
|
||||||
m_forward->value * (float) (joy_axes[i].current /
|
|
||||||
(201 -
|
|
||||||
(joy_sensitivity->value * 4)));
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
cmd->sidemove +=
|
|
||||||
m_side->value * (float) (joy_axes[i].current /
|
|
||||||
(201 - (joy_sensitivity->value * 4)));
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
if (joy_axes[i].current) {
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
cl.viewangles[PITCH] -=
|
|
||||||
m_pitch->value * (float) (joy_axes[i].current /
|
|
||||||
(201 -
|
|
||||||
(joy_sensitivity->value * 4)));
|
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Init (void)
|
|
||||||
{
|
|
||||||
// Open joystick device
|
|
||||||
joy_handle = open (joy_device->string, O_RDONLY | O_NONBLOCK);
|
|
||||||
if (joy_handle < 0) {
|
|
||||||
Con_Printf ("JOY: Joystick not found.\n");
|
|
||||||
} else {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
joy_found = true;
|
|
||||||
|
|
||||||
if (!joy_enable->int_val) {
|
|
||||||
Con_Printf ("JOY: Joystick found, but not enabled.\n");
|
|
||||||
i = close (joy_handle);
|
|
||||||
if (i) {
|
|
||||||
Con_Printf ("JOY: Failed to close joystick device!\n");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Initialize joystick if found and enabled
|
|
||||||
for (i = 0; i < JOY_MAX_BUTTONS; i++) {
|
|
||||||
joy_buttons[i].old = 0;
|
|
||||||
joy_buttons[i].current = 0;
|
|
||||||
}
|
|
||||||
joy_active = true;
|
|
||||||
Con_Printf ("JOY: Joystick found and activated.\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Init_Cvars (void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
joy_device =
|
|
||||||
Cvar_Get ("joy_device", "/dev/js0", CVAR_NONE | CVAR_ROM, NULL,
|
|
||||||
"Joystick device");
|
|
||||||
joy_enable =
|
|
||||||
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
|
||||||
"Joystick enable flag");
|
|
||||||
joy_sensitivity =
|
|
||||||
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
|
||||||
"Joystick sensitivity");
|
|
||||||
|
|
||||||
for (i = 0; i < JOY_MAX_AXES; i++) {
|
|
||||||
joy_axes[i].axis = Cvar_Get (joy_axes[i].var.name,
|
|
||||||
joy_axes[i].var.string,
|
|
||||||
CVAR_ARCHIVE, NULL, "Set joystick axes");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Shutdown (void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!joy_active)
|
|
||||||
return;
|
|
||||||
|
|
||||||
i = close (joy_handle);
|
|
||||||
if (i) {
|
|
||||||
Con_Printf ("JOY: Failed to close joystick device!\n");
|
|
||||||
} else {
|
|
||||||
Con_Printf ("JOY_Shutdown\n");
|
|
||||||
}
|
|
||||||
joy_active = false;
|
|
||||||
joy_found = false;
|
|
||||||
}
|
|
|
@ -1,82 +0,0 @@
|
||||||
/*
|
|
||||||
joy_null.c
|
|
||||||
|
|
||||||
Joystick device driver template
|
|
||||||
|
|
||||||
Copyright (C) 2000 Jeff Teunissen <deek@dusknet.dhs.org>
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to:
|
|
||||||
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
59 Temple Place - Suite 330
|
|
||||||
Boston, MA 02111-1307, USA
|
|
||||||
|
|
||||||
$Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "QF/console.h"
|
|
||||||
#include "QF/cvar.h"
|
|
||||||
#include "protocol.h"
|
|
||||||
#include "QF/qtypes.h"
|
|
||||||
#include "client.h"
|
|
||||||
|
|
||||||
// Joystick variables and structures
|
|
||||||
cvar_t *joy_device; // Joystick device name
|
|
||||||
cvar_t *joy_enable; // Joystick enabling flag
|
|
||||||
cvar_t *joy_sensitivity; // Joystick sensitivity
|
|
||||||
|
|
||||||
qboolean joy_found = false;
|
|
||||||
qboolean joy_active = false;
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Command (void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Move (usercmd_t *cmd)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Init (void)
|
|
||||||
{
|
|
||||||
Con_DPrintf ("This system does not have joystick support.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Init_Cvars (void)
|
|
||||||
{
|
|
||||||
joy_device =
|
|
||||||
Cvar_Get ("joy_device", "none", CVAR_NONE | CVAR_ROM, NULL,
|
|
||||||
"Joystick device");
|
|
||||||
joy_enable =
|
|
||||||
Cvar_Get ("joy_enable", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
|
||||||
"Joystick enable flag");
|
|
||||||
joy_sensitivity =
|
|
||||||
Cvar_Get ("joy_sensitivity", "1", CVAR_NONE | CVAR_ARCHIVE, NULL,
|
|
||||||
"Joystick sensitivity");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
JOY_Shutdown (void)
|
|
||||||
{
|
|
||||||
joy_active = false;
|
|
||||||
joy_found = false;
|
|
||||||
}
|
|
|
@ -31,13 +31,26 @@
|
||||||
# include "config.h"
|
# include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "client.h"
|
||||||
#include "QF/compat.h"
|
#include "QF/compat.h"
|
||||||
|
#include "QF/console.h"
|
||||||
|
#include "draw.h"
|
||||||
|
#include "host.h"
|
||||||
#include "view.h"
|
#include "view.h"
|
||||||
#include "vid.h"
|
#include "vid.h"
|
||||||
#include "QF/console.h"
|
|
||||||
#include "host.h"
|
extern byte gammatable[256];
|
||||||
#include "client.h"
|
|
||||||
#include "draw.h"
|
extern qboolean V_CheckGamma (void);
|
||||||
|
|
||||||
|
extern void V_CalcIntermissionRefdef (void);
|
||||||
|
extern void V_CalcPowerupCshift (void);
|
||||||
|
extern void V_CalcRefdef (void);
|
||||||
|
|
||||||
|
extern cvar_t *crosshair;
|
||||||
|
extern cvar_t *scr_ofsx;
|
||||||
|
extern cvar_t *scr_ofsy;
|
||||||
|
extern cvar_t *scr_ofsz;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
V_UpdatePalette
|
V_UpdatePalette
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
/*
|
|
||||||
in_win.h
|
|
||||||
|
|
||||||
Win32 input prototypes
|
|
||||||
|
|
||||||
Copyright (C) 1996-1997 Id Software, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to:
|
|
||||||
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
59 Temple Place - Suite 330
|
|
||||||
Boston, MA 02111-1307, USA
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _IN_WIN_H
|
|
||||||
#define _IN_WIN_H
|
|
||||||
|
|
||||||
#include "protocol.h"
|
|
||||||
|
|
||||||
extern qboolean mouseactive;
|
|
||||||
extern float mouse_x, mouse_y;
|
|
||||||
extern unsigned int uiWheelMessage;
|
|
||||||
|
|
||||||
extern void IN_UpdateClipCursor (void);
|
|
||||||
extern void IN_ShowMouse (void);
|
|
||||||
extern void IN_HideMouse (void);
|
|
||||||
extern void IN_ActivateMouse (void);
|
|
||||||
extern void IN_SetQuakeMouseState (void);
|
|
||||||
extern void IN_DeactivateMouse (void);
|
|
||||||
extern void IN_RestoreOriginalMouseState (void);
|
|
||||||
extern void IN_Init (void);
|
|
||||||
extern void IN_Shutdown (void);
|
|
||||||
extern void IN_MouseEvent (int mstate);
|
|
||||||
extern void IN_MouseMove (usercmd_t *cmd);
|
|
||||||
extern void IN_Move (usercmd_t *cmd);
|
|
||||||
extern void IN_Accumulate (void);
|
|
||||||
extern void IN_ClearStates (void);
|
|
||||||
extern void IN_Commands (void);
|
|
||||||
|
|
||||||
#endif // _IN_WIN_H
|
|
||||||
|
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
/*
|
|
||||||
view.h
|
|
||||||
|
|
||||||
(description)
|
|
||||||
|
|
||||||
Copyright (C) 1996-1997 Id Software, Inc.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License
|
|
||||||
as published by the Free Software Foundation; either version 2
|
|
||||||
of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to:
|
|
||||||
|
|
||||||
Free Software Foundation, Inc.
|
|
||||||
59 Temple Place - Suite 330
|
|
||||||
Boston, MA 02111-1307, USA
|
|
||||||
|
|
||||||
$Id$
|
|
||||||
*/
|
|
||||||
// view.h
|
|
||||||
|
|
||||||
#ifndef __view_h_
|
|
||||||
#define __view_h_
|
|
||||||
|
|
||||||
#include "QF/mathlib.h"
|
|
||||||
#include "QF/cvar.h"
|
|
||||||
|
|
||||||
extern cvar_t *brightness;
|
|
||||||
extern cvar_t *contrast;
|
|
||||||
|
|
||||||
#define INFO_CSHIFT_BONUS (1 << 0)
|
|
||||||
#define INFO_CSHIFT_CONTENTS (1 << 1)
|
|
||||||
#define INFO_CSHIFT_DAMAGE (1 << 2)
|
|
||||||
#define INFO_CSHIFT_POWERUP (1 << 3)
|
|
||||||
|
|
||||||
void V_Init (void);
|
|
||||||
void V_Init_Cvars (void);
|
|
||||||
void V_RenderView (void);
|
|
||||||
float V_CalcRoll (vec3_t angles, vec3_t velocity);
|
|
||||||
void V_UpdatePalette (void);
|
|
||||||
void V_StartPitchDrift (void);
|
|
||||||
void V_StopPitchDrift (void);
|
|
||||||
|
|
||||||
void V_RenderView (void);
|
|
||||||
void V_UpdatePalette (void);
|
|
||||||
void V_Register (void);
|
|
||||||
void V_ParseDamage (void);
|
|
||||||
void V_SetContentsColor (int contents);
|
|
||||||
void V_CalcBlend (void);
|
|
||||||
|
|
||||||
#endif // __view_h_
|
|
|
@ -40,7 +40,7 @@ EXTRA_PROGRAMS= qw-client-3dfx qw-client-fbdev \
|
||||||
qw-client-sgl qw-client-svga qw-client-wgl \
|
qw-client-sgl qw-client-svga qw-client-wgl \
|
||||||
qw-client-x11 qw-server
|
qw-client-x11 qw-server
|
||||||
|
|
||||||
noinst_LIBRARIES= libqfjs.a libqfnet.a
|
noinst_LIBRARIES= libqfnet.a
|
||||||
#libqfsys_cl.a libqfsys_sv.a
|
#libqfsys_cl.a libqfsys_sv.a
|
||||||
|
|
||||||
if PACKETLOG
|
if PACKETLOG
|
||||||
|
@ -102,28 +102,14 @@ else
|
||||||
syscl_SRC= cl_sys_unix.c
|
syscl_SRC= cl_sys_unix.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#
|
|
||||||
# ... Joystick
|
|
||||||
#
|
|
||||||
if JOYTYPE_LINUX
|
|
||||||
libqfjs_a_SOURCES= joy_linux.c
|
|
||||||
endif
|
|
||||||
if JOYTYPE_WIN32
|
|
||||||
libqfjs_a_SOURCES= joy_win.c
|
|
||||||
endif
|
|
||||||
if JOYTYPE_NULL
|
|
||||||
libqfjs_a_SOURCES= joy_null.c
|
|
||||||
endif
|
|
||||||
libqfjs_a_CFLAGS= $(JOY_CFLAGS)
|
|
||||||
EXTRA_libqfjs_a_SOURCES= joy_linux.c joy_win.c joy_null.c
|
|
||||||
|
|
||||||
CLIENT_LIBS= $(top_builddir)/libs/util/libQFutil.la \
|
CLIENT_LIBS= $(top_builddir)/libs/util/libQFutil.la \
|
||||||
$(top_builddir)/libs/gamecode/libQFgamecode.la \
|
$(top_builddir)/libs/gamecode/libQFgamecode.la \
|
||||||
$(top_builddir)/libs/audio/cd/libQFcd.la \
|
$(top_builddir)/libs/audio/cd/libQFcd.la \
|
||||||
$(top_builddir)/libs/audio/targets/libQFsound.la \
|
$(top_builddir)/libs/audio/targets/libQFsound.la \
|
||||||
-L. -lqfnet -lqfjs \
|
$(top_builddir)/libs/video/targets/libQFjs.la \
|
||||||
$(SOUND_LIBS) $(NET_LIBS) $(JOY_LIBS)
|
-L. -lqfnet \
|
||||||
CLIENT_LIB_DEPS= libqfnet.a libqfjs.a
|
$(SOUND_LIBS) $(NET_LIBS)
|
||||||
|
CLIENT_LIB_DEPS= libqfnet.a
|
||||||
|
|
||||||
if ASM_ARCH
|
if ASM_ARCH
|
||||||
client_ASM= cl_math.S
|
client_ASM= cl_math.S
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
#include "cl_parse.h"
|
#include "cl_parse.h"
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "QF/cmd.h"
|
#include "QF/cmd.h"
|
||||||
|
#include "QF/compat.h"
|
||||||
#include "QF/console.h"
|
#include "QF/console.h"
|
||||||
#include "host.h"
|
#include "host.h"
|
||||||
#include "QF/input.h"
|
#include "QF/input.h"
|
||||||
|
@ -516,6 +517,25 @@ CL_BaseMove (usercmd_t *cmd)
|
||||||
cmd->sidemove *= cl_movespeedkey->value;
|
cmd->sidemove *= cl_movespeedkey->value;
|
||||||
cmd->upmove *= cl_movespeedkey->value;
|
cmd->upmove *= cl_movespeedkey->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (freelook)
|
||||||
|
V_StopPitchDrift ();
|
||||||
|
|
||||||
|
viewdelta.angles[0] = viewdelta.angles[1] = viewdelta.angles[2] = 0;
|
||||||
|
viewdelta.position[0] = viewdelta.position[1] = viewdelta.position[2] = 0;
|
||||||
|
|
||||||
|
IN_Move ();
|
||||||
|
|
||||||
|
cmd->forwardmove += viewdelta.position[2] * m_forward->value;
|
||||||
|
cmd->sidemove += viewdelta.position[0] * m_side->value;
|
||||||
|
cmd->upmove += viewdelta.position[1];
|
||||||
|
cl.viewangles[PITCH] += viewdelta.angles[PITCH] * m_pitch->value;
|
||||||
|
cl.viewangles[YAW] += viewdelta.angles[YAW] * m_yaw->value;
|
||||||
|
cl.viewangles[ROLL] += viewdelta.angles[ROLL];
|
||||||
|
|
||||||
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
|
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -616,7 +636,7 @@ CL_SendCmd (void)
|
||||||
CL_BaseMove (cmd);
|
CL_BaseMove (cmd);
|
||||||
|
|
||||||
// allow mice or other external controllers to add to the move
|
// allow mice or other external controllers to add to the move
|
||||||
IN_Move (cmd);
|
IN_Move (); // FIXME: was cmd, should it even exist at all?
|
||||||
|
|
||||||
// if we are spectator, try autocam
|
// if we are spectator, try autocam
|
||||||
if (cl.spectator)
|
if (cl.spectator)
|
||||||
|
|
|
@ -139,7 +139,7 @@ IN_Commands (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@
|
||||||
HWND mainwindow;
|
HWND mainwindow;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
cvar_t *m_filter;
|
||||||
cvar_t *_windowed_mouse;
|
cvar_t *_windowed_mouse;
|
||||||
int old_windowed_mouse;
|
int old_windowed_mouse;
|
||||||
|
|
||||||
|
@ -63,6 +64,7 @@ int modestate; // FIXME: just to avoid cross-comp.
|
||||||
|
|
||||||
static qboolean mouse_avail;
|
static qboolean mouse_avail;
|
||||||
static float mouse_x, mouse_y;
|
static float mouse_x, mouse_y;
|
||||||
|
static float old_mouse_x, old_mouse_y;
|
||||||
static int mouse_oldbuttonstate = 0;
|
static int mouse_oldbuttonstate = 0;
|
||||||
|
|
||||||
extern viddef_t vid; // global video state
|
extern viddef_t vid; // global video state
|
||||||
|
@ -362,9 +364,8 @@ IN_Init_Cvars (void)
|
||||||
{
|
{
|
||||||
JOY_Init_Cvars ();
|
JOY_Init_Cvars ();
|
||||||
|
|
||||||
_windowed_mouse = Cvar_Get ("_windowed_mouse", "0", CVAR_ARCHIVE, NULL,
|
_windowed_mouse = Cvar_Get ("_windowed_mouse", "0", CVAR_ARCHIVE, NULL, "If set to 1, quake will grab the mouse in X");
|
||||||
"If set to 1, quake will grab the mouse in X");
|
m_filter = Cvar_Get ("m_filter", "0", CVAR_ARCHIVE, NULL, "Toggle mouse input filtering");
|
||||||
// m_filter = Cvar_Get ("m_filter", "0", CVAR_ARCHIVE, NULL, "Toggle mouse input filtering");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -398,42 +399,36 @@ IN_Frame (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
JOY_Move (cmd);
|
|
||||||
|
JOY_Move ();
|
||||||
|
|
||||||
if (!mouse_avail)
|
if (!mouse_avail)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* from vid_sdl.c
|
|
||||||
if (m_filter->value) {
|
if (m_filter->value) {
|
||||||
mouse_x = (mouse_x + old_mouse_x) * 0.5;
|
mouse_x = (mouse_x + old_mouse_x) * 0.5;
|
||||||
mouse_y = (mouse_y + old_mouse_y) * 0.5;
|
mouse_y = (mouse_y + old_mouse_y) * 0.5;
|
||||||
|
old_mouse_x = mouse_x;
|
||||||
|
old_mouse_y = mouse_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
old_mouse_x = mouse_x;
|
|
||||||
old_mouse_y = mouse_y;
|
|
||||||
*/
|
|
||||||
|
|
||||||
mouse_x *= sensitivity->value;
|
mouse_x *= sensitivity->value;
|
||||||
mouse_y *= sensitivity->value;
|
mouse_y *= sensitivity->value;
|
||||||
|
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->value && (in_mlook.state & 1)))
|
if ((in_strafe.state & 1) || (lookstrafe->value && (in_mlook.state & 1)))
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] =
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
bound (-70, cl.viewangles[PITCH] + (m_pitch->value * mouse_y), 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
mouse_x = mouse_y = 0.0;
|
mouse_x = mouse_y = 0.0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,9 +358,10 @@ IN_Commands (void)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
JOY_Move (cmd);
|
JOY_Move ();
|
||||||
|
|
||||||
if (!UseMouse)
|
if (!UseMouse)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -384,22 +385,18 @@ IN_Move (usercmd_t *cmd)
|
||||||
|
|
||||||
/* Add mouse X/Y movement to cmd */
|
/* Add mouse X/Y movement to cmd */
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook)) {
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook)) {
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
} else {
|
} else {
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * mouse_y;
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack) {
|
if ((in_strafe.state & 1) && noclip_anglehack) {
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
} else {
|
} else {
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,7 +124,7 @@ extern void JOY_Command(void);
|
||||||
extern void JOY_Init_Cvars(void);
|
extern void JOY_Init_Cvars(void);
|
||||||
extern void JOY_Init (void);
|
extern void JOY_Init (void);
|
||||||
extern void JOY_AdvancedUpdate_f (void);
|
extern void JOY_AdvancedUpdate_f (void);
|
||||||
extern void JOY_Move (usercmd_t *cmd);
|
extern void JOY_Move (void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Force_CenterView_f
|
Force_CenterView_f
|
||||||
|
@ -482,7 +482,7 @@ IN_MouseEvent (int mstate)
|
||||||
IN_MouseMove
|
IN_MouseMove
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
IN_MouseMove (usercmd_t *cmd)
|
IN_MouseMove (void)
|
||||||
{
|
{
|
||||||
int mx, my;
|
int mx, my;
|
||||||
|
|
||||||
|
@ -587,21 +587,17 @@ IN_MouseMove (usercmd_t *cmd)
|
||||||
|
|
||||||
// add mouse X/Y movement to cmd
|
// add mouse X/Y movement to cmd
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * mouse_y;
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the mouse has moved, force it to the center, so there's room to move
|
// if the mouse has moved, force it to the center, so there's room to move
|
||||||
|
@ -619,8 +615,8 @@ IN_Move (usercmd_t *cmd)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (ActiveApp && !Minimized) {
|
if (ActiveApp && !Minimized) {
|
||||||
IN_MouseMove (cmd);
|
IN_MouseMove ();
|
||||||
JOY_Move (cmd);
|
JOY_Move ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -432,9 +432,9 @@ IN_SendKeyEvents (void)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
IN_Move (usercmd_t *cmd)
|
IN_Move (void)
|
||||||
{
|
{
|
||||||
JOY_Move (cmd);
|
JOY_Move ();
|
||||||
|
|
||||||
if (!mouse_avail)
|
if (!mouse_avail)
|
||||||
return;
|
return;
|
||||||
|
@ -451,21 +451,17 @@ IN_Move (usercmd_t *cmd)
|
||||||
mouse_y *= sensitivity->value;
|
mouse_y *= sensitivity->value;
|
||||||
|
|
||||||
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
if ((in_strafe.state & 1) || (lookstrafe->int_val && freelook))
|
||||||
cmd->sidemove += m_side->value * mouse_x;
|
viewdelta.position[0] += mouse_x;
|
||||||
else
|
else
|
||||||
cl.viewangles[YAW] -= m_yaw->value * mouse_x;
|
viewdelta.angles[YAW] -= mouse_x;
|
||||||
|
|
||||||
if (freelook)
|
|
||||||
V_StopPitchDrift ();
|
|
||||||
|
|
||||||
if (freelook && !(in_strafe.state & 1)) {
|
if (freelook && !(in_strafe.state & 1)) {
|
||||||
cl.viewangles[PITCH] += m_pitch->value * mouse_y;
|
viewdelta.angles[PITCH] += mouse_y;
|
||||||
cl.viewangles[PITCH] = bound (-70, cl.viewangles[PITCH], 80);
|
|
||||||
} else {
|
} else {
|
||||||
if ((in_strafe.state & 1) && noclip_anglehack)
|
if ((in_strafe.state & 1) && noclip_anglehack)
|
||||||
cmd->upmove -= m_forward->value * mouse_y;
|
viewdelta.position[1] -= mouse_y;
|
||||||
else
|
else
|
||||||
cmd->forwardmove -= m_forward->value * mouse_y;
|
viewdelta.position[2] -= mouse_y;
|
||||||
}
|
}
|
||||||
mouse_x = mouse_y = 0.0;
|
mouse_x = mouse_y = 0.0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue