19 Sep 2009

This commit is contained in:
g-cont 2009-09-19 00:00:00 +04:00 committed by Alibek Omarov
parent 22db77f278
commit 82e6c4b001
42 changed files with 650 additions and 324 deletions

16
baserc/baserc.plg Normal file
View File

@ -0,0 +1,16 @@
<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>

65
client/client.plg Normal file
View File

@ -0,0 +1,65 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: client - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AB5.tmp" with contents
[
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "../common" /I "global" /I "hud" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\client\!debug/" /Fo"..\temp\client\!debug/" /Fd"..\temp\client\!debug/" /FD /c
"D:\Xash3D\src_main\client\global\view.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AB5.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AB6.tmp" with contents
[
msvcrtd.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\client\!debug/client.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /def:".\client.def" /out:"..\temp\client\!debug/client.dll" /implib:"..\temp\client\!debug/client.lib" /pdbtype:sept /libpath:"..\common\libs"
"\Xash3D\src_main\temp\client\!debug\dll_int.obj"
"\Xash3D\src_main\temp\client\!debug\hud.obj"
"\Xash3D\src_main\temp\client\!debug\hud_ammo.obj"
"\Xash3D\src_main\temp\client\!debug\hud_ammohistory.obj"
"\Xash3D\src_main\temp\client\!debug\hud_battery.obj"
"\Xash3D\src_main\temp\client\!debug\hud_death.obj"
"\Xash3D\src_main\temp\client\!debug\hud_flashlight.obj"
"\Xash3D\src_main\temp\client\!debug\hud_geiger.obj"
"\Xash3D\src_main\temp\client\!debug\hud_health.obj"
"\Xash3D\src_main\temp\client\!debug\hud_icons.obj"
"\Xash3D\src_main\temp\client\!debug\hud_menu.obj"
"\Xash3D\src_main\temp\client\!debug\hud_message.obj"
"\Xash3D\src_main\temp\client\!debug\hud_motd.obj"
"\Xash3D\src_main\temp\client\!debug\hud_msg.obj"
"\Xash3D\src_main\temp\client\!debug\hud_saytext.obj"
"\Xash3D\src_main\temp\client\!debug\hud_scoreboard.obj"
"\Xash3D\src_main\temp\client\!debug\hud_sound.obj"
"\Xash3D\src_main\temp\client\!debug\hud_statusbar.obj"
"\Xash3D\src_main\temp\client\!debug\hud_text.obj"
"\Xash3D\src_main\temp\client\!debug\hud_train.obj"
"\Xash3D\src_main\temp\client\!debug\hud_warhead.obj"
"\Xash3D\src_main\temp\client\!debug\hud_zoom.obj"
"\Xash3D\src_main\temp\client\!debug\tempents.obj"
"\Xash3D\src_main\temp\client\!debug\triapi.obj"
"\Xash3D\src_main\temp\client\!debug\utils.obj"
"\Xash3D\src_main\temp\client\!debug\view.obj"
]
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AB6.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AB7.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\client\!debug\client.dll "D:\Xash3D\bin\client.dll"
]
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AB7.bat"
Compiling...
view.cpp
Linking...
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\client\!debug\client.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.
<h3>Results</h3>
client.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@ -94,10 +94,19 @@ int HUD_UpdateClientData( client_data_t *cdata, float flTime )
return gHUD.UpdateClientData( cdata, flTime );
}
void HUD_UpdateEntityVars( edict_t *ent, skyportal_t *sky, const entity_state_t *state, const entity_state_t *prev )
void HUD_UpdateEntityVars( edict_t *ent, skyportal_t *sky, const entity_state_t *state, const entity_state_t *old )
{
int i;
float m_fLerp = GetLerpFrac();
int i;
float m_fLerp;
const entity_state_t *prev;
if( state->ed_flags & ESF_NODELTA )
prev = state;
else prev = old;
if( state->ed_type == ED_CLIENT && state->ed_flags & ESF_NO_PREDICTION )
m_fLerp = 1.0f; // FIXME: use 0.0f ?
else m_fLerp = GetLerpFrac();
// copy state to progs
ent->v.modelindex = state->modelindex;
@ -149,6 +158,13 @@ void HUD_UpdateEntityVars( edict_t *ent, skyportal_t *sky, const entity_state_t
switch( state->ed_type )
{
case ED_CLIENT:
if( ent == GetLocalPlayer())
{
edict_t *viewent = GetViewModel();
// setup player viewmodel (only for local player!)
viewent->v.modelindex = state->viewmodel;
}
for( i = 0; i < 3; i++ )
{
ent->v.punchangle[i] = LerpAngle( prev->punch_angles[i], state->punch_angles[i], m_fLerp);

View File

@ -285,13 +285,14 @@ void V_DropPunchAngle( float frametime, Vector &ev_punchangle )
//==========================
void V_CalcGunAngle( ref_params_t *pparams )
{
if( !pparams->viewmodel || pparams->fov_x > 135 ) return;
if( pparams->fov_x > 135 ) return;
edict_t *viewent = GetViewModel();
if( !viewent->v.modelindex ) return;
viewent->serialnumber = -1; // viewentity are handled with special number. don't change this
viewent->v.effects |= EF_MINLIGHT;
viewent->v.modelindex = pparams->viewmodel;
viewent->v.angles[YAW] = pparams->viewangles[YAW] + pparams->crosshairangle[YAW];
viewent->v.angles[PITCH] = pparams->viewangles[PITCH] + pparams->crosshairangle[PITCH] * 0.25;
@ -309,7 +310,8 @@ void V_PreRender( ref_params_t *pparams )
{
// input
pparams->intermission = gHUD.m_iIntermission;
pparams->thirdperson = gHUD.m_iCameraMode;
if( gHUD.m_iCameraMode ) pparams->flags |= RDF_THIRDPERSON;
else pparams->flags &= ~RDF_THIRDPERSON;
// output
gHUD.m_CrosshairAngles = pparams->crosshairangle;
@ -347,7 +349,7 @@ float V_CalcBob( ref_params_t *pparams )
if( cycle < cl_bobup->value ) cycle = M_PI * cycle / cl_bobup->value;
else cycle = M_PI + M_PI * ( cycle - cl_bobup->value )/( 1.0 - cl_bobup->value );
vel = pparams->velocity;
vel = pparams->simvel;
vel[2] = 0;
bob = sqrt( vel[0] * vel[0] + vel[1] * vel[1] ) * cl_bob->value;
@ -373,17 +375,21 @@ void V_AddIdle( ref_params_t *pparams )
void V_CalcViewRoll( ref_params_t *pparams )
{
float sign, side, value;
edict_t *viewentity;
Vector right;
if( pparams->health <= 0 )
viewentity = GetEntityByIndex( pparams->viewentity );
if( !viewentity ) return;
if( pparams->health <= 0 && ( pparams->viewheight[2] != 0 ))
{
GetViewModel()->v.modelindex = 0; // clear viewmodel
GetViewModel()->v.modelindex = 0; // clear the viewmodel
pparams->viewangles[ROLL] = 80; // dead view angle
return;
}
AngleVectors( pparams->angles, NULL, right, NULL );
side = right.Dot( pparams->velocity );
AngleVectors( viewentity->v.angles, NULL, right, NULL );
side = right.Dot( pparams->simvel );
sign = side < 0 ? -1 : 1;
side = fabs( side );
value = pparams->movevars->rollangle;
@ -496,14 +502,10 @@ void V_GetChasePos( ref_params_t *pparams, edict_t *ent, float *cl_angles, Vecto
else angles = cl_angles;
// refresh the position
if( !pparams->predicting || pparams->demoplayback )
if( !pparams->smoothing || pparams->demoplayback )
{
// use interpolated values
for( int i = 0; i < 3; i++ )
{
origin[i] = LerpPoint( pparams->prev.origin[i], pparams->origin[i], pparams->lerpfrac );
origin[i] += LerpPoint( pparams->prev.viewheight[i], pparams->viewheight[i], pparams->lerpfrac );
}
origin = pparams->simorg + pparams->viewheight;
}
origin[2] += 28; // DEFAULT_VIEWHEIGHT - some offset
@ -560,17 +562,14 @@ void V_CalcCameraRefdef( ref_params_t *pparams )
if( viewentity )
{
dstudiohdr_t *viewmonster = (dstudiohdr_t *)GetModelPtr( viewentity );
int i;
for( i = 0; i < 3; i++ )
v_origin[i] = LerpPoint( viewentity->v.oldorigin[i], viewentity->v.origin[i], pparams->lerpfrac );
v_origin = viewentity->v.origin;
// calc monster view if supposed
if( gHUD.viewFlags & MONSTER_VIEW && viewmonster )
v_origin += viewmonster->eyeposition;
for( i = 0; i < 3; i++ )
v_angles[i] = LerpAngle( viewentity->v.oldangles[i], viewentity->v.angles[i], pparams->lerpfrac );
v_angles = viewentity->v.angles;
if( gHUD.viewFlags & INVERSE_X ) // inverse X coordinate
v_angles[0] = -v_angles[0];
@ -795,7 +794,7 @@ float V_CalcWaterLevel( ref_params_t *pparams )
TraceResult tr;
Vector point;
TRACE_HULL( pparams->origin, Vector(-16,-16,-24), Vector(16,16,32), pparams->origin, 1, GetLocalPlayer(), &tr );
TRACE_HULL( pparams->simorg, Vector(-16,-16,-24), Vector(16,16,32), pparams->simorg, 1, GetLocalPlayer(), &tr );
if( tr.pHit && !stricmp( STRING( tr.pHit->v.classname ), "func_water" ))
waterDist += ( tr.pHit->v.scale * 16 );
@ -845,7 +844,7 @@ float V_CalcWaterLevel( ref_params_t *pparams )
void V_CalcScrOffset( ref_params_t *pparams )
{
// don't allow cheats in multiplayer
if( pparams->max_clients > 1 ) return;
if( pparams->maxclients > 1 ) return;
for( int i = 0; i < 3; i++ )
{
@ -865,7 +864,7 @@ void V_InterpolateOrigin( ref_params_t *pparams )
// view is the weapon model (only visible from inside body )
view = GetViewModel();
if( cl_vsmoothing->value && ( pparams->max_clients > 1 ))
if( cl_vsmoothing->value && ( pparams->maxclients > 1 ))
{
int i, foundidx;
float t;
@ -897,8 +896,8 @@ void V_InterpolateOrigin( ref_params_t *pparams )
// don't interpolate large changes
if( delta.Length() < 64 )
{
delta = neworg - pparams->origin;
pparams->origin += delta;
delta = neworg - pparams->simorg;
pparams->simorg += delta;
pparams->vieworg += delta;
view->v.origin += delta;
@ -927,28 +926,14 @@ void V_CalcFirstPersonRefdef( ref_params_t *pparams )
bob = V_CalcBob( pparams );
// refresh the position
if( !pparams->predicting || pparams->demoplayback )
if( !pparams->smoothing || pparams->demoplayback )
{
// use interpolated values
for( i = 0; i < 3; i++ )
{
pparams->vieworg[i] = LerpPoint( pparams->prev.origin[i], pparams->origin[i], pparams->lerpfrac );
pparams->vieworg[i] += LerpPoint( pparams->prev.viewheight[i], pparams->viewheight[i], pparams->lerpfrac );
}
pparams->vieworg = pparams->simorg + pparams->viewheight;
}
if( pparams->demoplayback )
{
for( i = 0; i < 3; i++ )
{
pparams->viewangles[i] = LerpAngle( pparams->prev.angles[i], pparams->angles[i], pparams->lerpfrac );
}
}
else
{
// in-game use predicted values
pparams->viewangles = pparams->cl_viewangles;
}
// in-game use predicted values
pparams->viewangles = pparams->cl_viewangles;
pparams->vieworg[2] += ( bob );
@ -992,25 +977,14 @@ void V_CalcFirstPersonRefdef( ref_params_t *pparams )
if( g_bMirrorPass || g_bPortalPass || g_bScreenPass )
pparams->punchangle = -pparams->punchangle; // make inverse for mirror
for( i = 0; i < 3; i++ )
pparams->viewangles[i] += LerpAngle( pparams->prev.punchangle[i], pparams->punchangle[i], pparams->lerpfrac );
pparams->viewangles += pparams->punchangle;
pparams->viewangles += ev_punchangle;
V_DropPunchAngle( pparams->frametime, ev_punchangle );
static float oldz = 0;
float newz;
// stair smoothing
newz = pparams->vieworg[2];
oldz -= newz;
oldz += (pparams->time - pparams->oldtime) * 100.0f; // speed of smooth
oldz = bound( -pparams->movevars->stepheight, oldz, 0 );
pparams->vieworg[2] += oldz;
view->v.origin[2] += oldz;
oldz += newz;
/*
if( pparams->onground && pparams->vieworg[2] - oldz > 0 )
if( !pparams->smoothing && pparams->onground && pparams->simorg[2] - oldz > 0 )
{
float steptime;
@ -1026,7 +1000,7 @@ void V_CalcFirstPersonRefdef( ref_params_t *pparams )
view->v.origin[2] += oldz - pparams->vieworg[2];
}
else oldz = pparams->vieworg[2];
*/
static Vector lastorg;
Vector delta;
@ -1034,7 +1008,7 @@ void V_CalcFirstPersonRefdef( ref_params_t *pparams )
if( delta.Length() != 0.0 )
{
ViewInterp.Origins[ViewInterp.CurrentOrigin & ORIGIN_MASK] = pparams->origin;
ViewInterp.Origins[ViewInterp.CurrentOrigin & ORIGIN_MASK] = pparams->simorg;
ViewInterp.OriginTime[ViewInterp.CurrentOrigin & ORIGIN_MASK] = pparams->time;
ViewInterp.CurrentOrigin++;

View File

@ -259,6 +259,14 @@ typedef enum
// built-in dlight flags
#define DLIGHT_FADE (1<<0) // fade dlight at end of lifetime
// renderer flags
#define RDF_NOWORLDMODEL (1<<0) // used for player configuration screen
#define RDF_OLDAREABITS (1<<1) // forces R_MarkLeaves if not set
#define RDF_PORTALINVIEW (1<<2) // cull entities using vis too because pvs\areabits are merged serverside
#define RDF_SKYPORTALINVIEW (1<<3) // draw skyportal instead of regular sky
#define RDF_NOFOVADJUSTMENT (1<<4) // do not adjust fov for widescreen
#define RDF_THIRDPERSON (1<<5) // enable chase cam instead firstperson
// engine built-in default shader
#define MAP_DEFAULT_SHADER "*black"

View File

@ -5,15 +5,6 @@
#ifndef REF_PARAMS_H
#define REF_PARAMS_H
// prev.state values to interpolate from
typedef struct latched_params_s
{
vec3_t origin;
vec3_t angles;
vec3_t viewheight;
vec3_t punchangle;
} latched_params_t;
typedef struct skyportal_s
{
float fov;
@ -25,60 +16,59 @@ typedef struct skyportal_s
typedef struct ref_params_s
{
// output
int viewport[4]; // x, y, width, height
vec3_t vieworg;
vec3_t viewangles;
float fov_x;
float fov_y; // fov_y = V_CalcFov( fov_x, viewport[2], viewport[3] );
vec3_t forward;
vec3_t right;
vec3_t up;
float frametime; // client frametime
float lerpfrac; // between oldframe and frame
float time; // client time
float oldtime; // studio lerping
int intermission;
int paused;
int spectator;
edict_t *onground; // pointer to onground entity
int waterlevel;
vec3_t simvel; // client velocity (came from server)
vec3_t simorg; // client origin (without viewheight)
vec3_t viewheight;
float idealpitch;
vec3_t cl_viewangles; // predicted angles
int health;
vec3_t crosshairangle; // pfnCrosshairAngle values from server
float viewsize;
vec3_t punchangle; // receivied from server
int maxclients;
int viewentity; // entity that set with svc_setview else localclient
int num_entities; // entities actual count (was int playernum;)
int max_entities;
int demoplayback;
int movetype; // client movetype (was int hardware;)
int smoothing; // client movement predicting is running
usercmd_t *cmd; // last issued usercmd
movevars_t *movevars; // sv.movevars
latched_params_t prev;
// misc
int rdflags;
BOOL intermission;
BOOL demoplayback;
BOOL demorecord;
BOOL paused;
BOOL thirdperson; // thirdperson mode
BOOL predicting; // client movement predicting is running
int onlyClientDraw; // 1 - don't draw worldmodel
int nextView; // num RenderView passes
edict_t *onground; // pointer to onground entity
int viewport[4]; // x, y, width, height
int nextView; // the renderer calls ClientDLL_CalcRefdef() and Renderview
// so long in cycles until this value is 0 (multiple views)
int flags; // renderer setup flags (was int onlyClientDraw;)
// Xash Renderer Specifics
byte *areabits; // come from server, contains visible areas list
int waterlevel;
int movetype; // client movetype
skyportal_t skyportal;
// input
// set it to NULL for disable area visibility
skyportal_t skyportal; // sky protal setup is done in HUD_UpdateEntityVars
float blend[4]; // rgba 0-1 full screen blend
vec3_t velocity;
vec3_t cl_viewangles; // predicted angles
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; // receivied from server
int clientnum;
int viewmodel; // viewmodel index
int num_entities;
int max_entities;
int max_clients;
float fov_x;
float fov_y; // fov_y = V_CalcFov( fov_x, viewport[2], viewport[3] );
} ref_params_t;
#endif//REF_PARAMS_H

View File

@ -149,6 +149,7 @@ typedef struct enginefuncs_s
word (*pfnCRC_Final)( word pulCRC );
long (*pfnRandomLong)( long lLow, long lHigh );
float (*pfnRandomFloat)( float flLow, float flHigh );
void (*pfnSetView)( const edict_t *pClient, const edict_t *pViewent );
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 );

View File

@ -281,8 +281,6 @@ void CL_ParseFrame( sizebuf_t *msg )
else cl.frame.valid = true; // valid delta parse
}
cl.time = bound( cl.frame.servertime - cl.serverframetime, cl.time, cl.frame.servertime );
// read areabits
len = MSG_ReadByte( msg );
MSG_ReadData( msg, &cl.frame.areabits, len );
@ -339,9 +337,9 @@ void CL_AddPacketEntities( frame_t *frame )
edict_t *ent;
int pnum;
if( cl_paused->integer )
cl.refdef.lerpfrac = 1.0f;
else cl.refdef.lerpfrac = 1.0 - (cl.frame.servertime - cl.time) / (float)cl.serverframetime;
cl.time = bound( cl.frame.servertime - cl.serverframetime, cl.time, cl.frame.servertime );
if( cl_paused->integer ) cl.lerpFrac = 1.0f;
else cl.lerpFrac = 1.0 - (cl.frame.servertime - cl.time) / (float)cl.serverframetime;
for( pnum = 0; pnum < frame->num_entities; pnum++ )
{

View File

@ -870,13 +870,13 @@ float pfnGetClientTime( void )
/*
=============
pfnGetLerpFrac
CL_GetLerpFrac
=============
*/
float pfnGetLerpFrac( void )
float CL_GetLerpFrac( void )
{
return cl.refdef.lerpfrac;
return cl.lerpFrac;
}
/*
@ -1345,7 +1345,7 @@ static cl_enginefuncs_t gEngfuncs =
CL_GetLocalPlayer,
pfnIsSpectateOnly,
pfnGetClientTime,
pfnGetLerpFrac,
CL_GetLerpFrac,
pfnGetMaxClients,
pfnGetViewModel,
pfnGetModelPtr,

View File

@ -509,7 +509,7 @@ void CL_FinishMove( usercmd_t *cmd )
cmd->buttons = CL_ButtonBits( 1 );
// process commands with user dll's
cl.data.fov = cl.frame.ps.fov;
cl.data.fov = cl.refdef.fov_x;
cl.data.iKeyBits = CL_ButtonBits( 0 );
cl.data.iWeaponBits = cl.frame.ps.weapons;
@ -517,7 +517,7 @@ void CL_FinishMove( usercmd_t *cmd )
VectorCopy( cl.refdef.cl_viewangles, cmd->angles );
VectorCopy( cl.refdef.cl_viewangles, cl.data.angles );
VectorCopy( cl.refdef.origin, cl.data.origin );
VectorCopy( cl.refdef.simorg, cl.data.origin );
clgame.dllFuncs.pfnUpdateClientData( &cl.data, ( cl.time * 0.001f ));

View File

@ -1171,7 +1171,6 @@ void CL_Frame( long time )
return;
// decide the simulation time
cl.oldtime = cl.time;
cl.time += time; // can be merged by cl.frame.servertime
cls.realtime += time;
cls.frametime = time * 0.001f;

View File

@ -509,6 +509,9 @@ void CL_ParseServerMessage( sizebuf_t *msg )
case svc_setangle:
CL_ParseSetAngle( msg );
break;
case svc_setview:
cl.refdef.viewentity = MSG_ReadWord( msg );
break;
case svc_crosshairangle:
CL_ParseCrosshairAngle( msg );
break;

View File

@ -65,86 +65,56 @@ update refdef values each frame
*/
void V_SetupRefDef( void )
{
int i;
float backlerp;
frame_t *oldframe;
entity_state_t *ps, *ops;
edict_t *clent;
// find the previous frame to interpolate from
ps = &cl.frame.ps;
i = (cl.frame.serverframe - 1) & UPDATE_MASK;
oldframe = &cl.frames[i];
if( oldframe->serverframe != cl.frame.serverframe-1 || !oldframe->valid )
oldframe = &cl.frame; // previous frame was dropped or invalid
ops = &oldframe->ps;
clent = EDICT_NUM( cl.playernum + 1 );
// 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 );
// interpolate field of view
cl.data.fov = ops->fov + cl.refdef.lerpfrac * ( ps->fov - ops->fov );
VectorCopy( ps->velocity, cl.refdef.velocity );
VectorCopy( ps->origin, cl.refdef.origin );
VectorCopy( ops->origin, cl.refdef.prev.origin );
VectorCopy( ps->angles, cl.refdef.angles );
VectorCopy( ops->angles, cl.refdef.prev.angles );
VectorCopy( ps->viewoffset, cl.refdef.viewheight );
VectorCopy( ops->viewoffset, cl.refdef.prev.viewheight );
VectorCopy( ps->punch_angles, cl.refdef.punchangle );
VectorCopy( ops->punch_angles, cl.refdef.prev.punchangle );
// get field of view
cl.refdef.fov_x = clent->v.fov;
VectorCopy( clent->v.velocity, cl.refdef.simvel );
VectorCopy( clent->v.origin, cl.refdef.simorg );
VectorCopy( clent->v.view_ofs, cl.refdef.viewheight );
VectorCopy( clent->v.punchangle, cl.refdef.punchangle );
cl.refdef.movevars = &clgame.movevars;
if( ps->flags & FL_ONGROUND )
cl.refdef.onground = EDICT_NUM( ps->groundent );
if( clent->v.flags & FL_ONGROUND )
cl.refdef.onground = clent->v.groundentity;
else cl.refdef.onground = NULL;
cl.refdef.areabits = cl.frame.areabits;
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.health = clent->v.health;
cl.refdef.movetype = clent->v.movetype;
cl.refdef.idealpitch = clent->v.ideal_pitch;
cl.refdef.num_entities = clgame.numEntities;
cl.refdef.max_entities = clgame.maxEntities;
cl.refdef.max_clients = clgame.maxClients;
cl.refdef.oldtime = cl.oldtime * 0.001f;
cl.refdef.time = cl.time * 0.001f; // cl.time for right lerping
cl.refdef.maxclients = clgame.maxClients;
cl.refdef.time = cl.time * 0.001f;
cl.refdef.frametime = cls.frametime;
cl.refdef.demoplayback = cls.demoplayback;
cl.refdef.demorecord = cls.demorecording;
cl.refdef.paused = cl_paused->integer;
cl.refdef.predicting = cl_predict->integer;
cl.refdef.smoothing = cl_predict->integer;
cl.refdef.waterlevel = clent->v.waterlevel;
cl.refdef.rdflags = cl.render_flags;
cl.refdef.flags = cl.render_flags;
cl.refdef.nextView = 0;
// calculate the origin
if( cl.refdef.predicting && !cl.refdef.demoplayback )
if( cl.refdef.smoothing && !cl.refdef.demoplayback )
{
// use predicted values
int delta;
int i, delta;
float backlerp = 1.0 - cl.lerpFrac;
backlerp = 1.0 - cl.refdef.lerpfrac;
for( i = 0; i < 3; i++ )
{
cl.refdef.vieworg[i] = cl.predicted_origin[i] + ops->viewoffset[i]
+ cl.refdef.lerpfrac * (ps->viewoffset[i] - ops->viewoffset[i]) - backlerp * cl.prediction_error[i];
}
cl.refdef.vieworg[i] = cl.predicted_origin[i] + cl.refdef.viewheight[i] - backlerp * cl.prediction_error[i];
// smooth out stair climbing
delta = cls.realtime - cl.predicted_step_time;
if( delta < cl.serverframetime ) cl.refdef.vieworg[2] -= cl.predicted_step * (cl.serverframetime - delta) * 0.01f;
if( delta < cl.serverframetime )
cl.refdef.vieworg[2] -= cl.predicted_step * ((cl.serverframetime - delta) / (float)cl.serverframetime);
}
}
@ -157,8 +127,8 @@ apply pre-calculated values
*/
void V_AddViewModel( void )
{
if( !cl.viewent.v.modelindex || cl.refdef.nextView ) return;
re->AddRefEntity( &cl.viewent, ED_VIEWMODEL );
if( cl.viewent.v.modelindex && !cl.refdef.nextView )
re->AddRefEntity( &cl.viewent, ED_VIEWMODEL );
}
/*

View File

@ -102,9 +102,9 @@ typedef struct
long mtime[2]; // the timestamp of the last two messages
long time; // this is the time value that the client
long oldtime; // cl.oldtime
// is rendering at. always <= cls.realtime
int render_flags; // clearing at end of frame
float lerpFrac; // interpolation value
ref_params_t refdef; // shared refdef
edict_t viewent; // viewmodel
client_data_t data; // hud data
@ -433,6 +433,7 @@ bool CL_LoadProgs( const char *name );
void CL_ParseUserMessage( sizebuf_t *msg, int svc_num );
void CL_LinkUserMessage( char *pszName, const int svc_num );
void CL_SortUserMessages( void );
float CL_GetLerpFrac( void );
edict_t *CL_AllocEdict( void );
void CL_InitEdict( edict_t *pEdict );
void CL_FreeEdict( edict_t *pEdict );

View File

@ -65,6 +65,7 @@ enum svc_ops_e
svc_frame, // server frame
svc_sound, // <see code>
svc_setangle, // [short short short] set the view angle to this absolute value
svc_setview, // [short] entity number
svc_print, // [byte] id [string] null terminated string
svc_crosshairangle, // [short][short][short]
svc_time, // [long] sv.time

View File

@ -6,86 +6,6 @@
--------------------Configuration: engine - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8486.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\client\cl_game.c"
]
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8486.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8487.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"
"\Xash3D\src_main\temp\engine\!debug\cl_cmds.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_demo.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_effects.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_frame.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_game.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_input.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_main.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_parse.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_phys.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_scrn.obj"
"\Xash3D\src_main\temp\engine\!debug\cl_view.obj"
"\Xash3D\src_main\temp\engine\!debug\com_library.obj"
"\Xash3D\src_main\temp\engine\!debug\con_keys.obj"
"\Xash3D\src_main\temp\engine\!debug\con_main.obj"
"\Xash3D\src_main\temp\engine\!debug\con_utils.obj"
"\Xash3D\src_main\temp\engine\!debug\engfuncs.obj"
"\Xash3D\src_main\temp\engine\!debug\engine.obj"
"\Xash3D\src_main\temp\engine\!debug\host.obj"
"\Xash3D\src_main\temp\engine\!debug\infostring.obj"
"\Xash3D\src_main\temp\engine\!debug\input.obj"
"\Xash3D\src_main\temp\engine\!debug\net_chan.obj"
"\Xash3D\src_main\temp\engine\!debug\net_huff.obj"
"\Xash3D\src_main\temp\engine\!debug\net_msg.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_client.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_cmds.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_frame.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_game.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_init.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_main.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_move.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_phys.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_save.obj"
"\Xash3D\src_main\temp\engine\!debug\sv_world.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_advanced.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_audio.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_controls.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_credits.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_defaults.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_demos.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_gameoptions.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_gotosite.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_ingame.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_loadgame.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_main.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_menu.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_mods.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_multiplayer.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_network.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_options.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_performance.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_playersetup.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_qmenu.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_quit.obj"
"\Xash3D\src_main\temp\engine\!debug\ui_savegame.obj"
"\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\RSP8487.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8488.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\RSP8488.bat"
Compiling...
cl_game.c
Linking...
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\engine\!debug\engine.dll
‘Ş®Ż¨ŕ®˘ ­® ä ©«®˘: 1.

View File

@ -84,6 +84,7 @@ void Host_InitRender( void )
ri.GetClientEdict = CL_GetEdictByIndex;
ri.GetLocalPlayer = CL_GetLocalPlayer;
ri.GetMaxClients = CL_GetMaxClients;
ri.GetLerpFrac = CL_GetLerpFrac;
ri.WndProc = IN_WndProc;
Sys_LoadLibrary( &render_dll );

View File

@ -568,6 +568,13 @@ void SV_PutClientInServer( edict_t *ent )
{
}
if( !( ent->v.flags & FL_FAKECLIENT ))
{
MSG_WriteByte( &client->netchan.message, svc_setview );
MSG_WriteWord( &client->netchan.message, NUM_FOR_EDICT( client->edict ));
MSG_Send( MSG_ONE_R, NULL, client->edict );
}
SV_LinkEdict( ent ); // m_pmatrix calculated here, so we need call this before pe->CreatePlayer
ent->pvServerData->physbody = pe->CreatePlayer( ent, SV_GetModelPtr( ent ), ent->v.origin, ent->v.m_pmatrix );
Mem_EmptyPool( svgame.temppool ); // all tempstrings can be freed now

View File

@ -51,11 +51,16 @@ void SV_UpdateEntityState( edict_t *ent, bool baseline )
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 );
sv_client_t *client = ent->pvServerData->client;
if( client )
{
MSG_WriteByte( &client->netchan.message, svc_setangle );
MSG_WriteAngle32( &client->netchan.message, ent->v.angles[0] );
MSG_WriteAngle32( &client->netchan.message, ent->v.angles[1] );
MSG_WriteAngle32( &client->netchan.message, 0 );
MSG_Send( MSG_ONE_R, vec3_origin, client->edict );
}
}
svgame.dllFuncs.pfnUpdateEntityState( &ent->pvServerData->s, ent, baseline );

View File

@ -2720,6 +2720,43 @@ int pfnCanSkipPlayer( const edict_t *player )
return false;
}
/*
=============
pfnSetView
=============
*/
void pfnSetView( const edict_t *pClient, const edict_t *pViewent )
{
sv_client_t *client;
if( pClient == NULL || pClient->free )
{
MsgDev( D_ERROR, "SV_SetView: invalid client!\n" );
return;
}
client = pClient->pvServerData->client;
if( !client )
{
MsgDev( D_ERROR, "SV_SetView: not a client!\n" );
return;
}
// fakeclients can't set customview
if( pClient->v.flags & FL_FAKECLIENT ) return;
if( pViewent == NULL || pViewent->free )
{
MsgDev( D_ERROR, "SV_SetView: invalid viewent!\n" );
return;
}
MSG_WriteByte( &client->netchan.message, svc_setview );
MSG_WriteWord( &client->netchan.message, NUM_FOR_EDICT( pViewent ));
MSG_Send( MSG_ONE_R, NULL, client->edict );
}
/*
=============
pfnSetSkybox
@ -2859,6 +2896,7 @@ static enginefuncs_t gEngfuncs =
pfnCRC_Final,
pfnRandomLong,
pfnRandomFloat,
pfnSetView,
pfnCrosshairAngle,
pfnLoadFile,
pfnFOpen,

View File

@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "common.h"
#include "ui_local.h"
#include "client.h"
#define ART_BACKGROUND "gfx/shell/misc/ui_sub_options"
#define ART_BANNER "gfx/shell/banners/playersetup_t"
@ -253,9 +253,9 @@ static void UI_PlayerSetup_Ownerdraw( void *self )
refDef.viewport[3] = item->height - (item->height / 6);
refDef.fov_x = 40;
refDef.fov_y = UI_PlayerSetup_CalcFov( refDef.fov_x, refDef.viewport[2], refDef.viewport[3] );
refDef.rdflags = RDF_NOWORLDMODEL;
refDef.oldtime = refDef.time;
refDef.flags = RDF_NOWORLDMODEL;
refDef.time = uiStatic.realTime * 0.001f;
refDef.frametime = cls.frametime;
re->RenderFrame( &refDef );
}
else

16
launch/launch.plg Normal file
View File

@ -0,0 +1,16 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: launch - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
<h3>Results</h3>
launch.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

16
physic/physic.plg Normal file
View File

@ -0,0 +1,16 @@
<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>

View File

@ -18,14 +18,6 @@
#define VID_LEVELSHOT 1
#define VID_SAVESHOT 2
// refdef flags
#define RDF_NOWORLDMODEL BIT(0) // used for player configuration screen
#define RDF_OLDAREABITS BIT(1) // forces R_MarkLeaves if not set
#define RDF_PORTALINVIEW BIT(2) // cull entities using vis too because pvs\areabits are merged serverside
#define RDF_SKYPORTALINVIEW BIT(3) // draw skyportal instead of regular sky
#define RDF_NOFOVADJUSTMENT BIT(4) // do not adjust fov for widescreen
#define RDF_WORLDOUTLINES BIT(5) // draw cell outlines for world surfaces
// render supported extensions
#define R_WGL_SWAPCONTROL 1
#define R_HARDWARE_GAMMA_CONTROL 2
@ -131,6 +123,7 @@ typedef struct render_imp_s
edict_t *(*GetClientEdict)( int index );
edict_t *(*GetLocalPlayer)( void );
int (*GetMaxClients)( void );
float (*GetLerpFrac)( void );
} render_imp_t;
#endif//RENDER_API_H

View File

@ -843,7 +843,7 @@ void R_DrawAliasModel( const meshbuffer_t *mb )
if( !r_lerpmodels->integer )
backLerp = 0;
else backLerp = 1.0f - RI.refdef.lerpfrac;
else backLerp = 1.0f - RI.lerpFrac;
R_DrawAliasFrameLerp( mb, backLerp );
@ -907,7 +907,7 @@ bool R_CullAliasModel( ref_entity_t *e )
if( !frustum && query )
R_IssueOcclusionQuery( R_GetOcclusionQueryNum( OQ_ENTITY, e - r_entities ), e, alias_mins, alias_maxs );
if( ( RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( ( RI.refdef.flags & RDF_NOWORLDMODEL )
|| ( r_shadows->integer != SHADOW_PLANAR && !( r_shadows->integer == SHADOW_MAPPING && ( e->flags & EF_PLANARSHADOW )))
|| R_CullPlanarShadow( e, alias_mins, alias_maxs, query ) )
return frustum; // entity is not in PVS or shadow is culled away by frustum culling

View File

@ -402,7 +402,7 @@ void R_BackendEndFrame( void )
// clean up texture units
R_CleanUpTextureUnits( 1 );
if( r_speeds->integer && !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) )
if( r_speeds->integer && !( RI.refdef.flags & RDF_NOWORLDMODEL ) )
{
switch( r_speeds->integer )
{
@ -548,7 +548,7 @@ void R_FlushArrays( void )
pglColorPointer( 4, GL_UNSIGNED_BYTE, 0, tr.colorsBuffer->pointer );
}
if( r_drawelements->integer || glState.in2DMode || RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( r_drawelements->integer || glState.in2DMode || RI.refdef.flags & RDF_NOWORLDMODEL )
{
if( GL_Support( R_DRAW_RANGEELEMENTS_EXT ))
pglDrawRangeElementsEXT( GL_TRIANGLES, 0, r_backacc.numVerts, r_backacc.numElems, GL_UNSIGNED_INT, elemsArray );

View File

@ -127,7 +127,7 @@ bool R_VisCullBox( const vec3_t mins, const vec3_t maxs )
vec3_t extmins, extmaxs;
mnode_t *node, *localstack[2048];
if( !r_worldmodel || ( RI.refdef.rdflags & RDF_NOWORLDMODEL ) )
if( !r_worldmodel || ( RI.refdef.flags & RDF_NOWORLDMODEL ) )
return false;
if( r_novis->integer )
return false;
@ -178,7 +178,7 @@ bool R_VisCullSphere( const vec3_t origin, float radius )
int stackdepth = 0;
mnode_t *node, *localstack[2048];
if( !r_worldmodel || ( RI.refdef.rdflags & RDF_NOWORLDMODEL ) )
if( !r_worldmodel || ( RI.refdef.flags & RDF_NOWORLDMODEL ) )
return false;
if( r_novis->integer )
return false;
@ -232,13 +232,13 @@ int R_CullModel( ref_entity_t *e, vec3_t mins, vec3_t maxs, float radius )
return 0;
}
if( RP_LOCALCLIENT( e ) && !RI.refdef.thirdperson )
if( RP_LOCALCLIENT( e ) && !(RI.refdef.flags & RDF_THIRDPERSON))
{
if(!( RI.params & ( RP_MIRRORVIEW|RP_SHADOWMAPVIEW )))
return 1;
}
if( RP_FOLLOWENTITY( e ) && RP_LOCALCLIENT( e->parent ) && !RI.refdef.thirdperson )
if( RP_FOLLOWENTITY( e ) && RP_LOCALCLIENT( e->parent ) && !(RI.refdef.flags & RDF_THIRDPERSON ))
{
if(!( RI.params & ( RP_MIRRORVIEW|RP_SHADOWMAPVIEW )))
return 1;
@ -247,7 +247,7 @@ int R_CullModel( ref_entity_t *e, vec3_t mins, vec3_t maxs, float radius )
if( R_CullSphere( e->origin, radius, RI.clipFlags ))
return 1;
if( RI.refdef.rdflags & (RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW) || (RI.params & RP_SKYPORTALVIEW))
if( RI.refdef.flags & (RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW) || (RI.params & RP_SKYPORTALVIEW))
{
if( R_VisCullSphere( e->origin, radius ))
return 2;

View File

@ -3184,7 +3184,7 @@ bool VID_CubemapShot( const char *base, uint size, bool skyshot )
string basename;
int i = 1, flags, result;
if( RI.refdef.onlyClientDraw || !r_worldmodel )
if((RI.refdef.flags & RDF_NOWORLDMODEL) || !r_worldmodel )
return false;
// make sure the specified size is valid

View File

@ -344,6 +344,8 @@ typedef struct
ref_params_t refdef;
int scissor[4];
int viewport[4];
float lerpFrac; // lerpfraction
meshlist_t *meshlist; // meshes to be rendered
meshbuffer_t **surfmbuffers; // pointers to meshbuffers of world surfaces
@ -362,7 +364,7 @@ typedef struct
vec_t *vup, *vpn, *vright;
cplane_t frustum[6];
float farClip;
unsigned int clipFlags;
uint clipFlags;
vec3_t visMins, visMaxs;
matrix4x4 objectMatrix;
@ -598,9 +600,9 @@ enum
};
#define OCCLUSION_QUERIES_CVAR_HACK( RI ) ( !(r_occlusion_queries->integer == 2 && r_shadows->integer != SHADOW_MAPPING) \
|| ((RI).refdef.rdflags & RDF_PORTALINVIEW) )
|| ((RI).refdef.flags & RDF_PORTALINVIEW) )
#define OCCLUSION_QUERIES_ENABLED( RI ) ( GL_Support( R_OCCLUSION_QUERIES_EXT ) && r_occlusion_queries->integer && r_drawentities->integer \
&& !((RI).params & RP_NONVIEWERREF) && !((RI).refdef.rdflags & RDF_NOWORLDMODEL) \
&& !((RI).params & RP_NONVIEWERREF) && !((RI).refdef.flags & RDF_NOWORLDMODEL) \
&& OCCLUSION_QUERIES_CVAR_HACK( RI ) )
#define OCCLUSION_OPAQUE_SHADER( s ) (((s)->sort == SORT_OPAQUE ) && ((s)->flags & SHADER_DEPTHWRITE ) && !(s)->numDeforms )
#define OCCLUSION_TEST_ENTITY( e ) (((e)->flags & EF_OCCLUSIONTEST) || ((e)->ent_type == ED_VIEWMODEL))

View File

@ -370,7 +370,7 @@ mfog_t *R_FogForSphere( const vec3_t centre, const float radius )
mfog_t *fog;
cplane_t *plane;
if( !r_worldmodel || ( RI.refdef.rdflags & RDF_NOWORLDMODEL ) || !r_worldbrushmodel->numfogs )
if( !r_worldmodel || ( RI.refdef.flags & RDF_NOWORLDMODEL ) || !r_worldbrushmodel->numfogs )
return NULL;
if( RI.params & RP_SHADOWMAPVIEW )
return NULL;
@ -741,7 +741,7 @@ static void R_AddSpriteModelToList( ref_entity_t *e )
else return; // occluded
}
if( RI.refdef.rdflags & (RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW) || ( RI.params & RP_SKYPORTALVIEW ))
if( RI.refdef.flags & (RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW) || ( RI.params & RP_SKYPORTALVIEW ))
{
if( R_VisCullSphere( e->origin, frame->radius ))
return;
@ -764,7 +764,7 @@ static void R_AddSpritePolyToList( ref_entity_t *e )
dist = (e->origin[0] - RI.refdef.vieworg[0]) * RI.vpn[0] + (e->origin[1] - RI.refdef.vieworg[1]) * RI.vpn[1] + (e->origin[2] - RI.refdef.vieworg[2]) * RI.vpn[2];
if( dist < 0 ) return; // cull it because we don't want to sort unneeded things
if( RI.refdef.rdflags & ( RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW ) || ( RI.params & RP_SKYPORTALVIEW ) )
if( RI.refdef.flags & ( RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW ) || ( RI.params & RP_SKYPORTALVIEW ) )
{
if( R_VisCullSphere( e->origin, e->radius ) )
return;
@ -995,7 +995,7 @@ static float R_FarClip( void )
{
float farclip_dist;
if( r_worldmodel && !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) )
if( r_worldmodel && !( RI.refdef.flags & RDF_NOWORLDMODEL ) )
{
int i;
float dist;
@ -1040,7 +1040,7 @@ static void R_SetupProjectionMatrix( const ref_params_t *rd, matrix4x4 m )
{
GLdouble xMin, xMax, yMin, yMax, zNear, zFar;
if( rd->rdflags & RDF_NOWORLDMODEL )
if( rd->flags & RDF_NOWORLDMODEL )
RI.farClip = 2048;
else
RI.farClip = R_FarClip();
@ -1099,7 +1099,7 @@ static void R_SetupFrame( void )
r_framecount++;
// current viewcluster
if( !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) )
if( !( RI.refdef.flags & RDF_NOWORLDMODEL ) )
{
VectorCopy( r_worldmodel->mins, RI.visMins );
VectorCopy( r_worldmodel->maxs, RI.visMaxs );
@ -1180,7 +1180,7 @@ static void R_Clear( int bitMask )
bits = GL_DEPTH_BUFFER_BIT;
if( !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) && r_fastsky->integer )
if( !( RI.refdef.flags & RDF_NOWORLDMODEL ) && r_fastsky->integer )
bits |= GL_COLOR_BUFFER_BIT;
if( glState.stencilEnabled && ( r_shadows->integer >= SHADOW_PLANAR ) )
bits |= GL_STENCIL_BUFFER_BIT;
@ -1192,7 +1192,7 @@ static void R_Clear( int bitMask )
if( bits & GL_COLOR_BUFFER_BIT )
{
byte *color = r_worldmodel && !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) && r_worldbrushmodel->globalfog ?
byte *color = r_worldmodel && !( RI.refdef.flags & RDF_NOWORLDMODEL ) && r_worldbrushmodel->globalfog ?
r_worldbrushmodel->globalfog->shader->fog_color : mapConfig.environmentColor;
pglClearColor( (float)color[0]*( 1.0/255.0 ), (float)color[1]*( 1.0/255.0 ), (float)color[2]*( 1.0/255.0 ), 1 );
}
@ -1567,7 +1567,7 @@ void R_RenderDebugSurface( void )
vec3_t forward;
vec3_t start, end;
if( RI.params & RP_NONVIEWERREF || RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( RI.params & RP_NONVIEWERREF || RI.refdef.flags & RDF_NOWORLDMODEL )
return;
r_debug_surface = NULL;
@ -1606,7 +1606,7 @@ void R_RenderView( const ref_params_t *fd )
R_ClearMeshList( RI.meshlist );
if( !r_worldmodel && !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) )
if( !r_worldmodel && !( RI.refdef.flags & RDF_NOWORLDMODEL ) )
Host_Error( "R_RenderView: NULL worldmodel\n" );
R_SetupFrame();
@ -1866,7 +1866,7 @@ void R_RenderScene( const ref_params_t *fd )
R_BackendStartFrame();
if(!( fd->rdflags & RDF_NOWORLDMODEL ))
if(!( fd->flags & RDF_NOWORLDMODEL ))
{
r_lastRefdef = *fd;
}
@ -1880,7 +1880,8 @@ void R_RenderScene( const ref_params_t *fd )
RI.refdef = *fd;
RI.farClip = 0;
RI.clipFlags = 15;
if( r_worldmodel && !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) && r_worldbrushmodel->globalfog )
RI.lerpFrac = ri.GetLerpFrac();
if( r_worldmodel && !( RI.refdef.flags & RDF_NOWORLDMODEL ) && r_worldbrushmodel->globalfog )
{
RI.farClip = r_worldbrushmodel->globalfog->shader->fog_dist;
RI.farClip = max( r_farclip_min, RI.farClip ) + r_farclip_bias;
@ -1891,14 +1892,14 @@ void R_RenderScene( const ref_params_t *fd )
RI.shadowGroup = NULL;
// adjust field of view for widescreen
if( glState.wideScreen && !( fd->rdflags & RDF_NOFOVADJUSTMENT ))
if( glState.wideScreen && !( fd->flags & RDF_NOFOVADJUSTMENT ))
AdjustFov( &RI.refdef.fov_x, &RI.refdef.fov_y, glState.width, glState.height, false );
Vector4Set( RI.scissor, fd->viewport[0], glState.height - fd->viewport[3] - fd->viewport[1], fd->viewport[2], fd->viewport[3] );
Vector4Set( RI.viewport, fd->viewport[0], glState.height - fd->viewport[3] - fd->viewport[1], fd->viewport[2], fd->viewport[3] );
VectorCopy( fd->vieworg, RI.pvsOrigin );
if( gl_finish->integer && !gl_delayfinish->integer && !( fd->rdflags & RDF_NOWORLDMODEL ))
if( gl_finish->integer && !gl_delayfinish->integer && !( fd->flags & RDF_NOWORLDMODEL ))
pglFinish();
R_ClearShadowmaps();

View File

@ -298,7 +298,7 @@ int R_ReAllocMeshList( meshbuffer_t **mb, int minMeshes, int maxMeshes )
*mb = newMB;
// NULL all pointers to old membuffers so we don't crash
if( r_worldmodel && !( RI.refdef.rdflags & RDF_NOWORLDMODEL ) )
if( r_worldmodel && !( RI.refdef.flags & RDF_NOWORLDMODEL ) )
memset( RI.surfmbuffers, 0, r_worldbrushmodel->numsurfaces * sizeof( meshbuffer_t * ) );
return newSize;
@ -624,7 +624,7 @@ void R_DrawPortals( void )
}
}
if( ( RI.refdef.rdflags & RDF_SKYPORTALINVIEW ) && !( RI.params & RP_NOSKY ) && !r_fastsky->integer )
if( ( RI.refdef.flags & RDF_SKYPORTALINVIEW ) && !( RI.params & RP_NOSKY ) && !r_fastsky->integer )
{
for( i = 0, mb = RI.meshlist->meshbuffer_opaque; i < RI.meshlist->num_opaque_meshes; i++, mb++ )
{
@ -1225,12 +1225,12 @@ void R_DrawSkyPortal( skyportal_t *skyportal, vec3_t mins, vec3_t maxs )
VectorAdd( RI.refdef.viewangles, skyportal->viewanglesOffset, RI.refdef.viewangles );
RI.refdef.rdflags &= ~RDF_SKYPORTALINVIEW;
RI.refdef.flags &= ~RDF_SKYPORTALINVIEW;
if( skyportal->fov )
{
RI.refdef.fov_x = skyportal->fov;
RI.refdef.fov_y = CalcFov( RI.refdef.fov_x, RI.refdef.viewport[2], RI.refdef.viewport[3] );
if( glState.wideScreen && !( RI.refdef.rdflags & RDF_NOFOVADJUSTMENT ) )
if( glState.wideScreen && !( RI.refdef.flags & RDF_NOFOVADJUSTMENT ) )
AdjustFov( &RI.refdef.fov_x, &RI.refdef.fov_y, glState.width, glState.height, false );
}

View File

@ -221,7 +221,7 @@ void R_ClearShadowmaps( void )
{
r_numShadowGroups = 0;
if( r_shadows->integer != SHADOW_MAPPING || RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( r_shadows->integer != SHADOW_MAPPING || RI.refdef.flags & RDF_NOWORLDMODEL )
return;
// clear all possible values, should be called once per scene
@ -246,7 +246,7 @@ bool R_AddShadowCaster( ref_entity_t *ent )
mleaf_t *leaf;
vec3_t mins, maxs, bbox[8];
if( r_shadows->integer != SHADOW_MAPPING || RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( r_shadows->integer != SHADOW_MAPPING || RI.refdef.flags & RDF_NOWORLDMODEL )
return false;
if( !GL_Support( R_SHADER_GLSL100_EXT ) || !GL_Support( R_DEPTH_TEXTURE ) || !GL_Support( R_SHADOW_EXT ))
return false;
@ -363,7 +363,7 @@ void R_CullShadowmapGroups( void )
vec3_t mins, maxs;
shadowGroup_t *group;
if( RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( RI.refdef.flags & RDF_NOWORLDMODEL )
return;
memset( r_shadowCullBits, 0, sizeof( r_shadowCullBits ) );
@ -413,7 +413,7 @@ void R_DrawShadowmaps( void )
RI.previousentity = NULL;
Mem_Copy( &oldRI, &prevRI, sizeof( refinst_t ) );
Mem_Copy( &prevRI, &RI, sizeof( refinst_t ) );
RI.refdef.rdflags &= ~RDF_SKYPORTALINVIEW;
RI.refdef.flags &= ~RDF_SKYPORTALINVIEW;
/*
// sort by clusternum (not really needed anymore, but oh well)
if( !r_shadowGroups_sorted ) { // note: this breaks hash pointers

View File

@ -311,7 +311,7 @@ void R_DrawSky( ref_shader_t *shader )
VectorAdd( mins, RI.viewOrigin, mins );
VectorAdd( maxs, RI.viewOrigin, maxs );
if( RI.refdef.rdflags & RDF_SKYPORTALINVIEW )
if( RI.refdef.flags & RDF_SKYPORTALINVIEW )
{
R_DrawSkyPortal( &RI.refdef.skyportal, mins, maxs );
return;

View File

@ -948,7 +948,7 @@ void R_StudioSetUpTransform( ref_entity_t *e, bool trivial_accept )
}
// calculate frontlerp value
if( m_fDoInterp ) f = RI.refdef.lerpfrac;
if( m_fDoInterp ) f = RI.lerpFrac;
else f = 0;
for( i = 0; i < 3; i++ )
@ -1897,11 +1897,11 @@ void R_StudioDrawDebug( void )
if( RP_LOCALCLIENT( RI.currententity ))
{
// ignore localcient in firstperson mode
if( !RI.refdef.thirdperson && !( RI.params & ( RP_MIRRORVIEW|RP_SHADOWMAPVIEW )))
if(!(RI.refdef.flags & RDF_THIRDPERSON) && !( RI.params & ( RP_MIRRORVIEW|RP_SHADOWMAPVIEW )))
continue;
}
if( RP_FOLLOWENTITY( RI.currententity ) && RP_LOCALCLIENT( RI.currententity->parent ) && !RI.refdef.thirdperson )
if( RP_FOLLOWENTITY( RI.currententity ) && RP_LOCALCLIENT( RI.currententity->parent ) && !(RI.refdef.flags & RDF_THIRDPERSON ))
{
// ignore entities that linked to localcient
if(!( RI.params & ( RP_MIRRORVIEW|RP_SHADOWMAPVIEW )))
@ -1945,9 +1945,7 @@ void R_StudioEstimateGait( ref_entity_t *e, edict_t *pplayer )
float dt;
vec3_t est_velocity;
dt = ( RI.refdef.time - RI.refdef.oldtime );
if( dt < 0 ) dt = 0.0f;
else if ( dt > 1.0 ) dt = 1.0f;
dt = bound( 0.0f, RI.refdef.frametime, 1.0f );
if( dt == 0 || e->m_nCachedFrameCount == r_framecount2 )
{
@ -2024,9 +2022,7 @@ void R_StudioProcessGait( ref_entity_t *e, edict_t *pplayer, studiovars_t *pstud
// MsgDev( D_INFO, "%f %d\n", e->angles[PITCH], pstudio->blending[0] );
dt = (RI.refdef.time - RI.refdef.oldtime);
if( dt < 0 ) dt = 0.0f;
else if( dt > 1.0 ) dt = 1.0f;
dt = bound( 0.0f, RI.refdef.frametime, 1.0f );
R_StudioEstimateGait( e, pplayer );
@ -2374,7 +2370,7 @@ bool R_CullStudioModel( ref_entity_t *e )
query = OCCLUSION_QUERIES_ENABLED( RI ) && OCCLUSION_TEST_ENTITY( e ) ? true : false;
if( !frustum && query ) R_IssueOcclusionQuery( R_GetOcclusionQueryNum( OQ_ENTITY, e - r_entities ), e, studio_mins, studio_maxs );
if((RI.refdef.rdflags & RDF_NOWORLDMODEL) || (r_shadows->integer != 1 && !(r_shadows->integer == 2 && (e->flags & EF_PLANARSHADOW))) || R_CullPlanarShadow( e, studio_mins, studio_maxs, query ))
if((RI.refdef.flags & RDF_NOWORLDMODEL) || (r_shadows->integer != 1 && !(r_shadows->integer == 2 && (e->flags & EF_PLANARSHADOW))) || R_CullPlanarShadow( e, studio_mins, studio_maxs, query ))
return frustum; // entity is not in PVS or shadow is culled away by frustum culling
R_StudioSetupRender( e, e->model );

View File

@ -198,7 +198,7 @@ bool R_CullBrushModel( ref_entity_t *e )
return true;
}
if( RI.refdef.rdflags & ( RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW ) || ( RI.params & RP_SKYPORTALVIEW ) )
if( RI.refdef.flags & ( RDF_PORTALINVIEW|RDF_SKYPORTALINVIEW ) || ( RI.params & RP_SKYPORTALVIEW ))
{
if( rotated )
{
@ -562,7 +562,7 @@ void R_DrawWorld( void )
return;
if( !r_worldmodel )
return;
if( RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( RI.refdef.flags & RDF_NOWORLDMODEL )
return;
VectorCopy( RI.refdef.vieworg, modelorg );
@ -571,7 +571,7 @@ void R_DrawWorld( void )
RI.currententity = r_worldent;
RI.currentmodel = RI.currententity->model;
if( (RI.refdef.rdflags & RDF_WORLDOUTLINES) && (r_viewcluster != -1))
if( r_outlines_world->integer && r_viewcluster != -1 )
RI.currententity->outlineHeight = max( 0.0f, r_outlines_world->value );
else RI.currententity->outlineHeight = 0.0f;
Vector4Copy( mapConfig.outlineColor, RI.currententity->outlineColor );
@ -622,9 +622,9 @@ void R_MarkLeaves( void )
mnode_t *node;
int cluster;
if( RI.refdef.rdflags & RDF_NOWORLDMODEL )
if( RI.refdef.flags & RDF_NOWORLDMODEL )
return;
if( r_oldviewcluster == r_viewcluster && ( RI.refdef.rdflags & RDF_OLDAREABITS ) && !r_novis->integer && r_viewcluster != -1 )
if( r_oldviewcluster == r_viewcluster && ( RI.refdef.flags & RDF_OLDAREABITS ) && !r_novis->integer && r_viewcluster != -1 )
return;
if( RI.params & RP_SHADOWMAPVIEW )
return;

16
render/render.plg Normal file
View File

@ -0,0 +1,16 @@
<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>

View File

@ -123,6 +123,7 @@ 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_VIEW (*g_engfuncs.pfnSetView)
#define SET_CROSSHAIRANGLE (*g_engfuncs.pfnCrosshairAngle)
#define SET_SKYBOX (*g_engfuncs.pfnSetSkybox)
#define LOAD_FILE (*g_engfuncs.pfnLoadFile)

223
server/server.plg Normal file
View File

@ -0,0 +1,223 @@
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: server - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8A9F.tmp" with contents
[
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "ents" /I "game" /I "global" /I "monsters" /I "../common" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\server\!debug/" /Fo"..\temp\server\!debug/" /Fd"..\temp\server\!debug/" /FD /c
"D:\Xash3D\src_main\server\monsters\ai_sound.cpp"
"D:\Xash3D\src_main\server\monsters\animating.cpp"
"D:\Xash3D\src_main\server\monsters\animation.cpp"
"D:\Xash3D\src_main\server\monsters\apache.cpp"
"D:\Xash3D\src_main\server\monsters\barnacle.cpp"
"D:\Xash3D\src_main\server\monsters\barney.cpp"
"D:\Xash3D\src_main\server\ents\basebrush.cpp"
"D:\Xash3D\src_main\server\ents\baseentity.cpp"
"D:\Xash3D\src_main\server\ents\basefunc.cpp"
"D:\Xash3D\src_main\server\ents\basefx.cpp"
"D:\Xash3D\src_main\server\ents\baseinfo.cpp"
"D:\Xash3D\src_main\server\ents\baseitem.cpp"
"D:\Xash3D\src_main\server\ents\baselogic.cpp"
"D:\Xash3D\src_main\server\monsters\basemonster.cpp"
"D:\Xash3D\src_main\server\ents\basemover.cpp"
"D:\Xash3D\src_main\server\ents\baseother.cpp"
"D:\Xash3D\src_main\server\ents\basepath.cpp"
"D:\Xash3D\src_main\server\ents\basephys.cpp"
"D:\Xash3D\src_main\server\ents\baserockets.cpp"
"D:\Xash3D\src_main\server\ents\basetank.cpp"
"D:\Xash3D\src_main\server\ents\basetrigger.cpp"
"D:\Xash3D\src_main\server\ents\baseutil.cpp"
"D:\Xash3D\src_main\server\ents\baseweapon.cpp"
"D:\Xash3D\src_main\server\ents\baseworld.cpp"
"D:\Xash3D\src_main\server\global\client.cpp"
"D:\Xash3D\src_main\server\monsters\combat.cpp"
"D:\Xash3D\src_main\server\monsters\defaultai.cpp"
"D:\Xash3D\src_main\server\global\dll_int.cpp"
"D:\Xash3D\src_main\server\monsters\flyingmonster.cpp"
"D:\Xash3D\src_main\server\game\game.cpp"
"D:\Xash3D\src_main\server\game\gamerules.cpp"
"D:\Xash3D\src_main\server\monsters\generic.cpp"
"D:\Xash3D\src_main\server\global\globals.cpp"
"D:\Xash3D\src_main\server\monsters\gman.cpp"
"D:\Xash3D\src_main\server\monsters\hassassin.cpp"
"D:\Xash3D\src_main\server\monsters\headcrab.cpp"
"D:\Xash3D\src_main\server\monsters\hgrunt.cpp"
"D:\Xash3D\src_main\server\monsters\leech.cpp"
"D:\Xash3D\src_main\server\game\lights.cpp"
"D:\Xash3D\src_main\server\game\multiplay_gamerules.cpp"
"D:\Xash3D\src_main\server\monsters\nodes.cpp"
"D:\Xash3D\src_main\server\monsters\osprey.cpp"
"D:\Xash3D\src_main\server\global\parent.cpp"
"D:\Xash3D\src_main\server\monsters\player.cpp"
"D:\Xash3D\src_main\server\monsters\rat.cpp"
"D:\Xash3D\src_main\server\monsters\roach.cpp"
"D:\Xash3D\src_main\server\global\saverestore.cpp"
"D:\Xash3D\src_main\server\monsters\scientist.cpp"
"D:\Xash3D\src_main\server\monsters\scripted.cpp"
"D:\Xash3D\src_main\server\global\sfx.cpp"
"D:\Xash3D\src_main\server\game\singleplay_gamerules.cpp"
"D:\Xash3D\src_main\server\game\sound.cpp"
"D:\Xash3D\src_main\server\monsters\squadmonster.cpp"
"D:\Xash3D\src_main\server\monsters\talkmonster.cpp"
"D:\Xash3D\src_main\server\game\teamplay_gamerules.cpp"
"D:\Xash3D\src_main\server\monsters\turret.cpp"
"D:\Xash3D\src_main\server\global\utils.cpp"
"D:\Xash3D\src_main\server\weapon_generic.cpp"
"D:\Xash3D\src_main\server\monsters\zombie.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8A9F.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AA0.tmp" with contents
[
msvcrtd.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\server\!debug/server.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /def:".\server.def" /out:"..\temp\server\!debug/server.dll" /implib:"..\temp\server\!debug/server.lib" /pdbtype:sept
"\Xash3D\src_main\temp\server\!debug\ai_sound.obj"
"\Xash3D\src_main\temp\server\!debug\animating.obj"
"\Xash3D\src_main\temp\server\!debug\animation.obj"
"\Xash3D\src_main\temp\server\!debug\apache.obj"
"\Xash3D\src_main\temp\server\!debug\barnacle.obj"
"\Xash3D\src_main\temp\server\!debug\barney.obj"
"\Xash3D\src_main\temp\server\!debug\basebrush.obj"
"\Xash3D\src_main\temp\server\!debug\baseentity.obj"
"\Xash3D\src_main\temp\server\!debug\basefunc.obj"
"\Xash3D\src_main\temp\server\!debug\basefx.obj"
"\Xash3D\src_main\temp\server\!debug\baseinfo.obj"
"\Xash3D\src_main\temp\server\!debug\baseitem.obj"
"\Xash3D\src_main\temp\server\!debug\baselogic.obj"
"\Xash3D\src_main\temp\server\!debug\basemonster.obj"
"\Xash3D\src_main\temp\server\!debug\basemover.obj"
"\Xash3D\src_main\temp\server\!debug\baseother.obj"
"\Xash3D\src_main\temp\server\!debug\basepath.obj"
"\Xash3D\src_main\temp\server\!debug\basephys.obj"
"\Xash3D\src_main\temp\server\!debug\baserockets.obj"
"\Xash3D\src_main\temp\server\!debug\basetank.obj"
"\Xash3D\src_main\temp\server\!debug\basetrigger.obj"
"\Xash3D\src_main\temp\server\!debug\baseutil.obj"
"\Xash3D\src_main\temp\server\!debug\baseweapon.obj"
"\Xash3D\src_main\temp\server\!debug\baseworld.obj"
"\Xash3D\src_main\temp\server\!debug\client.obj"
"\Xash3D\src_main\temp\server\!debug\combat.obj"
"\Xash3D\src_main\temp\server\!debug\decals.obj"
"\Xash3D\src_main\temp\server\!debug\defaultai.obj"
"\Xash3D\src_main\temp\server\!debug\dll_int.obj"
"\Xash3D\src_main\temp\server\!debug\flyingmonster.obj"
"\Xash3D\src_main\temp\server\!debug\game.obj"
"\Xash3D\src_main\temp\server\!debug\gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\generic.obj"
"\Xash3D\src_main\temp\server\!debug\globals.obj"
"\Xash3D\src_main\temp\server\!debug\gman.obj"
"\Xash3D\src_main\temp\server\!debug\hassassin.obj"
"\Xash3D\src_main\temp\server\!debug\headcrab.obj"
"\Xash3D\src_main\temp\server\!debug\hgrunt.obj"
"\Xash3D\src_main\temp\server\!debug\leech.obj"
"\Xash3D\src_main\temp\server\!debug\legacy.obj"
"\Xash3D\src_main\temp\server\!debug\lights.obj"
"\Xash3D\src_main\temp\server\!debug\multiplay_gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\nodes.obj"
"\Xash3D\src_main\temp\server\!debug\osprey.obj"
"\Xash3D\src_main\temp\server\!debug\parent.obj"
"\Xash3D\src_main\temp\server\!debug\player.obj"
"\Xash3D\src_main\temp\server\!debug\rat.obj"
"\Xash3D\src_main\temp\server\!debug\roach.obj"
"\Xash3D\src_main\temp\server\!debug\saverestore.obj"
"\Xash3D\src_main\temp\server\!debug\scientist.obj"
"\Xash3D\src_main\temp\server\!debug\scripted.obj"
"\Xash3D\src_main\temp\server\!debug\sfx.obj"
"\Xash3D\src_main\temp\server\!debug\singleplay_gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\sound.obj"
"\Xash3D\src_main\temp\server\!debug\squadmonster.obj"
"\Xash3D\src_main\temp\server\!debug\talkmonster.obj"
"\Xash3D\src_main\temp\server\!debug\teamplay_gamerules.obj"
"\Xash3D\src_main\temp\server\!debug\turret.obj"
"\Xash3D\src_main\temp\server\!debug\utils.obj"
"\Xash3D\src_main\temp\server\!debug\weapon_generic.obj"
"\Xash3D\src_main\temp\server\!debug\zombie.obj"
]
Creating command line "link.exe @C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AA0.tmp"
Creating temporary file "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AA1.bat" with contents
[
@echo off
copy \Xash3D\src_main\temp\server\!debug\server.dll "D:\Xash3D\bin\server.dll"
]
Creating command line "C:\DOCUME~1\MIKE~1.MIK\LOCALS~1\Temp\RSP8AA1.bat"
Compiling...
ai_sound.cpp
Generating Code...
Compiling...
animating.cpp
animation.cpp
apache.cpp
barnacle.cpp
barney.cpp
basebrush.cpp
baseentity.cpp
basefunc.cpp
basefx.cpp
baseinfo.cpp
baseitem.cpp
baselogic.cpp
basemonster.cpp
basemover.cpp
baseother.cpp
basepath.cpp
basephys.cpp
baserockets.cpp
basetank.cpp
basetrigger.cpp
Generating Code...
Compiling...
baseutil.cpp
baseweapon.cpp
baseworld.cpp
client.cpp
combat.cpp
defaultai.cpp
dll_int.cpp
flyingmonster.cpp
game.cpp
gamerules.cpp
generic.cpp
globals.cpp
gman.cpp
hassassin.cpp
headcrab.cpp
hgrunt.cpp
leech.cpp
lights.cpp
multiplay_gamerules.cpp
nodes.cpp
Generating Code...
Compiling...
osprey.cpp
parent.cpp
player.cpp
rat.cpp
roach.cpp
saverestore.cpp
scientist.cpp
scripted.cpp
sfx.cpp
singleplay_gamerules.cpp
sound.cpp
squadmonster.cpp
talkmonster.cpp
teamplay_gamerules.cpp
turret.cpp
utils.cpp
weapon_generic.cpp
zombie.cpp
Generating Code...
Linking...
<h3>Output Window</h3>
Performing Custom Build Step on \Xash3D\src_main\temp\server\!debug\server.dll
‘ª®¯¨à®¢ ­® ä ©«®¢: 1.
<h3>Results</h3>
server.dll - 0 error(s), 0 warning(s)
</pre>
</body>
</html>

View File

@ -78,7 +78,7 @@ Beta 13.12.09
47. fixup slowly rendering OK
48. implement uimenu into engine.dll OK
49. implement new timers OK
50. fixup network packets rate
50. fixup network packets rate OK
51. fixup stair climbing OK
52. implement new user move system OK
53. finish RenderMode for shaders OK
@ -138,5 +138,6 @@ Beta 13.12.09
114. fixup shadowmaps OK
115. fixup CullStudioModel OK
116. create flashlight for player OK
117. re-organize refdef flags
118. revise ref_params_t
117. re-organize refdef flags OK
118. revise ref_params_t OK
119. fixup client smooth stair climbing

16
vprogs/vprogs.plg Normal file
View File

@ -0,0 +1,16 @@
<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>

16
vsound/vsound.plg Normal file
View File

@ -0,0 +1,16 @@
<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>

16
xtools/xtools.plg Normal file
View File

@ -0,0 +1,16 @@
<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>