14 Sep 2009
This commit is contained in:
parent
407490f4cd
commit
4ee4b14558
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: baserc - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
baserc.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: client - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
client.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -34,6 +34,8 @@ static HUD_FUNCTIONS gFunctionTable =
|
|||
HUD_CreateEntities,
|
||||
HUD_StudioEvent,
|
||||
V_CalcRefdef,
|
||||
V_StartPitchDrift,
|
||||
V_StopPitchDrift,
|
||||
};
|
||||
|
||||
//=======================================================================
|
||||
|
@ -72,7 +74,6 @@ int HUD_Redraw( float flTime, int state )
|
|||
switch( state )
|
||||
{
|
||||
case CL_DISCONNECTED:
|
||||
V_RenderSplash();
|
||||
break;
|
||||
case CL_LOADING:
|
||||
V_RenderPlaque();
|
||||
|
@ -125,6 +126,7 @@ void HUD_UpdateEntityVars( edict_t *ent, ref_params_t *view, const entity_state_
|
|||
ent->v.solid = state->solid;
|
||||
ent->v.movetype = state->movetype;
|
||||
ent->v.flags = state->flags;
|
||||
ent->v.ideal_pitch = state->idealpitch;
|
||||
|
||||
switch( state->ed_type )
|
||||
{
|
||||
|
|
|
@ -563,11 +563,6 @@ void V_RenderPlaque( void )
|
|||
DrawImageBar( CVAR_GET_FLOAT( "scr_download" ), "m_download", (ScreenWidth-128)/2, ScreenHeight-60 );
|
||||
}
|
||||
|
||||
void V_RenderSplash( void )
|
||||
{
|
||||
DrawImageRectangle( SPR_Load( "gfx/shell/splash" ));
|
||||
}
|
||||
|
||||
//
|
||||
// hl2 fade - this supports multiple fading
|
||||
// FIXME: make Class CHudFade instead of C-style code?
|
||||
|
|
|
@ -24,6 +24,8 @@ extern void HUD_CreateEntities( void );
|
|||
extern void HUD_StudioEvent( const dstudioevent_t *event, edict_t *entity );
|
||||
extern void HUD_ParseTempEntity( void );
|
||||
extern void V_CalcRefdef( ref_params_t *parms );
|
||||
extern void V_StartPitchDrift( void );
|
||||
extern void V_StopPitchDrift( void );
|
||||
extern void V_Init( void );
|
||||
|
||||
#define VIEWPORT_SIZE 512
|
||||
|
@ -200,7 +202,6 @@ extern void DrawGenericBar( float percent, int x, int y, int w, int h );
|
|||
extern void Draw_VidInit( void );
|
||||
|
||||
// from cl_view.c
|
||||
extern void V_RenderSplash( void );
|
||||
extern void V_RenderPlaque( void );
|
||||
extern edict_t *spot;
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "triangle_api.h"
|
||||
#include "pm_movevars.h"
|
||||
#include "studio_ref.h"
|
||||
#include "user_cmd.h"
|
||||
#include "hud.h"
|
||||
|
||||
#define ORIGIN_BACKUP 64
|
||||
|
@ -30,13 +31,23 @@ typedef struct
|
|||
int CurrentAngle;
|
||||
} viewinterp_t;
|
||||
|
||||
typedef struct pitchdrift_s
|
||||
{
|
||||
int nodrift;
|
||||
float pitchvel;
|
||||
float driftmove;
|
||||
float laststop;
|
||||
} pitchdrift_t;
|
||||
|
||||
static viewinterp_t ViewInterp;
|
||||
static pitchdrift_t pd;
|
||||
|
||||
// view CVARS
|
||||
cvar_t *scr_ofsx;
|
||||
cvar_t *scr_ofsy;
|
||||
cvar_t *scr_ofsz;
|
||||
cvar_t *cl_vsmoothing;
|
||||
cvar_t *cl_forwardspeed;
|
||||
cvar_t *r_mirrors;
|
||||
cvar_t *r_portals;
|
||||
cvar_t *r_screens;
|
||||
|
@ -129,6 +140,7 @@ void V_Init( void )
|
|||
scr_ofsz = g_engfuncs.pfnRegisterVariable( "scr_ofsz", "0", 0, "screen offset by Z" );
|
||||
|
||||
cl_vsmoothing = g_engfuncs.pfnRegisterVariable( "cl_vsmoothing", "0", 0, "enables lepring in multiplayer" );
|
||||
cl_forwardspeed = g_engfuncs.pfnRegisterVariable( "cl_forwardspeed", "200", 0, "client forward speed limit" );
|
||||
|
||||
v_iyaw_cycle = g_engfuncs.pfnRegisterVariable( "v_iyaw_cycle", "2", 0, "viewing inverse yaw cycle" );
|
||||
v_iroll_cycle = g_engfuncs.pfnRegisterVariable( "v_iroll_cycle", "0.5", 0, "viewing inverse roll cycle" );
|
||||
|
@ -138,7 +150,7 @@ void V_Init( void )
|
|||
v_ipitch_level = g_engfuncs.pfnRegisterVariable( "v_iyaw_level", "0.3", 0, "viewing inverse pitch level" );
|
||||
|
||||
v_centermove = g_engfuncs.pfnRegisterVariable( "v_centermove", "0.15", 0, "center moving scale" );
|
||||
v_centerspeed = g_engfuncs.pfnRegisterVariable( "v_centerspeed","500", 0, "center moving speed" );
|
||||
v_centerspeed = g_engfuncs.pfnRegisterVariable( "v_centerspeed", "500", 0, "center moving speed" );
|
||||
|
||||
cl_bobcycle = g_engfuncs.pfnRegisterVariable( "cl_bobcycle","0.8", 0, "bob full cycle" );
|
||||
cl_bob = g_engfuncs.pfnRegisterVariable( "cl_bob", "0.01", 0, "bob value" );
|
||||
|
@ -154,6 +166,86 @@ void V_Init( void )
|
|||
r_debug = g_engfuncs.pfnRegisterVariable( "r_debug", "0", 0, "show renderer state" );
|
||||
}
|
||||
|
||||
//==========================
|
||||
// V_StartPitchDrift
|
||||
//==========================
|
||||
void V_StartPitchDrift( void )
|
||||
{
|
||||
if( pd.laststop == GetClientTime())
|
||||
return;
|
||||
|
||||
if( pd.nodrift || !pd.pitchvel )
|
||||
{
|
||||
pd.pitchvel = v_centerspeed->value;
|
||||
pd.nodrift = 0;
|
||||
pd.driftmove = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//==========================
|
||||
// V_StopPitchDrift
|
||||
//==========================
|
||||
void V_StopPitchDrift( void )
|
||||
{
|
||||
pd.laststop = GetClientTime();
|
||||
pd.nodrift = 1;
|
||||
pd.pitchvel = 0;
|
||||
}
|
||||
|
||||
//==========================
|
||||
// V_DriftPitch
|
||||
//==========================
|
||||
void V_DriftPitch( ref_params_t *pparams )
|
||||
{
|
||||
float delta, move;
|
||||
|
||||
if( pparams->movetype == MOVETYPE_NOCLIP || !pparams->onground || pparams->demoplayback )
|
||||
{
|
||||
pd.driftmove = 0;
|
||||
pd.pitchvel = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if( pd.nodrift )
|
||||
{
|
||||
if( fabs( (float)pparams->cmd->forwardmove ) < cl_forwardspeed->value )
|
||||
pd.driftmove = 0;
|
||||
else pd.driftmove += pparams->frametime;
|
||||
if( pd.driftmove > v_centermove->value ) V_StartPitchDrift();
|
||||
return;
|
||||
}
|
||||
|
||||
delta = pparams->idealpitch - pparams->cl_viewangles[PITCH];
|
||||
|
||||
if( !delta )
|
||||
{
|
||||
pd.pitchvel = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
move = pparams->frametime * pd.pitchvel;
|
||||
pd.pitchvel += pparams->frametime * v_centerspeed->value;
|
||||
|
||||
if( delta > 0 )
|
||||
{
|
||||
if( move > delta )
|
||||
{
|
||||
pd.pitchvel = 0;
|
||||
move = delta;
|
||||
}
|
||||
pparams->cl_viewangles[PITCH] += move;
|
||||
}
|
||||
else if( delta < 0 )
|
||||
{
|
||||
if( move > -delta )
|
||||
{
|
||||
pd.pitchvel = 0;
|
||||
move = -delta;
|
||||
}
|
||||
pparams->cl_viewangles[PITCH] -= move;
|
||||
}
|
||||
}
|
||||
|
||||
//==========================
|
||||
// V_CalcFov
|
||||
//==========================
|
||||
|
@ -831,6 +923,7 @@ void V_CalcFirstPersonRefdef( ref_params_t *pparams )
|
|||
edict_t *view = GetViewModel();
|
||||
int i;
|
||||
|
||||
if( g_bFinalPass ) V_DriftPitch( pparams );
|
||||
bob = V_CalcBob( pparams );
|
||||
|
||||
// refresh the position
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#define CLGAME_API_H
|
||||
|
||||
typedef int HSPRITE; // handle to a graphic
|
||||
typedef struct usercmd_s usercmd_t;
|
||||
typedef struct cparticle_s cparticle_t;
|
||||
typedef struct ref_params_s ref_params_t;
|
||||
typedef struct dstudioevent_s dstudioevent_t;
|
||||
|
@ -158,7 +159,9 @@ typedef struct
|
|||
void (*pfnDrawTransparentTriangles)( void );
|
||||
void (*pfnCreateEntities)( void );
|
||||
void (*pfnStudioEvent)( const dstudioevent_t *event, edict_t *entity );
|
||||
void (*pfnCalcRefdef)( struct ref_params_s *parms );
|
||||
void (*pfnCalcRefdef)( ref_params_t *parms );
|
||||
void (*pfnStartPitchDrift)( void );
|
||||
void (*pfnStopPitchDrift)( void );
|
||||
} HUD_FUNCTIONS;
|
||||
|
||||
typedef int (*CLIENTAPI)( HUD_FUNCTIONS *pFunctionTable, cl_enginefuncs_t* pEngfuncsFromEngine );
|
||||
|
|
|
@ -82,7 +82,6 @@ typedef struct entity_state_s
|
|||
int rendermode; // hl1 legacy stuff, working, but not needed
|
||||
|
||||
// client specific
|
||||
vec3_t delta_angles; // add to command angles to get view direction
|
||||
vec3_t punch_angles; // add to view direction to get render angles
|
||||
vec3_t viewangles; // already calculated view angles on server-side
|
||||
vec3_t viewoffset; // viewoffset over ground
|
||||
|
@ -92,6 +91,7 @@ typedef struct entity_state_s
|
|||
int weaponanim; // weaponmodel sequence
|
||||
int weaponbody; // weaponmodel body
|
||||
int weaponskin; // weaponmodel skin
|
||||
float idealpitch; // client idealpitch
|
||||
float maxspeed; // min( pev->maxspeed, sv_maxspeed->value )
|
||||
float health; // client health (other parms can be send by custom messages)
|
||||
int weapons; // weapon flags
|
||||
|
|
|
@ -40,6 +40,8 @@ typedef struct ref_params_s
|
|||
float time; // client time
|
||||
float oldtime; // studio lerping
|
||||
|
||||
|
||||
usercmd_t *cmd; // last issued usercmd
|
||||
movevars_t *movevars; // sv.movevars
|
||||
latched_params_t prev;
|
||||
|
||||
|
@ -56,6 +58,7 @@ typedef struct ref_params_s
|
|||
edict_t *onground; // pointer to onground entity
|
||||
byte *areabits; // come from server, contains visible areas list
|
||||
int waterlevel;
|
||||
int movetype; // client movetype
|
||||
|
||||
skyportal_t skyportal;
|
||||
|
||||
|
@ -66,10 +69,11 @@ typedef struct ref_params_s
|
|||
vec3_t angles; // viewangles that came from server
|
||||
vec3_t origin; // origin + viewheight = vieworg
|
||||
vec3_t viewheight;
|
||||
|
||||
float idealpitch;
|
||||
|
||||
int health;
|
||||
vec3_t crosshairangle; // pfnCrosshairAngle values from server
|
||||
vec3_t punchangle; // recivied from server
|
||||
vec3_t punchangle; // receivied from server
|
||||
int clientnum;
|
||||
int viewmodel; // viewmodel index
|
||||
int num_entities;
|
||||
|
|
|
@ -149,7 +149,6 @@ typedef struct enginefuncs_s
|
|||
word (*pfnCRC_Final)( word pulCRC );
|
||||
long (*pfnRandomLong)( long lLow, long lHigh );
|
||||
float (*pfnRandomFloat)( float flLow, float flHigh );
|
||||
void (*pfnFixAngle)( edict_t *pClient, const float *rgflAngles );
|
||||
void (*pfnCrosshairAngle)( const edict_t *pClient, float pitch, float yaw );
|
||||
byte* (*pfnLoadFile)( const char *filename, int *pLength );
|
||||
void *(*pfnFOpen)( const char* path, const char* mode );
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
//=======================================================================
|
||||
// Copyright XashXT Group 2009 ©
|
||||
// user_cmd.h - usercmd communication
|
||||
//=======================================================================
|
||||
#ifndef USER_CMD_H
|
||||
#define USER_CMD_H
|
||||
|
||||
// usercmd_t communication (a part of network protocol)
|
||||
typedef struct usercmd_s
|
||||
{
|
||||
int msec;
|
||||
vec3_t angles;
|
||||
int forwardmove;
|
||||
int sidemove;
|
||||
int upmove;
|
||||
int buttons;
|
||||
} usercmd_t;
|
||||
|
||||
#endif//USER_CMD_H
|
|
@ -72,5 +72,5 @@ if exist xtools\xtools.plg del /f /q xtools\xtools.plg
|
|||
echo Build succeeded!
|
||||
echo Please wait. Xash is now loading
|
||||
cd D:\Xash3D\
|
||||
xash.exe -log -dev 3 +map qctest
|
||||
xash.exe -log -dev 3 +map start
|
||||
:done
|
|
@ -6,6 +6,8 @@
|
|||
#include "common.h"
|
||||
#include "client.h"
|
||||
|
||||
#define mlook_active (freelook->integer || (in_mlook.state & 1))
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int down[2]; // key nums holding it down
|
||||
|
@ -18,15 +20,25 @@ cvar_t *cl_yawspeed;
|
|||
cvar_t *cl_sidespeed;
|
||||
cvar_t *cl_pitchspeed;
|
||||
cvar_t *cl_forwardspeed;
|
||||
cvar_t *cl_backspeed;
|
||||
cvar_t *cl_anglespeedkey;
|
||||
cvar_t *cl_nodelta;
|
||||
cvar_t *v_centermove;
|
||||
cvar_t *v_centerspeed;
|
||||
cvar_t *cl_mouseaccel;
|
||||
|
||||
cvar_t *m_sensitivity;
|
||||
cvar_t *m_filter; // mouse filtering
|
||||
cvar_t *m_pitch;
|
||||
cvar_t *m_yaw;
|
||||
cvar_t *m_forward;
|
||||
cvar_t *m_side;
|
||||
|
||||
kbutton_t in_klook, in_left, in_right, in_forward, in_back;
|
||||
cvar_t *lookspring;
|
||||
cvar_t *lookstrafe;
|
||||
cvar_t *freelook;
|
||||
|
||||
kbutton_t in_mlook, in_klook, in_left, in_right, in_forward, in_back;
|
||||
kbutton_t in_lookup, in_lookdown, in_moveleft, in_moveright;
|
||||
kbutton_t in_strafe, in_speed, in_use, in_jump, in_attack, in_attack2;
|
||||
kbutton_t in_up, in_down, in_duck, in_reload, in_alt1, in_score, in_break;
|
||||
|
@ -91,15 +103,24 @@ void CL_MouseMove( usercmd_t *cmd )
|
|||
mx *= accel_sensitivity;
|
||||
my *= accel_sensitivity;
|
||||
|
||||
if( !mx && !my ) return;
|
||||
|
||||
// add mouse X/Y movement to cmd
|
||||
if( cl_mouselook->value ) cl.viewangles[YAW] -= m_yaw->value * mx;
|
||||
else if( in_strafe.state & 1 ) cmd->sidemove = cmd->sidemove + m_side->value * mx;
|
||||
|
||||
if(( in_strafe.state & 1 ) || (lookstrafe->integer && mlook_active))
|
||||
cmd->sidemove += m_side->value * mx;
|
||||
else cl.refdef.cl_viewangles[YAW] -= m_yaw->value * mx;
|
||||
|
||||
if( cl_mouselook->value ) cl.viewangles[PITCH] += m_pitch->value * my;
|
||||
else if( in_strafe.state & 1 ) cmd->forwardmove = cmd->forwardmove - m_forward->value * my;
|
||||
if( mlook_active ) clgame.dllFuncs.pfnStopPitchDrift();
|
||||
|
||||
if( mlook_active && !( in_strafe.state & 1 ))
|
||||
{
|
||||
cl.refdef.cl_viewangles[PITCH] += m_pitch->value * my;
|
||||
cl.refdef.cl_viewangles[PITCH] = bound( -70, cl.refdef.cl_viewangles[PITCH], 80 );
|
||||
}
|
||||
else
|
||||
{
|
||||
if(( in_strafe.state & 1 ) && cl.frame.ps.movetype == MOVETYPE_NOCLIP )
|
||||
cmd->upmove -= m_forward->value * my;
|
||||
else cmd->forwardmove -= m_forward->value * my;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -219,7 +240,7 @@ float CL_KeyState( kbutton_t *key )
|
|||
else val = 0.25; // pressed and released this frame
|
||||
}
|
||||
|
||||
key->state &= 1; // clear impulses
|
||||
key->state &= 1; // clear impulses
|
||||
|
||||
return val;
|
||||
}
|
||||
|
@ -269,10 +290,18 @@ void IN_ScoreUp(void) {IN_KeyUp( &in_score ); }
|
|||
void IN_BreakDown(void) {IN_KeyDown( &in_break ); }
|
||||
void IN_BreakUp(void) {IN_KeyUp( &in_break ); }
|
||||
void IN_Cancel(void) { in_cancel = 1; } // special handling
|
||||
void IN_MLookDown(void) { Cvar_SetValue( "cl_mouselook", 1 ); }
|
||||
void IN_MLookUp(void) { IN_CenterView(); Cvar_SetValue( "cl_mouselook", 0 ); }
|
||||
void IN_CenterView (void){ cl.viewangles[PITCH] = -cl.frame.ps.delta_angles[PITCH]; }
|
||||
|
||||
void IN_MLookDown(void) {IN_KeyDown( &in_mlook ); }
|
||||
void IN_CenterView(void)
|
||||
{
|
||||
if( !mlook_active ) clgame.dllFuncs.pfnStartPitchDrift();
|
||||
else cl.refdef.cl_viewangles[PITCH] = 0;
|
||||
}
|
||||
void IN_MLookUp(void)
|
||||
{
|
||||
IN_KeyUp( &in_mlook );
|
||||
if( !mlook_active && lookspring->integer )
|
||||
clgame.dllFuncs.pfnStopPitchDrift();
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
/*
|
||||
|
@ -285,22 +314,36 @@ Moves the local angle positions
|
|||
void CL_AdjustAngles( void )
|
||||
{
|
||||
float speed;
|
||||
float up, down;
|
||||
|
||||
if( cl.frame.ps.health <= 0 ) return;
|
||||
|
||||
if( in_speed.state & 1 )
|
||||
speed = cls.frametime * cl_anglespeedkey->value;
|
||||
else speed = cls.frametime;
|
||||
speed = ( in_speed.state & 1 ) ? cls.frametime * cl_anglespeedkey->value : cls.frametime;
|
||||
|
||||
if(!(in_strafe.state & 1))
|
||||
if(!( in_strafe.state & 1 ))
|
||||
{
|
||||
cl.viewangles[YAW] -= speed * cl_yawspeed->value * CL_KeyState( &in_right );
|
||||
cl.viewangles[YAW] += speed * cl_yawspeed->value * CL_KeyState( &in_left );
|
||||
cl.viewangles[YAW] = anglemod( cl.viewangles[YAW] );
|
||||
cl.refdef.cl_viewangles[YAW] -= speed * cl_yawspeed->value * CL_KeyState( &in_right );
|
||||
cl.refdef.cl_viewangles[YAW] += speed * cl_yawspeed->value * CL_KeyState( &in_left );
|
||||
cl.refdef.cl_viewangles[YAW] = anglemod( cl.refdef.cl_viewangles[YAW] );
|
||||
}
|
||||
|
||||
if( in_klook.state & 1 )
|
||||
{
|
||||
clgame.dllFuncs.pfnStopPitchDrift ();
|
||||
cl.refdef.cl_viewangles[PITCH] -= speed * cl_pitchspeed->value * CL_KeyState( &in_forward );
|
||||
cl.refdef.cl_viewangles[PITCH] += speed * cl_pitchspeed->value * CL_KeyState( &in_back );
|
||||
}
|
||||
|
||||
up = CL_KeyState( &in_lookup );
|
||||
down = CL_KeyState( &in_lookdown );
|
||||
|
||||
cl.viewangles[PITCH] -= speed * cl_pitchspeed->value * CL_KeyState( &in_lookup );
|
||||
cl.viewangles[PITCH] += speed * cl_pitchspeed->value * CL_KeyState( &in_lookdown );
|
||||
cl.refdef.cl_viewangles[PITCH] -= speed * cl_pitchspeed->value * up;
|
||||
cl.refdef.cl_viewangles[PITCH] += speed * cl_pitchspeed->value * down;
|
||||
|
||||
if( up || down ) clgame.dllFuncs.pfnStopPitchDrift();
|
||||
|
||||
cl.refdef.cl_viewangles[PITCH] = bound( -70, cl.refdef.cl_viewangles[PITCH], 80 );
|
||||
cl.refdef.cl_viewangles[ROLL] = bound( -50, cl.refdef.cl_viewangles[ROLL], 50 );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -314,23 +357,25 @@ void CL_BaseMove( usercmd_t *cmd )
|
|||
{
|
||||
CL_AdjustAngles ();
|
||||
|
||||
memset( cmd, 0, sizeof( *cmd ));
|
||||
|
||||
VectorCopy (cl.viewangles, cmd->angles);
|
||||
Mem_Set( cmd, 0, sizeof( *cmd ));
|
||||
|
||||
if( in_strafe.state & 1 )
|
||||
{
|
||||
cmd->sidemove += cl_sidespeed->value * CL_KeyState (&in_right);
|
||||
cmd->sidemove -= cl_sidespeed->value * CL_KeyState (&in_left);
|
||||
cmd->sidemove += cl_sidespeed->value * CL_KeyState( &in_right );
|
||||
cmd->sidemove -= cl_sidespeed->value * CL_KeyState( &in_left );
|
||||
}
|
||||
|
||||
cmd->sidemove += cl_sidespeed->value * CL_KeyState (&in_moveright);
|
||||
cmd->sidemove -= cl_sidespeed->value * CL_KeyState (&in_moveleft);
|
||||
cmd->sidemove += cl_sidespeed->value * CL_KeyState( &in_moveright );
|
||||
cmd->sidemove -= cl_sidespeed->value * CL_KeyState( &in_moveleft );
|
||||
|
||||
cmd->upmove += cl_upspeed->value * CL_KeyState (&in_up);
|
||||
cmd->upmove -= cl_upspeed->value * CL_KeyState (&in_down);
|
||||
cmd->upmove += cl_upspeed->value * CL_KeyState( &in_up );
|
||||
cmd->upmove -= cl_upspeed->value * CL_KeyState( &in_down );
|
||||
|
||||
cmd->forwardmove += cl_forwardspeed->value * CL_KeyState (&in_forward);
|
||||
cmd->forwardmove -= cl_forwardspeed->value * CL_KeyState (&in_back);
|
||||
if(!( in_klook.state & 1 ))
|
||||
{
|
||||
cmd->forwardmove += cl_forwardspeed->value * CL_KeyState( &in_forward );
|
||||
cmd->forwardmove -= cl_backspeed->value * CL_KeyState( &in_back );
|
||||
}
|
||||
|
||||
// adjust for speed key / running
|
||||
if( in_speed.state & 1 ^ cl_run->integer )
|
||||
|
@ -341,19 +386,6 @@ void CL_BaseMove( usercmd_t *cmd )
|
|||
}
|
||||
}
|
||||
|
||||
void CL_ClampPitch (void)
|
||||
{
|
||||
float pitch;
|
||||
|
||||
pitch = cl.frame.ps.delta_angles[PITCH];
|
||||
if( pitch > 180 ) pitch -= 360;
|
||||
|
||||
if( cl.viewangles[PITCH] + pitch < -360 ) cl.viewangles[PITCH] += 360; // wrapped
|
||||
if( cl.viewangles[PITCH] + pitch > 360 ) cl.viewangles[PITCH] -= 360; // wrapped
|
||||
if( cl.viewangles[PITCH] + pitch > 89 ) cl.viewangles[PITCH] = 89 - pitch;
|
||||
if( cl.viewangles[PITCH] + pitch < -89 ) cl.viewangles[PITCH] = -89 - pitch;
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
CL_ButtonBits
|
||||
|
@ -472,12 +504,7 @@ void CL_FinishMove( usercmd_t *cmd )
|
|||
if( ms > 250 ) ms = 100; // time was unreasonable
|
||||
|
||||
cmd->msec = ms;
|
||||
CL_ClampPitch();
|
||||
|
||||
VectorCopy( cl.viewangles, cmd->angles );
|
||||
|
||||
// HACKHACK: client lightlevel
|
||||
cmd->lightlevel = (byte)cl_lightlevel->value;
|
||||
if( cls.key_dest == key_game )
|
||||
cmd->buttons = CL_ButtonBits( 1 );
|
||||
|
||||
|
@ -487,7 +514,9 @@ void CL_FinishMove( usercmd_t *cmd )
|
|||
|
||||
cl.data.iWeaponBits = cl.frame.ps.weapons;
|
||||
cl.data.mouse_sensitivity = cl.mouse_sens;
|
||||
VectorCopy( cl.viewangles, cl.data.angles );
|
||||
|
||||
VectorCopy( cl.refdef.cl_viewangles, cmd->angles );
|
||||
VectorCopy( cl.refdef.cl_viewangles, cl.data.angles );
|
||||
VectorCopy( cl.refdef.origin, cl.data.origin );
|
||||
|
||||
clgame.dllFuncs.pfnUpdateClientData( &cl.data, ( cl.time * 0.001f ));
|
||||
|
@ -528,16 +557,16 @@ void CL_SendCmd( void )
|
|||
{
|
||||
sizebuf_t buf;
|
||||
byte data[128];
|
||||
usercmd_t *cmd, *oldcmd;
|
||||
usercmd_t *oldcmd;
|
||||
usercmd_t nullcmd;
|
||||
int checksumIndex;
|
||||
|
||||
// build a command even if not connected
|
||||
|
||||
// save this command off for prediction
|
||||
cmd = &cl.cmds[cls.netchan.outgoing_sequence & (CMD_BACKUP-1)];
|
||||
cl.refdef.cmd = &cl.cmds[cls.netchan.outgoing_sequence & (CMD_BACKUP-1)];
|
||||
cl.cmd_time[cls.netchan.outgoing_sequence & (CMD_BACKUP-1)] = cls.realtime;
|
||||
*cmd = CL_CreateCmd ();
|
||||
*cl.refdef.cmd = CL_CreateCmd ();
|
||||
|
||||
if( cls.state == ca_disconnected || cls.state == ca_connecting )
|
||||
return;
|
||||
|
@ -554,6 +583,12 @@ void CL_SendCmd( void )
|
|||
return;
|
||||
}
|
||||
|
||||
if( freelook->modified )
|
||||
{
|
||||
if( !mlook_active && lookspring->value )
|
||||
clgame.dllFuncs.pfnStartPitchDrift();
|
||||
}
|
||||
|
||||
// send a userinfo update if needed
|
||||
if( userinfo_modified )
|
||||
{
|
||||
|
@ -583,17 +618,17 @@ void CL_SendCmd( void )
|
|||
|
||||
// send this and the previous cmds in the message, so
|
||||
// if the last packet was dropped, it can be recovered
|
||||
cmd = &cl.cmds[(cls.netchan.outgoing_sequence-2) & (CMD_BACKUP-1)];
|
||||
cl.refdef.cmd = &cl.cmds[(cls.netchan.outgoing_sequence-2) & (CMD_BACKUP-1)];
|
||||
Mem_Set( &nullcmd, 0, sizeof( nullcmd ));
|
||||
MSG_WriteDeltaUsercmd( &buf, &nullcmd, cmd) ;
|
||||
oldcmd = cmd;
|
||||
MSG_WriteDeltaUsercmd( &buf, &nullcmd, cl.refdef.cmd );
|
||||
oldcmd = cl.refdef.cmd;
|
||||
|
||||
cmd = &cl.cmds[(cls.netchan.outgoing_sequence-1) & (CMD_BACKUP-1)];
|
||||
MSG_WriteDeltaUsercmd( &buf, oldcmd, cmd );
|
||||
oldcmd = cmd;
|
||||
cl.refdef.cmd = &cl.cmds[(cls.netchan.outgoing_sequence-1) & (CMD_BACKUP-1)];
|
||||
MSG_WriteDeltaUsercmd( &buf, oldcmd, cl.refdef.cmd );
|
||||
oldcmd = cl.refdef.cmd;
|
||||
|
||||
cmd = &cl.cmds[(cls.netchan.outgoing_sequence) & (CMD_BACKUP-1)];
|
||||
MSG_WriteDeltaUsercmd( &buf, oldcmd, cmd );
|
||||
cl.refdef.cmd = &cl.cmds[(cls.netchan.outgoing_sequence) & (CMD_BACKUP-1)];
|
||||
MSG_WriteDeltaUsercmd( &buf, oldcmd, cl.refdef.cmd );
|
||||
|
||||
// calculate a checksum over the move commands
|
||||
buf.data[checksumIndex] = CRC_Sequence( buf.data + checksumIndex + 1, buf.cursize - checksumIndex - 1, cls.netchan.outgoing_sequence);
|
||||
|
@ -618,6 +653,15 @@ void CL_InitInput( void )
|
|||
v_centermove = Cvar_Get ("v_centermove", "0.15", 0, "client center moving" );
|
||||
v_centerspeed = Cvar_Get ("v_centerspeed", "500", 0, "client center speed" );
|
||||
cl_nodelta = Cvar_Get ("cl_nodelta", "0", 0, "disable delta-compression for usercommnds" );
|
||||
|
||||
freelook = Cvar_Get( "freelook", "1", CVAR_ARCHIVE, "enables mouse look" );
|
||||
lookspring = Cvar_Get( "lookspring", "0", CVAR_ARCHIVE, "allow look spring" );
|
||||
lookstrafe = Cvar_Get( "lookstrafe", "0", CVAR_ARCHIVE, "allow look strafe" );
|
||||
|
||||
m_pitch = Cvar_Get ("m_pitch", "0.022", CVAR_ARCHIVE, "mouse pitch value" );
|
||||
m_yaw = Cvar_Get ("m_yaw", "0.022", 0, "mouse yaw value" );
|
||||
m_forward = Cvar_Get ("m_forward", "1", 0, "mouse forward speed" );
|
||||
m_side = Cvar_Get ("m_side", "1", 0, "mouse side speed" );
|
||||
|
||||
Cmd_AddCommand ("centerview", IN_CenterView, "gradually recenter view (stop looking up/down)" );
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "client.h"
|
||||
#include "byteorder.h"
|
||||
|
||||
cvar_t *freelook;
|
||||
cvar_t *rcon_client_password;
|
||||
cvar_t *rcon_address;
|
||||
|
||||
|
@ -42,16 +41,6 @@ cvar_t *cl_showclamp;
|
|||
cvar_t *cl_mouselook;
|
||||
cvar_t *cl_paused;
|
||||
|
||||
cvar_t *lookspring;
|
||||
cvar_t *lookstrafe;
|
||||
|
||||
cvar_t *m_pitch;
|
||||
cvar_t *m_yaw;
|
||||
cvar_t *m_forward;
|
||||
cvar_t *m_side;
|
||||
|
||||
cvar_t *cl_lightlevel;
|
||||
|
||||
//
|
||||
// userinfo
|
||||
//
|
||||
|
@ -1084,48 +1073,36 @@ void CL_InitLocal( void )
|
|||
CL_InitInput();
|
||||
|
||||
// register our variables
|
||||
cl_footsteps = Cvar_Get ("cl_footsteps", "1", 0, "disables player footsteps" );
|
||||
cl_predict = Cvar_Get ("cl_predict", "1", CVAR_ARCHIVE, "disables client movement prediction" );
|
||||
cl_maxfps = Cvar_Get ("cl_maxfps", "1000", 0, "maximum client fps" );
|
||||
cl_footsteps = Cvar_Get( "cl_footsteps", "1", 0, "disables player footsteps" );
|
||||
cl_predict = Cvar_Get( "cl_predict", "1", CVAR_ARCHIVE, "disables client movement prediction" );
|
||||
cl_maxfps = Cvar_Get( "cl_maxfps", "1000", 0, "maximum client fps" );
|
||||
cl_particles = Cvar_Get( "cl_particles", "1", CVAR_ARCHIVE, "disables particle effects" );
|
||||
cl_particlelod = Cvar_Get( "cl_lod_particle", "0", CVAR_ARCHIVE, "enables particle LOD (1, 2, 3)" );
|
||||
|
||||
cl_upspeed = Cvar_Get ("cl_upspeed", "200", 0, "client upspeed limit" );
|
||||
cl_forwardspeed = Cvar_Get ("cl_forwardspeed", "200", 0, "client forward speed limit" );
|
||||
cl_sidespeed = Cvar_Get ("cl_sidespeed", "200", 0, "client side-speed limit" );
|
||||
cl_yawspeed = Cvar_Get ("cl_yawspeed", "140", 0, "client yaw speed" );
|
||||
cl_pitchspeed = Cvar_Get ("cl_pitchspeed", "150", 0, "client pitch speed" );
|
||||
cl_anglespeedkey = Cvar_Get ("cl_anglespeedkey", "1.5", 0, "client anglespeed" );
|
||||
cl_upspeed = Cvar_Get( "cl_upspeed", "200", 0, "client upspeed limit" );
|
||||
cl_forwardspeed = Cvar_Get( "cl_forwardspeed", "200", 0, "client forward speed limit" );
|
||||
cl_backspeed = Cvar_Get( "cl_backspeed", "200", 0, "client bask speed limit" );
|
||||
cl_sidespeed = Cvar_Get( "cl_sidespeed", "200", 0, "client side-speed limit" );
|
||||
cl_yawspeed = Cvar_Get( "cl_yawspeed", "140", 0, "client yaw speed" );
|
||||
cl_pitchspeed = Cvar_Get( "cl_pitchspeed", "150", 0, "client pitch speed" );
|
||||
cl_anglespeedkey = Cvar_Get( "cl_anglespeedkey", "1.5", 0, "client anglespeed" );
|
||||
cl_run = Cvar_Get( "cl_run", "0", CVAR_ARCHIVE, "keep client for always run mode" );
|
||||
|
||||
cl_run = Cvar_Get ("cl_run", "0", CVAR_ARCHIVE, "keep client for always run mode" );
|
||||
cl_mouselook = Cvar_Get( "cl_mouselook", "1", CVAR_ARCHIVE, "enables mouse look" );
|
||||
lookspring = Cvar_Get ("lookspring", "0", CVAR_ARCHIVE, "allow look spring" );
|
||||
lookstrafe = Cvar_Get ("lookstrafe", "0", CVAR_ARCHIVE, "allow look strafe" );
|
||||
cl_shownet = Cvar_Get( "cl_shownet", "0", 0, "client show network packets" );
|
||||
cl_showmiss = Cvar_Get( "cl_showmiss", "0", 0, "client show network errors" );
|
||||
cl_showclamp = Cvar_Get( "cl_showclamp", "0", CVAR_ARCHIVE, "show client clamping" );
|
||||
cl_timeout = Cvar_Get( "cl_timeout", "120", 0, "connect timeout (in-seconds)" );
|
||||
|
||||
m_pitch = Cvar_Get ("m_pitch", "0.022", CVAR_ARCHIVE, "mouse pitch value" );
|
||||
m_yaw = Cvar_Get ("m_yaw", "0.022", 0, "mouse yaw value" );
|
||||
m_forward = Cvar_Get ("m_forward", "1", 0, "mouse forward speed" );
|
||||
m_side = Cvar_Get ("m_side", "1", 0, "mouse side speed" );
|
||||
rcon_client_password = Cvar_Get( "rcon_password", "", 0, "remote control client password" );
|
||||
rcon_address = Cvar_Get( "rcon_address", "", 0, "remote control address" );
|
||||
|
||||
cl_shownet = Cvar_Get ("cl_shownet", "0", 0, "client show network packets" );
|
||||
cl_showmiss = Cvar_Get ("cl_showmiss", "0", 0, "client show network errors" );
|
||||
cl_showclamp = Cvar_Get ("cl_showclamp", "0", CVAR_ARCHIVE, "show client clamping" );
|
||||
cl_timeout = Cvar_Get ("cl_timeout", "120", 0, "connect timeout (in-seconds)" );
|
||||
|
||||
rcon_client_password = Cvar_Get ("rcon_password", "", 0, "remote control client password" );
|
||||
rcon_address = Cvar_Get ("rcon_address", "", 0, "remote control address" );
|
||||
|
||||
cl_lightlevel = Cvar_Get ("r_lightlevel", "0", 0, "no description" );
|
||||
|
||||
//
|
||||
// userinfo
|
||||
//
|
||||
info_password = Cvar_Get ("password", "", CVAR_USERINFO, "player password" );
|
||||
info_spectator = Cvar_Get ("spectator", "0", CVAR_USERINFO, "spectator mode" );
|
||||
name = Cvar_Get ("name", "unnamed", CVAR_USERINFO | CVAR_ARCHIVE, "player name" );
|
||||
rate = Cvar_Get ("rate", "25000", CVAR_USERINFO | CVAR_ARCHIVE, "player network rate" ); // FIXME
|
||||
fov = Cvar_Get ("fov", "90", CVAR_USERINFO | CVAR_ARCHIVE, "client fov" );
|
||||
cl_showfps = Cvar_Get ("cl_showfps", "1", CVAR_ARCHIVE, "show client fps" );
|
||||
info_password = Cvar_Get( "password", "", CVAR_USERINFO, "player password" );
|
||||
info_spectator = Cvar_Get( "spectator", "0", CVAR_USERINFO, "spectator mode" );
|
||||
name = Cvar_Get( "name", "unnamed", CVAR_USERINFO | CVAR_ARCHIVE, "player name" );
|
||||
rate = Cvar_Get( "rate", "25000", CVAR_USERINFO | CVAR_ARCHIVE, "player network rate" ); // FIXME
|
||||
fov = Cvar_Get( "fov", "90", CVAR_USERINFO | CVAR_ARCHIVE, "client fov" );
|
||||
cl_showfps = Cvar_Get( "cl_showfps", "1", CVAR_ARCHIVE, "show client fps" );
|
||||
|
||||
// register our commands
|
||||
Cmd_AddCommand ("cmd", CL_ForwardToServer_f, "send a console commandline to the server" );
|
||||
|
|
|
@ -418,9 +418,9 @@ set the view angle to this absolute value
|
|||
*/
|
||||
void CL_ParseSetAngle( sizebuf_t *msg )
|
||||
{
|
||||
cl.viewangles[0] = MSG_ReadAngle32( msg );
|
||||
cl.viewangles[1] = MSG_ReadAngle32( msg );
|
||||
cl.viewangles[2] = MSG_ReadAngle32( msg );
|
||||
cl.refdef.cl_viewangles[0] = MSG_ReadAngle32( msg );
|
||||
cl.refdef.cl_viewangles[1] = MSG_ReadAngle32( msg );
|
||||
cl.refdef.cl_viewangles[2] = MSG_ReadAngle32( msg );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -343,7 +343,7 @@ void CL_PredictMovement (void)
|
|||
{
|
||||
// just set angles
|
||||
for( i = 0; i < 3; i++ )
|
||||
cl.predicted_angles[i] = cl.viewangles[i] + cl.frame.ps.delta_angles[i];
|
||||
cl.predicted_angles[i] = cl.refdef.cl_viewangles[i];
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,10 @@ void V_SetupRefDef( void )
|
|||
|
||||
// see if the player entity was teleported this frame
|
||||
if( ps->ed_flags & ESF_NO_PREDICTION )
|
||||
{
|
||||
cl.render_flags &= ~RDF_OLDAREABITS;
|
||||
ops = ps; // don't interpolate
|
||||
}
|
||||
|
||||
// UNDONE: temporary place for detect waterlevel
|
||||
CL_CheckWater( clent );
|
||||
|
@ -100,7 +103,6 @@ void V_SetupRefDef( void )
|
|||
VectorCopy( ops->viewoffset, cl.refdef.prev.viewheight );
|
||||
VectorCopy( ps->punch_angles, cl.refdef.punchangle );
|
||||
VectorCopy( ops->punch_angles, cl.refdef.prev.punchangle );
|
||||
VectorCopy( cl.predicted_angles, cl.refdef.cl_viewangles );
|
||||
|
||||
cl.refdef.movevars = &clgame.movevars;
|
||||
|
||||
|
@ -111,6 +113,8 @@ void V_SetupRefDef( void )
|
|||
cl.refdef.clientnum = cl.playernum; // not a entity num
|
||||
cl.refdef.viewmodel = ps->viewmodel;
|
||||
cl.refdef.health = ps->health;
|
||||
cl.refdef.movetype = ps->movetype;
|
||||
cl.refdef.idealpitch = ps->idealpitch;
|
||||
cl.refdef.num_entities = clgame.numEntities;
|
||||
cl.refdef.max_entities = clgame.maxEntities;
|
||||
cl.refdef.max_clients = clgame.maxClients;
|
||||
|
|
|
@ -99,13 +99,6 @@ typedef struct
|
|||
int mouse_step;
|
||||
float mouse_sens;
|
||||
|
||||
// the client maintains its own idea of view angles, which are
|
||||
// sent to the server each frame. It is cleared to 0 upon entering each level.
|
||||
// the server sends a delta each frame which is added to the locally
|
||||
// tracked view angles to account for standing on rotating objects,
|
||||
// and teleport direction changes
|
||||
vec3_t viewangles;
|
||||
|
||||
double mtime[2]; // the timestamp of the last two messages
|
||||
double time; // this is the time value that the client
|
||||
double oldtime; // cl.oldtime
|
||||
|
@ -297,6 +290,7 @@ extern cvar_t *cl_footsteps;
|
|||
extern cvar_t *cl_showfps;
|
||||
extern cvar_t *cl_upspeed;
|
||||
extern cvar_t *cl_forwardspeed;
|
||||
extern cvar_t *cl_backspeed;
|
||||
extern cvar_t *cl_sidespeed;
|
||||
extern cvar_t *cl_shownet;
|
||||
extern cvar_t *cl_yawspeed;
|
||||
|
@ -312,18 +306,9 @@ extern cvar_t *cl_showclamp;
|
|||
extern cvar_t *cl_particles;
|
||||
extern cvar_t *cl_particlelod;
|
||||
|
||||
extern cvar_t *lookspring;
|
||||
extern cvar_t *lookstrafe;
|
||||
|
||||
extern cvar_t *m_pitch;
|
||||
extern cvar_t *m_yaw;
|
||||
extern cvar_t *m_forward;
|
||||
extern cvar_t *m_side;
|
||||
extern cvar_t *cl_mouselook;
|
||||
extern cvar_t *cl_testentities;
|
||||
extern cvar_t *cl_testlights;
|
||||
extern cvar_t *cl_testflashlight;
|
||||
extern cvar_t *cl_lightlevel; // FIXME HACK
|
||||
extern cvar_t *cl_paused;
|
||||
extern cvar_t *cl_levelshot_name;
|
||||
|
||||
|
|
|
@ -90,9 +90,6 @@ static net_field_t ent_fields[] =
|
|||
{ ES_FIELD(oldorigin[1]), NET_FLOAT, true },
|
||||
{ ES_FIELD(oldorigin[2]), NET_FLOAT, true },
|
||||
{ ES_FIELD(rendermode), NET_BYTE, false }, // render mode (legacy stuff)
|
||||
{ ES_FIELD(delta_angles[0]), NET_ANGLE, false },
|
||||
{ ES_FIELD(delta_angles[1]), NET_ANGLE, false },
|
||||
{ ES_FIELD(delta_angles[2]), NET_ANGLE, false },
|
||||
{ ES_FIELD(punch_angles[0]), NET_SCALE, false },
|
||||
{ ES_FIELD(punch_angles[1]), NET_SCALE, false },
|
||||
{ ES_FIELD(punch_angles[2]), NET_SCALE, false },
|
||||
|
@ -102,6 +99,7 @@ static net_field_t ent_fields[] =
|
|||
{ ES_FIELD(viewoffset[0]), NET_SCALE, false },
|
||||
{ ES_FIELD(viewoffset[1]), NET_SCALE, false },
|
||||
{ ES_FIELD(viewoffset[2]), NET_SCALE, false },
|
||||
{ ES_FIELD(idealpitch), NET_SCALE, false },
|
||||
{ ES_FIELD(viewmodel), NET_WORD, false },
|
||||
{ ES_FIELD(maxspeed), NET_FLOAT, false }, // client maxspeed
|
||||
{ ES_FIELD(fov), NET_FLOAT, false }, // client horizontal field of view
|
||||
|
@ -122,7 +120,6 @@ static net_field_t cmd_fields[] =
|
|||
{ CM_FIELD(sidemove), NET_SHORT, false },
|
||||
{ CM_FIELD(upmove), NET_SHORT, false },
|
||||
{ CM_FIELD(buttons), NET_SHORT, false },
|
||||
{ CM_FIELD(lightlevel), NET_BYTE, false },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
|
@ -231,8 +228,8 @@ write # of bytes
|
|||
*/
|
||||
void _MSG_WriteBits( sizebuf_t *msg, long value, const char *name, int net_type, const char *filename, const int fileline )
|
||||
{
|
||||
union { long l; float f; } dat;
|
||||
byte *buf;
|
||||
ftol_t dat;
|
||||
byte *buf;
|
||||
|
||||
// this isn't an exact overflow check, but close enough
|
||||
if( msg->maxsize - msg->cursize < 4 )
|
||||
|
@ -275,12 +272,16 @@ void _MSG_WriteBits( sizebuf_t *msg, long value, const char *name, int net_type,
|
|||
buf[3] = (value>>24);
|
||||
break;
|
||||
case NET_ANGLE8:
|
||||
value = ANGLE2CHAR( value );
|
||||
if( dat.f > 360 ) dat.f -= 360;
|
||||
else if( dat.f < 0 ) dat.f += 360;
|
||||
value = ANGLE2CHAR( dat.f );
|
||||
buf = MSG_GetSpace( msg, 1 );
|
||||
buf[0] = value;
|
||||
break;
|
||||
case NET_ANGLE:
|
||||
value = ANGLE2SHORT( value );
|
||||
if( dat.f > 360 ) dat.f -= 360;
|
||||
else if( dat.f < 0 ) dat.f += 360;
|
||||
value = ANGLE2SHORT( dat.f );
|
||||
buf = MSG_GetSpace( msg, 2 );
|
||||
buf[0] = value & 0xff;
|
||||
buf[1] = value>>8;
|
||||
|
@ -318,8 +319,8 @@ read # of bytes
|
|||
*/
|
||||
long _MSG_ReadBits( sizebuf_t *msg, int net_type, const char *filename, const int fileline )
|
||||
{
|
||||
union { long l; float f; } dat;
|
||||
long value = 0;
|
||||
ftol_t dat;
|
||||
long value = 0;
|
||||
|
||||
switch( net_type )
|
||||
{
|
||||
|
@ -343,22 +344,26 @@ long _MSG_ReadBits( sizebuf_t *msg, int net_type, const char *filename, const in
|
|||
break;
|
||||
case NET_WORD:
|
||||
case NET_SHORT:
|
||||
dat.l = (short)BuffLittleShort(msg->data + msg->readcount);
|
||||
dat.l = (short)BuffLittleShort( msg->data + msg->readcount );
|
||||
msg->readcount += 2;
|
||||
break;
|
||||
case NET_LONG:
|
||||
case NET_FLOAT:
|
||||
dat.l = (long)BuffLittleLong(msg->data + msg->readcount);
|
||||
dat.l = (long)BuffLittleLong( msg->data + msg->readcount );
|
||||
msg->readcount += 4;
|
||||
break;
|
||||
case NET_ANGLE8:
|
||||
value = (unsigned char)msg->data[msg->readcount];
|
||||
dat.l = CHAR2ANGLE( value );
|
||||
dat.f = CHAR2ANGLE( value );
|
||||
if( dat.f < -180 ) dat.f += 360;
|
||||
else if( dat.f > 180 ) dat.f -= 360;
|
||||
msg->readcount += 1;
|
||||
break;
|
||||
case NET_ANGLE:
|
||||
value = (unsigned short)BuffLittleShort( msg->data + msg->readcount );
|
||||
dat.l = SHORT2ANGLE( value );
|
||||
dat.f = SHORT2ANGLE( value );
|
||||
if( dat.f < -180 ) dat.f += 360;
|
||||
else if( dat.f > 180 ) dat.f -= 360;
|
||||
msg->readcount += 2;
|
||||
break;
|
||||
case NET_COORD:
|
||||
|
|
|
@ -22,6 +22,12 @@ enum net_types_e
|
|||
NET_TYPES,
|
||||
};
|
||||
|
||||
typedef union
|
||||
{
|
||||
float f;
|
||||
long l;
|
||||
} ftol_t;
|
||||
|
||||
typedef struct net_desc_s
|
||||
{
|
||||
int type; // pixelformat
|
||||
|
@ -113,6 +119,7 @@ static const net_desc_t NWDesc[] =
|
|||
==========================================================
|
||||
*/
|
||||
|
||||
#include "user_cmd.h"
|
||||
#include "entity_state.h"
|
||||
|
||||
#define ES_FIELD( x ) #x,(int)&((entity_state_t*)0)->x
|
||||
|
|
|
@ -6,36 +6,13 @@
|
|||
--------------------Configuration: engine - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP64D4.tmp" with contents
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP6DBB.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "common" /I "server" /I "client" /I "uimenu" /I "../public" /I "../common" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\engine\!debug/" /Fo"..\temp\engine\!debug/" /Fd"..\temp\engine\!debug/" /FD /c
|
||||
"D:\Xash3D\src_main\engine\common\cinematic.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_cmds.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_demo.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_effects.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_frame.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_game.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_input.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_main.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_parse.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_phys.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_scrn.c"
|
||||
"D:\Xash3D\src_main\engine\client\cl_view.c"
|
||||
"D:\Xash3D\src_main\engine\common\con_keys.c"
|
||||
"D:\Xash3D\src_main\engine\common\con_main.c"
|
||||
"D:\Xash3D\src_main\engine\common\con_utils.c"
|
||||
"D:\Xash3D\src_main\engine\common\engfuncs.c"
|
||||
"D:\Xash3D\src_main\engine\host.c"
|
||||
"D:\Xash3D\src_main\engine\common\input.c"
|
||||
"D:\Xash3D\src_main\engine\uimenu\ui_ingame.c"
|
||||
"D:\Xash3D\src_main\engine\uimenu\ui_loadgame.c"
|
||||
"D:\Xash3D\src_main\engine\uimenu\ui_main.c"
|
||||
"D:\Xash3D\src_main\engine\uimenu\ui_menu.c"
|
||||
"D:\Xash3D\src_main\engine\uimenu\ui_mods.c"
|
||||
"D:\Xash3D\src_main\engine\uimenu\ui_savegame.c"
|
||||
"D:\Xash3D\src_main\engine\common\net_msg.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP64D4.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP64D5.tmp" with contents
|
||||
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP6DBB.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP6DBC.tmp" with contents
|
||||
[
|
||||
user32.lib msvcrtd.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\engine\!debug/engine.pdb" /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"..\temp\engine\!debug/engine.dll" /implib:"..\temp\engine\!debug/engine.lib" /pdbtype:sept
|
||||
"\Xash3D\src_main\temp\engine\!debug\cinematic.obj"
|
||||
|
@ -96,43 +73,16 @@ user32.lib msvcrtd.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..
|
|||
"\Xash3D\src_main\temp\engine\!debug\ui_singleplayer.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\ui_video.obj"
|
||||
]
|
||||
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP64D5.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP64D6.bat" with contents
|
||||
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP6DBC.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP6DBD.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\engine\!debug\engine.dll "D:\Xash3D\bin\engine.dll"
|
||||
]
|
||||
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP64D6.bat"
|
||||
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP6DBD.bat"
|
||||
Compiling...
|
||||
cinematic.c
|
||||
cl_cmds.c
|
||||
cl_demo.c
|
||||
cl_effects.c
|
||||
cl_frame.c
|
||||
cl_game.c
|
||||
cl_input.c
|
||||
cl_main.c
|
||||
cl_parse.c
|
||||
cl_phys.c
|
||||
cl_scrn.c
|
||||
cl_view.c
|
||||
con_keys.c
|
||||
con_main.c
|
||||
con_utils.c
|
||||
engfuncs.c
|
||||
host.c
|
||||
input.c
|
||||
ui_ingame.c
|
||||
ui_loadgame.c
|
||||
Generating Code...
|
||||
Compiling...
|
||||
ui_main.c
|
||||
ui_menu.c
|
||||
ui_mods.c
|
||||
ui_savegame.c
|
||||
Generating Code...
|
||||
net_msg.c
|
||||
Linking...
|
||||
Creating library ..\temp\engine\!debug/engine.lib and object ..\temp\engine\!debug/engine.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\engine\!debug\engine.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
|
|
@ -472,7 +472,7 @@ void Host_InitCommon( const int argc, const char **argv )
|
|||
if( FS_GetParmFromCmdLine( "-dev", dev_level ))
|
||||
host.developer = com.atoi( dev_level );
|
||||
|
||||
FS_LoadGameInfo();
|
||||
FS_LoadGameInfo( NULL );
|
||||
|
||||
zonepool = Mem_AllocPool( "Zone Engine" );
|
||||
|
||||
|
|
|
@ -274,6 +274,7 @@ extern cvar_t *sv_noreload; // don't reload level state when reentering
|
|||
extern cvar_t *sv_airaccelerate; // don't reload level state when reentering
|
||||
extern cvar_t *sv_accelerate;
|
||||
extern cvar_t *sv_friction;
|
||||
extern cvar_t *sv_idealpitchscale;
|
||||
extern cvar_t *sv_maxvelocity;
|
||||
extern cvar_t *sv_gravity;
|
||||
extern cvar_t *sv_fps; // running server at
|
||||
|
@ -360,9 +361,9 @@ void SV_GetChallenge( netadr_t from );
|
|||
void SV_DirectConnect( netadr_t from );
|
||||
void SV_PutClientInServer( edict_t *ent );
|
||||
void SV_ClientThink( sv_client_t *cl, usercmd_t *cmd );
|
||||
void SV_SetAngle( edict_t *ent, const float *rgflAngles );
|
||||
void SV_ExecuteClientMessage( sv_client_t *cl, sizebuf_t *msg );
|
||||
void SV_ConnectionlessPacket( netadr_t from, sizebuf_t *msg );
|
||||
void SV_SetIdealPitch( sv_client_t *cl );
|
||||
|
||||
//
|
||||
// sv_ccmds.c
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#include "const.h"
|
||||
#include "server.h"
|
||||
|
||||
#define MAX_FORWARD 6
|
||||
|
||||
typedef struct ucmd_s
|
||||
{
|
||||
const char *name;
|
||||
|
@ -468,17 +470,6 @@ void SV_RemoteCommand( netadr_t from, sizebuf_t *msg )
|
|||
SV_EndRedirect();
|
||||
}
|
||||
|
||||
void SV_SetAngle( edict_t *ent, const float *rgflAngles )
|
||||
{
|
||||
if( !ent || !ent->pvServerData || !ent->pvServerData->client ) return;
|
||||
|
||||
MSG_Begin( svc_setangle );
|
||||
MSG_WriteAngle32( &sv.multicast, rgflAngles[0] );
|
||||
MSG_WriteAngle32( &sv.multicast, rgflAngles[1] );
|
||||
MSG_WriteAngle32( &sv.multicast, rgflAngles[2] );
|
||||
MSG_Send( MSG_ONE_R, vec3_origin, ent );
|
||||
}
|
||||
|
||||
/*
|
||||
===========
|
||||
PutClientInServer
|
||||
|
@ -1012,9 +1003,7 @@ void SV_ConnectionlessPacket( netadr_t from, sizebuf_t *msg )
|
|||
|
||||
void SV_ApplyClientMove( sv_client_t *cl, usercmd_t *cmd )
|
||||
{
|
||||
int i;
|
||||
float temp, pitch;
|
||||
edict_t *ent = cl->edict;
|
||||
edict_t *ent = cl->edict;
|
||||
|
||||
ent->v.button = cmd->buttons; // initialize buttons
|
||||
if( cmd->upmove < 0 ) ent->v.button |= IN_DUCK;
|
||||
|
@ -1024,21 +1013,7 @@ void SV_ApplyClientMove( sv_client_t *cl, usercmd_t *cmd )
|
|||
if( cmd->forwardmove > 0 ) ent->v.button |= IN_FORWARD;
|
||||
if( cmd->forwardmove < 0 ) ent->v.button |= IN_BACK;
|
||||
|
||||
// circularly clamp the angles with deltas
|
||||
for( i = 0; i < 3; i++ )
|
||||
{
|
||||
temp = cmd->angles[i] + ent->pvServerData->s.delta_angles[i];
|
||||
ent->v.viewangles[i] = temp;
|
||||
}
|
||||
|
||||
pitch = ent->pvServerData->s.delta_angles[PITCH];
|
||||
if( pitch > 180 ) pitch -= 360;
|
||||
|
||||
// don't let the player look up or down more than 90 degrees
|
||||
if( ent->v.viewangles[PITCH] + pitch < -360 ) ent->v.viewangles[PITCH] += 360; // wrapped
|
||||
if( ent->v.viewangles[PITCH] + pitch > 360 ) ent->v.viewangles[PITCH] -= 360; // wrapped
|
||||
if( ent->v.viewangles[PITCH] + pitch > 89 ) ent->v.viewangles[PITCH] = 89 - pitch;
|
||||
if( ent->v.viewangles[PITCH] + pitch < -89 ) ent->v.viewangles[PITCH] = -89 - pitch;
|
||||
VectorCopy( cmd->angles, ent->v.viewangles );
|
||||
|
||||
if( ent->v.flags & FL_DUCKING && ent->v.flags & FL_ONGROUND )
|
||||
{
|
||||
|
@ -1125,6 +1100,72 @@ float SV_CalcRoll( vec3_t angles, vec3_t velocity )
|
|||
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
SV_SetIdealPitch
|
||||
===============
|
||||
*/
|
||||
void SV_SetIdealPitch( sv_client_t *cl )
|
||||
{
|
||||
float angleval, sinval, cosval;
|
||||
trace_t tr;
|
||||
vec3_t top, bottom;
|
||||
float z[MAX_FORWARD];
|
||||
int i, j;
|
||||
int step, dir, steps;
|
||||
edict_t *ent = cl->edict;
|
||||
|
||||
if( !( ent->v.flags & FL_ONGROUND ))
|
||||
return;
|
||||
|
||||
angleval = ent->v.angles[YAW] * M_PI * 2 / 360;
|
||||
com.sincos( angleval, &sinval, &cosval );
|
||||
|
||||
for( i = 0; i < MAX_FORWARD; i++ )
|
||||
{
|
||||
top[0] = ent->v.origin[0] + cosval * (i + 3) * 12;
|
||||
top[1] = ent->v.origin[1] + sinval * (i + 3) * 12;
|
||||
top[2] = ent->v.origin[2] + ent->v.view_ofs[2];
|
||||
|
||||
bottom[0] = top[0];
|
||||
bottom[1] = top[1];
|
||||
bottom[2] = top[2] - 160;
|
||||
|
||||
tr = SV_Trace( top, vec3_origin, vec3_origin, bottom, MOVE_NOMONSTERS, ent, SV_ContentsMask( ent ));
|
||||
if( tr.allsolid )
|
||||
return; // looking at a wall, leave ideal the way is was
|
||||
|
||||
if( tr.fraction == 1 )
|
||||
return; // near a dropoff
|
||||
|
||||
z[i] = top[2] + tr.fraction * (bottom[2] - top[2]);
|
||||
}
|
||||
|
||||
dir = 0;
|
||||
steps = 0;
|
||||
for( j = 1; j < i; j++ )
|
||||
{
|
||||
step = z[j] - z[j-1];
|
||||
if( step > -ON_EPSILON && step < ON_EPSILON )
|
||||
continue;
|
||||
|
||||
if( dir && ( step-dir > ON_EPSILON || step-dir < -ON_EPSILON ))
|
||||
return; // mixed changes
|
||||
|
||||
steps++;
|
||||
dir = step;
|
||||
}
|
||||
|
||||
if( !dir )
|
||||
{
|
||||
ent->v.ideal_pitch = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if( steps < 2 ) return;
|
||||
ent->v.ideal_pitch = -dir * sv_idealpitchscale->value;
|
||||
}
|
||||
|
||||
/*
|
||||
==============
|
||||
SV_Accelerate
|
||||
|
@ -1328,10 +1369,10 @@ void SV_ClientThink( sv_client_t *cl, usercmd_t *cmd )
|
|||
// angles
|
||||
// show 1/3 the pitch angle and all the roll angle
|
||||
VectorAdd( cl->edict->v.viewangles, cl->edict->v.punchangle, viewangles );
|
||||
cl->edict->v.viewangles[ROLL] = SV_CalcRoll( viewangles, cl->edict->v.velocity) * 4;
|
||||
cl->edict->v.viewangles[ROLL] = SV_CalcRoll( viewangles, cl->edict->v.velocity ) * 4;
|
||||
if( !cl->edict->v.fixangle )
|
||||
{
|
||||
cl->edict->v.angles[PITCH] = -viewangles[PITCH] / 3;
|
||||
cl->edict->v.angles[PITCH] = -(viewangles[PITCH] / 3);
|
||||
cl->edict->v.angles[YAW] = viewangles[YAW];
|
||||
}
|
||||
|
||||
|
@ -1349,8 +1390,10 @@ void SV_ClientThink( sv_client_t *cl, usercmd_t *cmd )
|
|||
SV_CheckVelocity( cl->edict );
|
||||
return;
|
||||
}
|
||||
|
||||
SV_AirMove( cl, &cl->lastcmd );
|
||||
SV_CheckVelocity( cl->edict );
|
||||
SV_SetIdealPitch( cl );
|
||||
|
||||
VectorCopy( cl->edict->v.origin, cl->edict->pvServerData->s.origin );
|
||||
VectorCopy( cl->edict->v.velocity, cl->edict->pvServerData->s.velocity );
|
||||
|
|
|
@ -49,6 +49,15 @@ void SV_UpdateEntityState( edict_t *ent, bool baseline )
|
|||
if( !ent->pvServerData->s.classname )
|
||||
ent->pvServerData->s.classname = SV_ClassIndex( STRING( ent->v.classname ));
|
||||
|
||||
if( ent->pvServerData->s.ed_type == ED_CLIENT && ent->v.fixangle )
|
||||
{
|
||||
MSG_Begin( svc_setangle );
|
||||
MSG_WriteAngle32( &sv.multicast, ent->v.angles[0] );
|
||||
MSG_WriteAngle32( &sv.multicast, ent->v.angles[1] );
|
||||
MSG_WriteAngle32( &sv.multicast, 0 );
|
||||
MSG_Send( MSG_ONE_R, vec3_origin, ent );
|
||||
}
|
||||
|
||||
svgame.dllFuncs.pfnUpdateEntityState( &ent->pvServerData->s, ent, baseline );
|
||||
|
||||
// always keep an actual
|
||||
|
|
|
@ -2859,7 +2859,6 @@ static enginefuncs_t gEngfuncs =
|
|||
pfnCRC_Final,
|
||||
pfnRandomLong,
|
||||
pfnRandomFloat,
|
||||
SV_SetAngle,
|
||||
pfnCrosshairAngle,
|
||||
pfnLoadFile,
|
||||
pfnFOpen,
|
||||
|
|
|
@ -16,6 +16,7 @@ cvar_t *zombietime; // seconds to sink messages after disconnect
|
|||
cvar_t *rcon_password; // password for remote server commands
|
||||
cvar_t *allow_download;
|
||||
cvar_t *sv_airaccelerate;
|
||||
cvar_t *sv_idealpitchscale;
|
||||
cvar_t *sv_maxvelocity;
|
||||
cvar_t *sv_gravity;
|
||||
cvar_t *sv_stepheight;
|
||||
|
@ -417,6 +418,7 @@ void SV_Init( void )
|
|||
sv_rollangle = Cvar_Get( "sv_rollangle", DEFAULT_ROLLANGLE, 0, "how much to tilt the view when strafing" );
|
||||
sv_rollspeed = Cvar_Get( "sv_rollspeed", DEFAULT_ROLLSPEED, 0, "how much strafing is necessary to tilt the view" );
|
||||
sv_airaccelerate = Cvar_Get("sv_airaccelerate", DEFAULT_AIRACCEL, CVAR_LATCH, "player accellerate in air" );
|
||||
sv_idealpitchscale = Cvar_Get( "sv_idealpitchscale", "0.8", 0, "how much to look up/down slopes and stairs when not using freelook" );
|
||||
sv_maxvelocity = Cvar_Get("sv_maxvelocity", DEFAULT_MAXVELOCITY, CVAR_LATCH, "max world velocity" );
|
||||
sv_gravity = Cvar_Get("sv_gravity", DEFAULT_GRAVITY, CVAR_LATCH, "world gravity" );
|
||||
sv_maxspeed = Cvar_Get("sv_maxspeed", DEFAULT_MAXSPEED, 0, "maximum speed a player can accelerate to when on ground");
|
||||
|
|
|
@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "input.h"
|
||||
#include "client.h"
|
||||
|
||||
#define ART_BACKGROUND "gfx/shell/title_screen/title_backg"
|
||||
#define ART_BACKGROUND "gfx/shell/splash"
|
||||
#define ART_LOGO "gfx/shell/title_screen/q2e_logo"
|
||||
#define ART_SINGLEPLAYER "gfx/shell/title_screen/singleplayer_n"
|
||||
#define ART_SINGLEPLAYER2 "gfx/shell/title_screen/singleplayer_s"
|
||||
|
|
|
@ -1459,17 +1459,18 @@ static bool FS_ParseGameInfo( const char *filename, gameinfo_t *GameInfo )
|
|||
================
|
||||
FS_LoadGameInfo
|
||||
|
||||
FIXME: create an argment that passed name of gamedir for soft-change games ?
|
||||
can be passed null arg
|
||||
================
|
||||
*/
|
||||
void FS_LoadGameInfo( void )
|
||||
void FS_LoadGameInfo( const char *rootfolder )
|
||||
{
|
||||
int i;
|
||||
|
||||
// lock uplevel of gamedir for read\write
|
||||
fs_ext_path = false;
|
||||
|
||||
MsgDev( D_NOTE, "FS_LoadGameInfo()\n" );
|
||||
if( rootfolder ) com.strcpy( gs_basedir, rootfolder );
|
||||
MsgDev( D_NOTE, "FS_LoadGameInfo( %s )\n", gs_basedir );
|
||||
|
||||
// clear any old pathes
|
||||
FS_ClearSearchPath();
|
||||
|
@ -1666,6 +1667,14 @@ FS_Shutdown
|
|||
*/
|
||||
void FS_Shutdown( void )
|
||||
{
|
||||
int i;
|
||||
|
||||
// release gamedirs
|
||||
for( i = 0; i < SI.numgames; i++ )
|
||||
if( SI.games[i] ) Mem_Free( SI.games[i] );
|
||||
|
||||
Mem_Set( &SI, 0, sizeof( SI ));
|
||||
|
||||
FS_ClearSearchPath(); // release all wad files too
|
||||
FS_UpdateEnvironmentVariables(); // merge working directory
|
||||
FS_UpdateConfig();
|
||||
|
|
|
@ -321,7 +321,7 @@ void FS_ClearSearchPath( void );
|
|||
void FS_AllowDirectPaths( bool enable );
|
||||
void FS_AddGameHierarchy( const char *dir, int flags );
|
||||
int FS_CheckParm( const char *parm );
|
||||
void FS_LoadGameInfo( void );
|
||||
void FS_LoadGameInfo( const char *rootfolder );
|
||||
void FS_FileBase( const char *in, char *out );
|
||||
const char *FS_FileExtension( const char *in );
|
||||
void FS_DefaultExtension( char *path, const char *extension );
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: launch - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP5FC2.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "imagelib" /I "../public" /I "../common" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\launch\!debug/" /Fo"..\temp\launch\!debug/" /Fd"..\temp\launch\!debug/" /FD /GZ /c
|
||||
"D:\Xash3D\src_main\launch\filesystem.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP5FC2.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP5FC3.tmp" with contents
|
||||
[
|
||||
zlib.lib png.lib jpg.lib user32.lib gdi32.lib shell32.lib advapi32.lib winmm.lib /nologo /dll /incremental:yes /pdb:"..\temp\launch\!debug/launch.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"..\temp\launch\!debug/launch.dll" /implib:"..\temp\launch\!debug/launch.lib" /pdbtype:sept /libpath:"./imagelib"
|
||||
"\Xash3D\src_main\temp\launch\!debug\cmd.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\console.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\cpuinfo.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\crclib.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\cvar.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\export.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\filesystem.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_bmp.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_dds.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_jpg.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_main.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_pcx.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_png.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_tga.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_utils.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_vtf.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\img_wad.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\memlib.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\network.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\parselib.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\patch.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\stdlib.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\system.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\utils.obj"
|
||||
]
|
||||
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP5FC3.tmp"
|
||||
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP5FC4.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\launch\!debug\launch.dll "D:\Xash3D\bin\launch.dll"
|
||||
]
|
||||
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP5FC4.bat"
|
||||
Compiling...
|
||||
filesystem.c
|
||||
Linking...
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\launch\!debug\launch.dll
|
||||
‘Ş®Ż¨ŕ®˘ ® ä ©«®˘: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
launch.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -4,6 +4,7 @@
|
|||
//=======================================================================
|
||||
|
||||
#include "cm_local.h"
|
||||
#include "user_cmd.h"
|
||||
#include "matrix_lib.h"
|
||||
|
||||
int characterID;
|
||||
|
@ -61,9 +62,6 @@ are being updated isntead of a full move
|
|||
*/
|
||||
void CM_UpdateViewAngles( entity_state_t *state, const usercmd_t *cmd )
|
||||
{
|
||||
short temp;
|
||||
int i;
|
||||
|
||||
if( state->flags & FL_FROZEN )
|
||||
{
|
||||
return; // no view changes at all
|
||||
|
@ -74,23 +72,16 @@ void CM_UpdateViewAngles( entity_state_t *state, const usercmd_t *cmd )
|
|||
}
|
||||
if( state->ed_flags & ESF_NO_PREDICTION )
|
||||
{
|
||||
state->viewangles[YAW] = cmd->angles[YAW] - state->delta_angles[YAW];
|
||||
state->viewangles[YAW] = cmd->angles[YAW];
|
||||
state->viewangles[PITCH] = 0;
|
||||
state->viewangles[ROLL] = 0;
|
||||
}
|
||||
|
||||
// circularly clamp the angles with deltas
|
||||
for( i = 0; i < 3; i++ )
|
||||
{
|
||||
temp = cmd->angles[i] + state->delta_angles[i];
|
||||
state->viewangles[i] = temp;
|
||||
}
|
||||
VectorCopy( cmd->angles, state->viewangles );
|
||||
|
||||
// don't let the player look up or down more than 90 degrees
|
||||
if( state->viewangles[PITCH] > 89 && state->viewangles[PITCH] < 180 )
|
||||
state->viewangles[PITCH] = 89;
|
||||
else if( state->viewangles[PITCH] < 271 && state->viewangles[PITCH] >= 180 )
|
||||
state->viewangles[PITCH] = 271;
|
||||
// don't let the player look up or down more than 80 degrees
|
||||
state->viewangles[PITCH] = bound( -70, state->viewangles[PITCH], 80 );
|
||||
state->viewangles[ROLL] = bound( -50, state->viewangles[ROLL], 50 );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -76,9 +76,9 @@ void CM_ModelBounds( cmodel_t *model, vec3_t mins, vec3_t maxs );
|
|||
float CM_FindFloor( vec3_t p0, float maxDist );
|
||||
void CM_SetOrigin( physbody_t *body, vec3_t origin );
|
||||
|
||||
void CM_PlayerMove( entity_state_t *pmove, usercmd_t *cmd, physbody_t *body, bool clientmove );
|
||||
void CM_ServerMove( entity_state_t *pmove, usercmd_t *cmd, physbody_t *body );
|
||||
void CM_ClientMove( entity_state_t *pmove, usercmd_t *cmd, physbody_t *body );
|
||||
void CM_PlayerMove( entity_state_t *pmove, struct usercmd_s *cmd, physbody_t *body, bool clientmove );
|
||||
void CM_ServerMove( entity_state_t *pmove, struct usercmd_s *cmd, physbody_t *body );
|
||||
void CM_ClientMove( entity_state_t *pmove, struct usercmd_s *cmd, physbody_t *body );
|
||||
|
||||
void PolygonF_QuadForPlane( float *outpoints, float planenormalx, float planenormaly, float planenormalz, float planedist, float quadsize );
|
||||
void PolygonD_QuadForPlane( double *outpoints, double planenormalx, double planenormaly, double planenormalz, double planedist, double quadsize );
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: physic - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
physic.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -21,18 +21,6 @@
|
|||
#define MAX_EDICTS 65535 // absolute limit that never be reached, (do not edit!)
|
||||
#define MAX_VERTS_ON_POLY 10 // decal vertices
|
||||
|
||||
// usercmd_t communication (a part of network protocol)
|
||||
typedef struct usercmd_s
|
||||
{
|
||||
int msec;
|
||||
int angles[3];
|
||||
int forwardmove;
|
||||
int sidemove;
|
||||
int upmove;
|
||||
int buttons;
|
||||
int lightlevel;
|
||||
} usercmd_t;
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
|
||||
|
|
|
@ -464,7 +464,7 @@ typedef struct stdilib_api_s
|
|||
|
||||
// common functions
|
||||
void (*Com_InitRootDir)( char *path ); // init custom rootdir
|
||||
void (*Com_LoadGameInfo)( void ); // initialize gameinfo.txt
|
||||
void (*Com_LoadGameInfo)( const char *rootfolder ); // initialize gamedir
|
||||
void (*Com_AddGameHierarchy)( const char *dir, int flags ); // add base directory in search list
|
||||
void (*Com_AllowDirectPaths)( bool enable ); // allow direct paths e.g. C:\windows
|
||||
int (*Com_CheckParm)( const char *parm ); // check parm in cmdline
|
||||
|
|
|
@ -58,7 +58,7 @@ typedef struct physic_exp_s
|
|||
void (*CombineTraces)( trace_t *cliptrace, const trace_t *trace, edict_t *touch, bool is_bmodel );
|
||||
|
||||
// player movement code
|
||||
void (*PlayerMove)( struct entity_state_s *pmove, usercmd_t *cmd, physbody_t *body, bool clientmove );
|
||||
void (*PlayerMove)( struct entity_state_s *pmove, struct usercmd_s *cmd, physbody_t *body, bool clientmove );
|
||||
|
||||
// simple objects
|
||||
physbody_t *(*CreateBody)( edict_t *ed, cmodel_t *mod, const vec3_t org, const matrix3x3 m, int solid, int move );
|
||||
|
|
|
@ -443,6 +443,7 @@ extern cvar_t *r_allow_software;
|
|||
extern cvar_t *r_frontbuffer;
|
||||
extern cvar_t *r_width;
|
||||
extern cvar_t *r_height;
|
||||
extern cvar_t *r_paused;
|
||||
|
||||
extern cvar_t *r_flares;
|
||||
extern cvar_t *r_flaresize;
|
||||
|
|
|
@ -27,6 +27,7 @@ glstate_t glState;
|
|||
byte *r_temppool;
|
||||
byte *r_framebuffer;
|
||||
|
||||
cvar_t *r_paused;
|
||||
cvar_t *r_norefresh;
|
||||
cvar_t *r_drawentities;
|
||||
cvar_t *r_drawworld;
|
||||
|
@ -488,6 +489,7 @@ void GL_InitCommands( void )
|
|||
// system screen width and height (don't suppose for change from console at all)
|
||||
r_width = Cvar_Get( "width", "640", CVAR_READ_ONLY, "screen width" );
|
||||
r_height = Cvar_Get( "height", "480", CVAR_READ_ONLY, "screen height" );
|
||||
r_paused = Cvar_Get( "paused", "0", 0, "game pasued" );
|
||||
|
||||
r_norefresh = Cvar_Get( "r_norefresh", "0", 0, "disable rendering (use with caution)" );
|
||||
r_fullbright = Cvar_Get( "r_fullbright", "0", CVAR_CHEAT|CVAR_LATCH_VIDEO, "disable lightmaps, get fullbright" );
|
||||
|
|
|
@ -500,8 +500,10 @@ float R_StudioFrameAdvance( ref_entity_t *ent, float flInterval )
|
|||
}
|
||||
}
|
||||
if( !ent->animtime ) flInterval = 0.0;
|
||||
|
||||
ent->frame += flInterval * ent->framerate;
|
||||
|
||||
// stop auto-animation on pause
|
||||
if( !r_paused->integer )
|
||||
ent->frame += flInterval * ent->framerate;
|
||||
//ent->animtime = RI.refdef.time;
|
||||
|
||||
if( ent->frame < 0.0 || ent->frame >= 256.0 )
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: render - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
render.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -720,12 +720,11 @@ void CFuncTeleport :: Touch( CBaseEntity *pOther )
|
|||
if( pOther->IsPlayer())
|
||||
{
|
||||
pOther->pev->angles.x = pOther->pev->viewangles.x;
|
||||
SET_FIXANGLE( ENT( pOther->pev ), pOther->pev->angles );
|
||||
pOther->pev->fixangle = TRUE;
|
||||
}
|
||||
|
||||
// set new velocity
|
||||
vecVA = UTIL_VecToAngles(pOther->pev->velocity);
|
||||
vecVA = UTIL_VecToAngles( pOther->pev->velocity );
|
||||
vecVA.y += ydiff;
|
||||
UTIL_MakeVectors(vecVA);
|
||||
pOther->pev->velocity = gpGlobals->v_forward * pOther->pev->velocity.Length();
|
||||
|
@ -756,7 +755,6 @@ void CFuncTeleport :: Touch( CBaseEntity *pOther )
|
|||
pOther->pev->velocity = g_vecZero;
|
||||
if( pOther->IsPlayer( ))
|
||||
{
|
||||
SET_FIXANGLE( ENT( pOther->pev ), pTarget->pev->angles );
|
||||
pOther->pev->viewangles = pTarget->pev->angles;
|
||||
pOther->pev->fixangle = TRUE;
|
||||
}
|
||||
|
|
|
@ -68,8 +68,6 @@ edict_t *CGameRules :: GetPlayerSpawnSpot( CBasePlayer *pPlayer )
|
|||
pPlayer->pev->punchangle = g_vecZero;
|
||||
pPlayer->pev->fixangle = TRUE;
|
||||
|
||||
SET_FIXANGLE( ENT( pPlayer->pev ), pPlayer->pev->angles );
|
||||
|
||||
if( pentSpawnSpot->v.spawnflags & 1 ) // the START WITH SUIT flag
|
||||
{
|
||||
g_startSuit = TRUE;
|
||||
|
|
|
@ -1032,6 +1032,7 @@ void UpdateEntityState( entity_state_t *to, edict_t *from, int baseline )
|
|||
|
||||
to->viewoffset = pNet->pev->view_ofs;
|
||||
to->viewangles = pNet->pev->viewangles;
|
||||
to->idealpitch = pNet->pev->ideal_pitch;
|
||||
to->punch_angles = pNet->pev->punchangle;
|
||||
|
||||
// playermodel sequence, that will be playing on a client
|
||||
|
|
|
@ -123,7 +123,6 @@ inline void *GET_PRIVATE( edict_t *pent )
|
|||
#define CMD_ARGC (*g_engfuncs.pfnCmd_Argc)
|
||||
#define CMD_ARGV (*g_engfuncs.pfnCmd_Argv)
|
||||
#define GET_ATTACHMENT (*g_engfuncs.pfnGetAttachment)
|
||||
#define SET_FIXANGLE (*g_engfuncs.pfnFixAngle)
|
||||
#define SET_CROSSHAIRANGLE (*g_engfuncs.pfnCrosshairAngle)
|
||||
#define SET_SKYBOX (*g_engfuncs.pfnSetSkybox)
|
||||
#define LOAD_FILE (*g_engfuncs.pfnLoadFile)
|
||||
|
|
|
@ -3429,11 +3429,9 @@ int CBasePlayer::Restore( CRestore &restore )
|
|||
pev->origin = VARS(pentSpawnSpot)->origin + Vector(0,0,1);
|
||||
pev->angles = VARS(pentSpawnSpot)->angles;
|
||||
}
|
||||
pev->viewangles.z = 0; // Clear out roll
|
||||
pev->viewangles.z = 0; // clear out roll
|
||||
pev->angles = pev->viewangles;
|
||||
|
||||
SET_FIXANGLE( ENT( pev ), pev->angles );
|
||||
pev->fixangle = TRUE; // turn this way immediately
|
||||
pev->fixangle = TRUE; // turn this way immediately
|
||||
|
||||
// Copied from spawn() for now
|
||||
m_bloodColor = BLOOD_COLOR_RED;
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: server - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
server.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
2
todo.log
2
todo.log
|
@ -124,7 +124,7 @@ Beta 13.12.09
|
|||
101. replace Matrix_ with Matrix3x3_ OK
|
||||
102. replace Matrix4_ with Matrix4x4_ OK
|
||||
103. fixup studio culling OK
|
||||
103. fixup client angles & blending
|
||||
103. fixup client angles & blending OK
|
||||
104. sorting folder resources OK
|
||||
105. sorting sources folder OK
|
||||
106. implement q3map2 into xtools.dll OK
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: vprogs - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
vprogs.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: vsound - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
vsound.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -533,7 +533,7 @@ bool PrepareBSPModel( int argc, char **argv )
|
|||
jitters[ i ] = sin( i * 139.54152147 );
|
||||
|
||||
game = &games[1]; // defaulting to Xash
|
||||
FS_LoadGameInfo();
|
||||
FS_LoadGameInfo( NULL );
|
||||
BspFunc = NULL;
|
||||
|
||||
if( FS_CheckParm( "-analyze" )) BspFunc = AnalyzeBSP;
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: xtools - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
xtools.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue