20 Aug 2010
This commit is contained in:
parent
777ee15670
commit
522c5f872e
|
@ -1,149 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: client - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP566.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../common" /I "global" /I "hud" /I "../game_shared" /I "../dlls" /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\aurora.cpp"
|
||||
"D:\Xash3D\src_main\client\global\cl_tent.cpp"
|
||||
"D:\Xash3D\src_main\client\global\dll_int.cpp"
|
||||
"D:\Xash3D\src_main\client\global\ev_common.cpp"
|
||||
"D:\Xash3D\src_main\client\global\ev_hldm.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_ammo.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_ammohistory.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_battery.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_death.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_flashlight.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_geiger.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_health.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_icons.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_menu.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_message.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_motd.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_msg.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_saytext.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_scoreboard.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_statusbar.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_text.cpp"
|
||||
"D:\Xash3D\src_main\client\hud\hud_train.cpp"
|
||||
"D:\Xash3D\src_main\client\global\input.cpp"
|
||||
"D:\Xash3D\src_main\game_shared\pm_debug.cpp"
|
||||
"D:\Xash3D\src_main\game_shared\pm_math.cpp"
|
||||
"D:\Xash3D\src_main\game_shared\pm_shared.cpp"
|
||||
"D:\Xash3D\src_main\client\global\r_beams.cpp"
|
||||
"D:\Xash3D\src_main\client\global\r_particle.cpp"
|
||||
"D:\Xash3D\src_main\client\global\r_tempents.cpp"
|
||||
"D:\Xash3D\src_main\client\global\r_tracer.cpp"
|
||||
"D:\Xash3D\src_main\client\global\r_weather.cpp"
|
||||
"D:\Xash3D\src_main\client\global\studio.cpp"
|
||||
"D:\Xash3D\src_main\client\global\triapi.cpp"
|
||||
"D:\Xash3D\src_main\client\global\utils.cpp"
|
||||
"D:\Xash3D\src_main\client\global\view.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP566.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP567.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\aurora.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\cl_tent.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\dll_int.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\ev_common.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\ev_hldm.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_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\input.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\pm_debug.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\pm_math.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\pm_shared.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\r_beams.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\r_particle.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\r_tempents.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\r_tracer.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\r_weather.obj"
|
||||
"\Xash3D\src_main\temp\client\!debug\studio.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\ÌÈØÀ\LOCALS~1\Temp\RSP567.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP568.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\client\!debug\client.dll "D:\Xash3D\valve\bin\client.dll"
|
||||
]
|
||||
Creating command line ""C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP568.bat""
|
||||
Compiling...
|
||||
pm_debug.cpp
|
||||
pm_shared.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
aurora.cpp
|
||||
ev_common.cpp
|
||||
ev_hldm.cpp
|
||||
input.cpp
|
||||
r_tempents.cpp
|
||||
r_weather.cpp
|
||||
view.cpp
|
||||
Generating Code...
|
||||
Skipping... (no relevant changes detected)
|
||||
cl_tent.cpp
|
||||
dll_int.cpp
|
||||
hud.cpp
|
||||
hud_ammo.cpp
|
||||
hud_ammohistory.cpp
|
||||
hud_battery.cpp
|
||||
hud_death.cpp
|
||||
hud_flashlight.cpp
|
||||
hud_geiger.cpp
|
||||
hud_health.cpp
|
||||
hud_icons.cpp
|
||||
hud_menu.cpp
|
||||
hud_message.cpp
|
||||
hud_motd.cpp
|
||||
hud_msg.cpp
|
||||
hud_saytext.cpp
|
||||
hud_scoreboard.cpp
|
||||
hud_statusbar.cpp
|
||||
hud_text.cpp
|
||||
hud_train.cpp
|
||||
pm_math.cpp
|
||||
r_beams.cpp
|
||||
r_particle.cpp
|
||||
r_tracer.cpp
|
||||
studio.cpp
|
||||
triapi.cpp
|
||||
utils.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>
|
|
@ -148,7 +148,7 @@ void ParticleSystemManager::UpdateSystems( void )
|
|||
}
|
||||
}
|
||||
}
|
||||
g_engfuncs.pTriAPI->RenderMode(kRenderNormal);
|
||||
gEngfuncs.pTriAPI->RenderMode(kRenderNormal);
|
||||
}
|
||||
|
||||
void ParticleSystemManager::ClearSystems( void )
|
||||
|
@ -494,7 +494,7 @@ ParticleType *ParticleSystem::ParseType( const char **szFile )
|
|||
else if ( !stricmp( szToken, "sprite" ) )
|
||||
{
|
||||
szToken = COM_ParseToken( szFile );
|
||||
pType->m_SpriteIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( szToken );
|
||||
pType->m_SpriteIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( szToken );
|
||||
}
|
||||
else if ( !stricmp( szToken, "startalpha" ) )
|
||||
{
|
||||
|
@ -874,7 +874,7 @@ bool ParticleSystem::UpdateParticle( particle *part, float frametime )
|
|||
if( part->pType->m_bBouncing )
|
||||
{
|
||||
Vector vecTarget = part->origin + frametime * part->velocity;
|
||||
pmtrace_t *tr = g_engfuncs.PM_TraceLine( part->origin, vecTarget, PM_TRACELINE_PHYSENTSONLY, 2, -1 );
|
||||
pmtrace_t *tr = gEngfuncs.PM_TraceLine( part->origin, vecTarget, PM_TRACELINE_PHYSENTSONLY, 2, -1 );
|
||||
|
||||
if( tr->fraction < 1.0f )
|
||||
{
|
||||
|
@ -961,7 +961,7 @@ void ParticleSystem::DrawParticle( particle *part, Vector &right, Vector &up )
|
|||
|
||||
int iContents = 0;
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
|
||||
for ( particle *pDraw = part; pDraw; pDraw = pDraw->m_pOverlay )
|
||||
{
|
||||
|
@ -990,25 +990,25 @@ void ParticleSystem::DrawParticle( particle *part, Vector &right, Vector &up )
|
|||
|
||||
HSPRITE m_hSprite;
|
||||
|
||||
m_hSprite = g_engfuncs.pTriAPI->GetSpriteTexture( pDraw->pType->m_SpriteIndex, int( pDraw->frame ));
|
||||
g_engfuncs.pTriAPI->RenderMode( pDraw->pType->m_iRenderMode );
|
||||
g_engfuncs.pTriAPI->Color4f( pDraw->m_fRed, pDraw->m_fGreen, pDraw->m_fBlue, pDraw->m_fAlpha );
|
||||
m_hSprite = gEngfuncs.pTriAPI->GetSpriteTexture( pDraw->pType->m_SpriteIndex, int( pDraw->frame ));
|
||||
gEngfuncs.pTriAPI->RenderMode( pDraw->pType->m_iRenderMode );
|
||||
gEngfuncs.pTriAPI->Color4f( pDraw->m_fRed, pDraw->m_fGreen, pDraw->m_fBlue, pDraw->m_fAlpha );
|
||||
|
||||
g_engfuncs.pTriAPI->Bind( m_hSprite, int( pDraw->frame ));
|
||||
gEngfuncs.pTriAPI->Bind( m_hSprite, int( pDraw->frame ));
|
||||
|
||||
g_engfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 0, 0 );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( point1 );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 0, 0 );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( point1 );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 1, 0 );
|
||||
g_engfuncs.pTriAPI->Vertex3fv ( point2 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 1, 0 );
|
||||
gEngfuncs.pTriAPI->Vertex3fv ( point2 );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 1, 1 );
|
||||
g_engfuncs.pTriAPI->Vertex3fv ( point3 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 1, 1 );
|
||||
gEngfuncs.pTriAPI->Vertex3fv ( point3 );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 0, 1 );
|
||||
g_engfuncs.pTriAPI->Vertex3fv ( point4 );
|
||||
g_engfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 0, 1 );
|
||||
gEngfuncs.pTriAPI->Vertex3fv ( point4 );
|
||||
gEngfuncs.pTriAPI->End();
|
||||
}
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
|
@ -157,7 +157,7 @@ void TE_ParseExplosion( void )
|
|||
dlight_t *dl;
|
||||
|
||||
// big flash
|
||||
dl = g_engfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl = gEngfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl->origin = pos2;
|
||||
dl->radius = 200;
|
||||
dl->color[0] = dl->color[1] = 250;
|
||||
|
@ -166,7 +166,7 @@ void TE_ParseExplosion( void )
|
|||
dl->decay = 800;
|
||||
|
||||
// red glow
|
||||
dl = g_engfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl = gEngfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl->origin = pos2;
|
||||
dl->radius = 150;
|
||||
dl->color[0] = 255;
|
||||
|
@ -330,7 +330,7 @@ void TE_ParseSparks( void )
|
|||
pos.y = READ_COORD();
|
||||
pos.z = READ_COORD();
|
||||
|
||||
g_pTempEnts->DoSparks( pos );
|
||||
g_pTempEnts->SparkShower( pos );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -391,7 +391,7 @@ void TE_ParseExplosion2( void )
|
|||
|
||||
g_pParticles->ParticleExplosion2( pos, colorIndex, numColors );
|
||||
|
||||
dl = g_engfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl = gEngfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl->origin = pos;
|
||||
dl->radius = 350;
|
||||
dl->die = gpGlobals->time + 0.5f;
|
||||
|
@ -678,11 +678,11 @@ void TE_ParseDynamicLight( int type )
|
|||
|
||||
if( type == TE_ELIGHT )
|
||||
{
|
||||
dl = g_engfuncs.pEfxAPI->CL_AllocELight( 0 );
|
||||
dl = gEngfuncs.pEfxAPI->CL_AllocELight( 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dl = g_engfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl = gEngfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
}
|
||||
|
||||
dl->origin = pos;
|
||||
|
@ -993,7 +993,7 @@ void TE_ParseArmorRicochet( void )
|
|||
pos.z = READ_COORD();
|
||||
radius = (float)(READ_BYTE() * 0.1f);
|
||||
|
||||
int modelIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/richo1.spr" );
|
||||
int modelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/richo1.spr" );
|
||||
g_pTempEnts->RicochetSprite( pos, modelIndex, radius );
|
||||
|
||||
sprintf( soundpath, "weapons/ric%i.wav", RANDOM_LONG( 1, 5 ));
|
||||
|
@ -1026,8 +1026,8 @@ void TE_ParsePlayerDecal( void )
|
|||
color[2] = 255;
|
||||
color[3] = 255; // alpha
|
||||
|
||||
HSPRITE hDecal = g_engfuncs.pEfxAPI->CL_DecalIndex( decalIndex );
|
||||
g_engfuncs.pEfxAPI->R_PlayerDecal( hDecal, entityIndex, pos, 0 );
|
||||
HSPRITE hDecal = gEngfuncs.pEfxAPI->CL_DecalIndex( decalIndex );
|
||||
gEngfuncs.pEfxAPI->R_PlayerDecal( hDecal, entityIndex, pos, 0 );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include "pm_movevars.h"
|
||||
#include "entity_types.h"
|
||||
|
||||
cl_enginefuncs_t g_engfuncs;
|
||||
cl_enginefuncs_t gEngfuncs;
|
||||
cl_globalvars_t *gpGlobals;
|
||||
movevars_t *gpMovevars = NULL;
|
||||
ref_params_t *gpViewParams = NULL;
|
||||
|
@ -82,7 +82,7 @@ int CreateAPI( HUD_FUNCTIONS *pFunctionTable, cl_enginefuncs_t* pEngfuncsFromEng
|
|||
|
||||
// copy HUD_FUNCTIONS table to engine, copy engfuncs table from engine
|
||||
memcpy( pFunctionTable, &gFunctionTable, sizeof( HUD_FUNCTIONS ));
|
||||
memcpy( &g_engfuncs, pEngfuncsFromEngine, sizeof( cl_enginefuncs_t ));
|
||||
memcpy( &gEngfuncs, pEngfuncsFromEngine, sizeof( cl_enginefuncs_t ));
|
||||
|
||||
gpGlobals = pGlobals;
|
||||
gpViewParams = gpGlobals->pViewParms;
|
||||
|
@ -145,16 +145,16 @@ void HUD_ShutdownEffects( void )
|
|||
|
||||
void HUD_Init( void )
|
||||
{
|
||||
g_engfuncs.pfnAddCommand ("noclip", NULL, "enable or disable no clipping mode" );
|
||||
g_engfuncs.pfnAddCommand ("notarget", NULL, "notarget mode (monsters do not see you)" );
|
||||
g_engfuncs.pfnAddCommand ("fullupdate", NULL, "re-init HUD on start demo recording" );
|
||||
g_engfuncs.pfnAddCommand ("give", NULL, "give specified item or weapon" );
|
||||
g_engfuncs.pfnAddCommand ("drop", NULL, "drop current/specified item or weapon" );
|
||||
g_engfuncs.pfnAddCommand ("intermission", NULL, "go to intermission" );
|
||||
g_engfuncs.pfnAddCommand ("spectate", NULL, "enable spectator mode" );
|
||||
g_engfuncs.pfnAddCommand ("gametitle", NULL, "show game logo" );
|
||||
g_engfuncs.pfnAddCommand ("god", NULL, "classic cheat" );
|
||||
g_engfuncs.pfnAddCommand ("fov", NULL, "set client field of view" );
|
||||
gEngfuncs.pfnAddCommand ("noclip", NULL, "enable or disable no clipping mode" );
|
||||
gEngfuncs.pfnAddCommand ("notarget", NULL, "notarget mode (monsters do not see you)" );
|
||||
gEngfuncs.pfnAddCommand ("fullupdate", NULL, "re-init HUD on start demo recording" );
|
||||
gEngfuncs.pfnAddCommand ("give", NULL, "give specified item or weapon" );
|
||||
gEngfuncs.pfnAddCommand ("drop", NULL, "drop current/specified item or weapon" );
|
||||
gEngfuncs.pfnAddCommand ("intermission", NULL, "go to intermission" );
|
||||
gEngfuncs.pfnAddCommand ("spectate", NULL, "enable spectator mode" );
|
||||
gEngfuncs.pfnAddCommand ("gametitle", NULL, "show game logo" );
|
||||
gEngfuncs.pfnAddCommand ("god", NULL, "classic cheat" );
|
||||
gEngfuncs.pfnAddCommand ("fov", NULL, "set client field of view" );
|
||||
|
||||
HUD_ShutdownEffects ();
|
||||
|
||||
|
@ -467,14 +467,14 @@ void HUD_Shutdown( void )
|
|||
IN_Shutdown ();
|
||||
|
||||
// perform shutdown operations
|
||||
g_engfuncs.pfnDelCommand ("noclip" );
|
||||
g_engfuncs.pfnDelCommand ("notarget" );
|
||||
g_engfuncs.pfnDelCommand ("fullupdate" );
|
||||
g_engfuncs.pfnDelCommand ("give" );
|
||||
g_engfuncs.pfnDelCommand ("drop" );
|
||||
g_engfuncs.pfnDelCommand ("intermission" );
|
||||
g_engfuncs.pfnDelCommand ("spectate" );
|
||||
g_engfuncs.pfnDelCommand ("gametitle" );
|
||||
g_engfuncs.pfnDelCommand ("god" );
|
||||
g_engfuncs.pfnDelCommand ("fov" );
|
||||
gEngfuncs.pfnDelCommand ("noclip" );
|
||||
gEngfuncs.pfnDelCommand ("notarget" );
|
||||
gEngfuncs.pfnDelCommand ("fullupdate" );
|
||||
gEngfuncs.pfnDelCommand ("give" );
|
||||
gEngfuncs.pfnDelCommand ("drop" );
|
||||
gEngfuncs.pfnDelCommand ("intermission" );
|
||||
gEngfuncs.pfnDelCommand ("spectate" );
|
||||
gEngfuncs.pfnDelCommand ("gametitle" );
|
||||
gEngfuncs.pfnDelCommand ("god" );
|
||||
gEngfuncs.pfnDelCommand ("fov" );
|
||||
}
|
||||
|
|
|
@ -7,148 +7,148 @@
|
|||
#define ENGINECALLBACKS_H
|
||||
|
||||
// built-in memory manager
|
||||
#define MALLOC( x ) (*g_engfuncs.pfnMemAlloc)( x, __FILE__, __LINE__ )
|
||||
#define CALLOC( x, y ) (*g_engfuncs.pfnMemAlloc)((x) * (y), __FILE__, __LINE__ )
|
||||
#define FREE( x ) (*g_engfuncs.pfnMemFree)( x, __FILE__, __LINE__ )
|
||||
#define MALLOC( x ) (*gEngfuncs.pfnMemAlloc)( x, __FILE__, __LINE__ )
|
||||
#define CALLOC( x, y ) (*gEngfuncs.pfnMemAlloc)((x) * (y), __FILE__, __LINE__ )
|
||||
#define FREE( x ) (*gEngfuncs.pfnMemFree)( x, __FILE__, __LINE__ )
|
||||
|
||||
// screen handlers
|
||||
#define SPR_GetList (*g_engfuncs.pfnSPR_GetList)
|
||||
#define SPR_Frames (*g_engfuncs.pfnSPR_Frames)
|
||||
#define SPR_Width (*g_engfuncs.pfnSPR_Width)
|
||||
#define SPR_Height (*g_engfuncs.pfnSPR_Height)
|
||||
#define SPR_EnableScissor (*g_engfuncs.pfnSPR_EnableScissor)
|
||||
#define SPR_DisableScissor (*g_engfuncs.pfnSPR_DisableScissor)
|
||||
#define FillRGBA (*g_engfuncs.pfnFillRGBA)
|
||||
#define GetScreenInfo (*g_engfuncs.pfnGetScreenInfo)
|
||||
#define SPR_GetList (*gEngfuncs.pfnSPR_GetList)
|
||||
#define SPR_Frames (*gEngfuncs.pfnSPR_Frames)
|
||||
#define SPR_Width (*gEngfuncs.pfnSPR_Width)
|
||||
#define SPR_Height (*gEngfuncs.pfnSPR_Height)
|
||||
#define SPR_EnableScissor (*gEngfuncs.pfnSPR_EnableScissor)
|
||||
#define SPR_DisableScissor (*gEngfuncs.pfnSPR_DisableScissor)
|
||||
#define FillRGBA (*gEngfuncs.pfnFillRGBA)
|
||||
#define GetScreenInfo (*gEngfuncs.pfnGetScreenInfo)
|
||||
|
||||
#define SPR_Load (*g_engfuncs.pfnSPR_Load)
|
||||
#define TEX_Load( x ) (*g_engfuncs.pTriAPI->LoadShader)( x, false )
|
||||
#define TEX_LoadNoMip( x ) (*g_engfuncs.pTriAPI->LoadShader)( x, true )
|
||||
#define SetCrosshair (*g_engfuncs.pfnSetCrosshair)
|
||||
#define SPR_Load (*gEngfuncs.pfnSPR_Load)
|
||||
#define TEX_Load( x ) (*gEngfuncs.pTriAPI->LoadShader)( x, false )
|
||||
#define TEX_LoadNoMip( x ) (*gEngfuncs.pTriAPI->LoadShader)( x, true )
|
||||
#define SetCrosshair (*gEngfuncs.pfnSetCrosshair)
|
||||
|
||||
#define SendWeaponAnim (*g_engfuncs.pEventAPI->EV_WeaponAnimation)
|
||||
#define GetModelType (*g_engfuncs.pfnGetModelType)
|
||||
#define GetModelFrames (*g_engfuncs.pfnGetModFrames)
|
||||
#define GetModelBounds (*g_engfuncs.pfnGetModBounds)
|
||||
#define CVAR_REGISTER (*g_engfuncs.pfnRegisterVariable)
|
||||
#define CVAR_SET_FLOAT (*g_engfuncs.pfnCvarSetValue)
|
||||
#define CVAR_GET_FLOAT (*g_engfuncs.pfnGetCvarFloat)
|
||||
#define CVAR_GET_STRING (*g_engfuncs.pfnGetCvarString)
|
||||
#define SERVER_COMMAND (*g_engfuncs.pfnServerCmd)
|
||||
#define CLIENT_COMMAND (*g_engfuncs.pfnClientCmd)
|
||||
#define GetPlayerInfo (*g_engfuncs.pfnGetPlayerInfo)
|
||||
#define TextMessageGet (*g_engfuncs.pfnTextMessageGet)
|
||||
#define Cmd_AddCommand (*g_engfuncs.pfnAddCommand)
|
||||
#define Cmd_RemoveCommand (*g_engfuncs.pfnDelCommand)
|
||||
#define CMD_ARGC (*g_engfuncs.pfnCmdArgc)
|
||||
#define CMD_ARGV (*g_engfuncs.pfnCmdArgv)
|
||||
#define Con_Printf (*g_engfuncs.Con_Printf)
|
||||
#define Con_DPrintf (*g_engfuncs.Con_DPrintf)
|
||||
#define IN_GAME (*g_engfuncs.pfnIsInGame)
|
||||
#define SendWeaponAnim (*gEngfuncs.pEventAPI->EV_WeaponAnimation)
|
||||
#define GetModelType (*gEngfuncs.pfnGetModelType)
|
||||
#define GetModelFrames (*gEngfuncs.pfnGetModFrames)
|
||||
#define GetModelBounds (*gEngfuncs.pfnGetModBounds)
|
||||
#define CVAR_REGISTER (*gEngfuncs.pfnRegisterVariable)
|
||||
#define CVAR_SET_FLOAT (*gEngfuncs.pfnCvarSetValue)
|
||||
#define CVAR_GET_FLOAT (*gEngfuncs.pfnGetCvarFloat)
|
||||
#define CVAR_GET_STRING (*gEngfuncs.pfnGetCvarString)
|
||||
#define SERVER_COMMAND (*gEngfuncs.pfnServerCmd)
|
||||
#define CLIENT_COMMAND (*gEngfuncs.pfnClientCmd)
|
||||
#define GetPlayerInfo (*gEngfuncs.pfnGetPlayerInfo)
|
||||
#define TextMessageGet (*gEngfuncs.pfnTextMessageGet)
|
||||
#define Cmd_AddCommand (*gEngfuncs.pfnAddCommand)
|
||||
#define Cmd_RemoveCommand (*gEngfuncs.pfnDelCommand)
|
||||
#define CMD_ARGC (*gEngfuncs.pfnCmdArgc)
|
||||
#define CMD_ARGV (*gEngfuncs.pfnCmdArgv)
|
||||
#define Con_Printf (*gEngfuncs.Con_Printf)
|
||||
#define Con_DPrintf (*gEngfuncs.Con_DPrintf)
|
||||
#define IN_GAME (*gEngfuncs.pfnIsInGame)
|
||||
|
||||
inline void SPR_Set( HSPRITE hPic, int r, int g, int b )
|
||||
{
|
||||
g_engfuncs.pfnSPR_Set( hPic, r, g, b, 255 );
|
||||
gEngfuncs.pfnSPR_Set( hPic, r, g, b, 255 );
|
||||
}
|
||||
|
||||
inline void SPR_Set( HSPRITE hPic, int r, int g, int b, int a )
|
||||
{
|
||||
g_engfuncs.pfnSPR_Set( hPic, r, g, b, a );
|
||||
gEngfuncs.pfnSPR_Set( hPic, r, g, b, a );
|
||||
}
|
||||
|
||||
inline void SPR_Draw( int frame, int x, int y, const wrect_t *prc )
|
||||
{
|
||||
g_engfuncs.pfnSPR_Draw( frame, x, y, -1, -1, prc );
|
||||
gEngfuncs.pfnSPR_Draw( frame, x, y, -1, -1, prc );
|
||||
}
|
||||
|
||||
inline void SPR_Draw( int frame, int x, int y, int width, int height )
|
||||
{
|
||||
g_engfuncs.pfnSPR_Draw( frame, x, y, width, height, NULL );
|
||||
gEngfuncs.pfnSPR_Draw( frame, x, y, width, height, NULL );
|
||||
}
|
||||
|
||||
inline void SPR_DrawTransColor( int frame, int x, int y, const wrect_t *prc )
|
||||
{
|
||||
g_engfuncs.pfnSPR_DrawTrans( frame, x, y, -1, -1, prc );
|
||||
gEngfuncs.pfnSPR_DrawTrans( frame, x, y, -1, -1, prc );
|
||||
}
|
||||
|
||||
inline void SPR_DrawTransColor( int frame, int x, int y, int width, int height )
|
||||
{
|
||||
g_engfuncs.pfnSPR_DrawTrans( frame, x, y, width, height, NULL );
|
||||
gEngfuncs.pfnSPR_DrawTrans( frame, x, y, width, height, NULL );
|
||||
}
|
||||
|
||||
inline void SPR_DrawHoles( int frame, int x, int y, const wrect_t *prc )
|
||||
{
|
||||
g_engfuncs.pfnSPR_DrawHoles( frame, x, y, -1, -1, prc );
|
||||
gEngfuncs.pfnSPR_DrawHoles( frame, x, y, -1, -1, prc );
|
||||
}
|
||||
|
||||
inline void SPR_DrawHoles( int frame, int x, int y, int width, int height )
|
||||
{
|
||||
g_engfuncs.pfnSPR_DrawHoles( frame, x, y, width, height, NULL );
|
||||
gEngfuncs.pfnSPR_DrawHoles( frame, x, y, width, height, NULL );
|
||||
}
|
||||
|
||||
inline void SPR_DrawAdditive( int frame, int x, int y, const wrect_t *prc )
|
||||
{
|
||||
g_engfuncs.pfnSPR_DrawAdditive( frame, x, y, -1, -1, prc );
|
||||
gEngfuncs.pfnSPR_DrawAdditive( frame, x, y, -1, -1, prc );
|
||||
}
|
||||
|
||||
inline void SPR_DrawAdditive( int frame, int x, int y, int width, int height )
|
||||
{
|
||||
g_engfuncs.pfnSPR_DrawAdditive( frame, x, y, width, height, NULL );
|
||||
gEngfuncs.pfnSPR_DrawAdditive( frame, x, y, width, height, NULL );
|
||||
}
|
||||
|
||||
inline void CL_PlaySound( const char *szSound, float flVolume, float pitch = PITCH_NORM )
|
||||
{
|
||||
g_engfuncs.pfnPlaySoundByName( szSound, flVolume, pitch, NULL );
|
||||
gEngfuncs.pfnPlaySoundByName( szSound, flVolume, pitch, NULL );
|
||||
}
|
||||
|
||||
inline void CL_PlaySound( int iSound, float flVolume, float pitch = PITCH_NORM )
|
||||
{
|
||||
g_engfuncs.pfnPlaySoundByIndex( iSound, flVolume, pitch, NULL );
|
||||
gEngfuncs.pfnPlaySoundByIndex( iSound, flVolume, pitch, NULL );
|
||||
}
|
||||
|
||||
inline void CL_PlaySound( const char *szSound, float flVolume, Vector &pos, float pitch = PITCH_NORM )
|
||||
{
|
||||
g_engfuncs.pfnPlaySoundByName( szSound, flVolume, pitch, pos );
|
||||
gEngfuncs.pfnPlaySoundByName( szSound, flVolume, pitch, pos );
|
||||
}
|
||||
|
||||
inline void CL_PlaySound( int iSound, float flVolume, Vector &pos, float pitch = PITCH_NORM )
|
||||
{
|
||||
g_engfuncs.pfnPlaySoundByIndex( iSound, flVolume, pitch, pos );
|
||||
gEngfuncs.pfnPlaySoundByIndex( iSound, flVolume, pitch, pos );
|
||||
}
|
||||
|
||||
#define TextMessageDrawChar (*g_engfuncs.pfnDrawCharacter)
|
||||
#define TextMessageSetColor (*g_engfuncs.pfnDrawSetTextColor)
|
||||
#define DrawConsoleString (*g_engfuncs.pfnDrawConsoleString)
|
||||
#define GetConsoleStringSize (*g_engfuncs.pfnDrawConsoleStringLen)
|
||||
#define AngleVectors (*g_engfuncs.pfnAngleVectors)
|
||||
#define CenterPrint (*g_engfuncs.pfnCenterPrint)
|
||||
#define ConsolePrint (*g_engfuncs.pfnConsolePrint)
|
||||
#define GetViewAngles (*g_engfuncs.pfnGetViewAngles)
|
||||
#define SetViewAngles (*g_engfuncs.pfnSetViewAngles)
|
||||
#define GetLocalPlayer (*g_engfuncs.pfnGetLocalPlayer)
|
||||
#define GetClientMaxspeed (*g_engfuncs.pfnGetClientMaxspeed)
|
||||
#define IsSpectateOnly (*g_engfuncs.pfnIsSpectateOnly)
|
||||
#define GetClientTime (*g_engfuncs.pfnGetClientTime)
|
||||
#define GetLerpFrac (*g_engfuncs.pfnGetLerpFrac)
|
||||
#define GetViewModel (*g_engfuncs.pfnGetViewModel)
|
||||
#define GetModelPtr (*g_engfuncs.pfnGetModelPtr)
|
||||
#define CL_GetPaletteColor (*g_engfuncs.pEfxAPI->R_GetPaletteColor)
|
||||
#define CL_AddEntity (*g_engfuncs.pEfxAPI->R_AddEntity)
|
||||
#define POINT_CONTENTS( x ) (*g_engfuncs.pfnPointContents)( x, NULL )
|
||||
#define TRACE_LINE (*g_engfuncs.pfnTraceLine)
|
||||
#define TRACE_HULL (*g_engfuncs.pfnTraceHull)
|
||||
#define RANDOM_LONG (*g_engfuncs.pfnRandomLong)
|
||||
#define RANDOM_FLOAT (*g_engfuncs.pfnRandomFloat)
|
||||
#define LOAD_FILE (*g_engfuncs.pfnLoadFile)
|
||||
#define FILE_EXISTS (*g_engfuncs.pfnFileExists)
|
||||
#define FREE_FILE (*g_engfuncs.pfnFreeFile)
|
||||
#define GET_GAME_DIR (*g_engfuncs.pfnGetGameDir)
|
||||
#define LOAD_LIBRARY (*g_engfuncs.pfnLoadLibrary)
|
||||
#define GET_PROC_ADDRESS (*g_engfuncs.pfnGetProcAddress)
|
||||
#define FREE_LIBRARY (*g_engfuncs.pfnFreeLibrary)
|
||||
#define HOST_ERROR (*g_engfuncs.pfnHostError)
|
||||
#define COM_ParseToken (*g_engfuncs.pfnParseToken)
|
||||
#define MAKE_ENVSHOT( x, y ) (*g_engfuncs.R_EnvShot)( x, y, 0 )
|
||||
#define MAKE_SKYSHOT( x, y ) (*g_engfuncs.R_EnvShot)( x, y, 1 )
|
||||
#define TextMessageDrawChar (*gEngfuncs.pfnDrawCharacter)
|
||||
#define TextMessageSetColor (*gEngfuncs.pfnDrawSetTextColor)
|
||||
#define DrawConsoleString (*gEngfuncs.pfnDrawConsoleString)
|
||||
#define GetConsoleStringSize (*gEngfuncs.pfnDrawConsoleStringLen)
|
||||
#define AngleVectors (*gEngfuncs.pfnAngleVectors)
|
||||
#define CenterPrint (*gEngfuncs.pfnCenterPrint)
|
||||
#define ConsolePrint (*gEngfuncs.pfnConsolePrint)
|
||||
#define GetViewAngles (*gEngfuncs.pfnGetViewAngles)
|
||||
#define SetViewAngles (*gEngfuncs.pfnSetViewAngles)
|
||||
#define GetLocalPlayer (*gEngfuncs.pfnGetLocalPlayer)
|
||||
#define GetClientMaxspeed (*gEngfuncs.pfnGetClientMaxspeed)
|
||||
#define IsSpectateOnly (*gEngfuncs.pfnIsSpectateOnly)
|
||||
#define GetClientTime (*gEngfuncs.pfnGetClientTime)
|
||||
#define GetLerpFrac (*gEngfuncs.pfnGetLerpFrac)
|
||||
#define GetViewModel (*gEngfuncs.pfnGetViewModel)
|
||||
#define GetModelPtr (*gEngfuncs.pfnGetModelPtr)
|
||||
#define CL_GetPaletteColor (*gEngfuncs.pEfxAPI->R_GetPaletteColor)
|
||||
#define CL_AddEntity (*gEngfuncs.pEfxAPI->R_AddEntity)
|
||||
#define POINT_CONTENTS( x ) (*gEngfuncs.PM_PointContents)( x, NULL )
|
||||
#define TRACE_LINE (*gEngfuncs.pfnTraceLine)
|
||||
#define TRACE_HULL (*gEngfuncs.pfnTraceHull)
|
||||
#define RANDOM_LONG (*gEngfuncs.pfnRandomLong)
|
||||
#define RANDOM_FLOAT (*gEngfuncs.pfnRandomFloat)
|
||||
#define LOAD_FILE (*gEngfuncs.pfnLoadFile)
|
||||
#define FILE_EXISTS (*gEngfuncs.pfnFileExists)
|
||||
#define FREE_FILE (*gEngfuncs.pfnFreeFile)
|
||||
#define GET_GAME_DIR (*gEngfuncs.pfnGetGameDir)
|
||||
#define LOAD_LIBRARY (*gEngfuncs.pfnLoadLibrary)
|
||||
#define GET_PROC_ADDRESS (*gEngfuncs.pfnGetProcAddress)
|
||||
#define FREE_LIBRARY (*gEngfuncs.pfnFreeLibrary)
|
||||
#define HOST_ERROR (*gEngfuncs.pfnHostError)
|
||||
#define COM_ParseToken (*gEngfuncs.pfnParseToken)
|
||||
#define MAKE_ENVSHOT( x, y ) (*gEngfuncs.R_EnvShot)( x, y, 0 )
|
||||
#define MAKE_SKYSHOT( x, y ) (*gEngfuncs.R_EnvShot)( x, y, 1 )
|
||||
|
||||
#endif//ENGINECALLBACKS_H
|
|
@ -12,49 +12,50 @@
|
|||
|
||||
extern ref_params_t *gpViewParams;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
void EV_EjectBrass( event_args_t *args );
|
||||
void EV_FireNull( event_args_t *args );
|
||||
void EV_FireCrowbar( event_args_t *args );
|
||||
void EV_PlayEmptySound( event_args_t *args );
|
||||
void EV_FireGlock1( event_args_t *args );
|
||||
void EV_FireMP5( event_args_t *args );
|
||||
void EV_FirePython( event_args_t *args );
|
||||
void EV_FireGauss( event_args_t *args );
|
||||
void EV_SpinGauss( event_args_t *args );
|
||||
void EV_EgonFire( event_args_t *args );
|
||||
void EV_EgonStop( event_args_t *args );
|
||||
void EV_FireShotGunSingle( event_args_t *args );
|
||||
void EV_FireShotGunDouble( event_args_t *args );
|
||||
void EV_SnarkFire( event_args_t *args );
|
||||
void EV_TrainPitchAdjust( event_args_t *args );
|
||||
void EV_Decals( event_args_t *args );
|
||||
}
|
||||
void EV_FireGlock1( struct event_args_s *args );
|
||||
void EV_FireGlock2( struct event_args_s *args );
|
||||
void EV_FireShotGunSingle( struct event_args_s *args );
|
||||
void EV_FireShotGunDouble( struct event_args_s *args );
|
||||
void EV_FireMP5( struct event_args_s *args );
|
||||
void EV_FireMP52( struct event_args_s *args );
|
||||
void EV_FirePython( struct event_args_s *args );
|
||||
void EV_FireGauss( struct event_args_s *args );
|
||||
void EV_SpinGauss( struct event_args_s *args );
|
||||
void EV_Crowbar( struct event_args_s *args );
|
||||
void EV_FireCrossbow( struct event_args_s *args );
|
||||
void EV_FireCrossbow2( struct event_args_s *args );
|
||||
void EV_FireRpg( struct event_args_s *args );
|
||||
void EV_EgonFire( struct event_args_s *args );
|
||||
void EV_EgonStop( struct event_args_s *args );
|
||||
void EV_HornetGunFire( struct event_args_s *args );
|
||||
void EV_TripmineFire( struct event_args_s *args );
|
||||
void EV_SnarkFire( struct event_args_s *args );
|
||||
void EV_TrainPitchAdjust( struct event_args_s *args );
|
||||
|
||||
//======================
|
||||
// Game_HookEvents
|
||||
//======================
|
||||
void EV_HookEvents( void )
|
||||
{
|
||||
g_engfuncs.pfnHookEvent( "events/crowbar.sc", EV_FireCrowbar );
|
||||
g_engfuncs.pfnHookEvent( "events/glock1.sc", EV_FireGlock1 );
|
||||
g_engfuncs.pfnHookEvent( "events/shotgun1.sc", EV_FireShotGunSingle );
|
||||
g_engfuncs.pfnHookEvent( "events/shotgun2.sc", EV_FireShotGunDouble );
|
||||
g_engfuncs.pfnHookEvent( "events/mp5.sc", EV_FireMP5 );
|
||||
g_engfuncs.pfnHookEvent( "events/python.sc", EV_FirePython );
|
||||
g_engfuncs.pfnHookEvent( "events/gauss.sc", EV_FireGauss );
|
||||
g_engfuncs.pfnHookEvent( "events/gaussspin.sc", EV_SpinGauss );
|
||||
g_engfuncs.pfnHookEvent( "events/egon_fire.sc", EV_EgonFire );
|
||||
g_engfuncs.pfnHookEvent( "events/egon_stop.sc", EV_EgonStop );
|
||||
g_engfuncs.pfnHookEvent( "events/train.sc", EV_TrainPitchAdjust );
|
||||
g_engfuncs.pfnHookEvent( "events/snarkfire.sc", EV_SnarkFire );
|
||||
|
||||
// legacy. attempt to be removed
|
||||
g_engfuncs.pfnHookEvent( "evEjectBrass", EV_EjectBrass );
|
||||
g_engfuncs.pfnHookEvent( "evNull", EV_FireNull );
|
||||
g_engfuncs.pfnHookEvent( "evEmptySound", EV_PlayEmptySound );
|
||||
g_engfuncs.pfnHookEvent( "evDecals", EV_Decals );
|
||||
gEngfuncs.pfnHookEvent( "events/glock1.sc", EV_FireGlock1 );
|
||||
gEngfuncs.pfnHookEvent( "events/glock2.sc", EV_FireGlock2 );
|
||||
gEngfuncs.pfnHookEvent( "events/shotgun1.sc", EV_FireShotGunSingle );
|
||||
gEngfuncs.pfnHookEvent( "events/shotgun2.sc", EV_FireShotGunDouble );
|
||||
gEngfuncs.pfnHookEvent( "events/mp5.sc", EV_FireMP5 );
|
||||
gEngfuncs.pfnHookEvent( "events/mp52.sc", EV_FireMP52 );
|
||||
gEngfuncs.pfnHookEvent( "events/python.sc", EV_FirePython );
|
||||
gEngfuncs.pfnHookEvent( "events/gauss.sc", EV_FireGauss );
|
||||
gEngfuncs.pfnHookEvent( "events/gaussspin.sc", EV_SpinGauss );
|
||||
gEngfuncs.pfnHookEvent( "events/train.sc", EV_TrainPitchAdjust );
|
||||
gEngfuncs.pfnHookEvent( "events/crowbar.sc", EV_Crowbar );
|
||||
gEngfuncs.pfnHookEvent( "events/crossbow1.sc", EV_FireCrossbow );
|
||||
gEngfuncs.pfnHookEvent( "events/crossbow2.sc", EV_FireCrossbow2 );
|
||||
gEngfuncs.pfnHookEvent( "events/rpg.sc", EV_FireRpg );
|
||||
gEngfuncs.pfnHookEvent( "events/egon_fire.sc", EV_EgonFire );
|
||||
gEngfuncs.pfnHookEvent( "events/egon_stop.sc", EV_EgonStop );
|
||||
gEngfuncs.pfnHookEvent( "events/firehornet.sc", EV_HornetGunFire );
|
||||
gEngfuncs.pfnHookEvent( "events/tripfire.sc", EV_TripmineFire );
|
||||
gEngfuncs.pfnHookEvent( "events/snarkfire.sc", EV_SnarkFire );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -106,7 +107,7 @@ int EV_IsPlayer( int idx )
|
|||
//=================
|
||||
int EV_IsLocal( int idx )
|
||||
{
|
||||
return g_engfuncs.pEventAPI->EV_IsLocal( idx - 1 ) ? true : false;
|
||||
return gEngfuncs.pEventAPI->EV_IsLocal( idx - 1 ) ? true : false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -129,7 +130,7 @@ void EV_GetGunPosition( event_args_t *args, float *pos, float *origin )
|
|||
if ( EV_IsLocal( idx ))
|
||||
{
|
||||
// Grab predicted result for local player
|
||||
g_engfuncs.pEventAPI->EV_LocalPlayerViewheight( view_ofs );
|
||||
gEngfuncs.pEventAPI->EV_LocalPlayerViewheight( view_ofs );
|
||||
}
|
||||
else if ( args->ducking == 1 )
|
||||
{
|
||||
|
@ -171,7 +172,7 @@ void EV_GetDefaultShellInfo( event_args_t *args, float *origin, float *velocity,
|
|||
{
|
||||
if ( EV_IsLocal( idx ) )
|
||||
{
|
||||
g_engfuncs.pEventAPI->EV_LocalPlayerViewheight( view_ofs );
|
||||
gEngfuncs.pEventAPI->EV_LocalPlayerViewheight( view_ofs );
|
||||
}
|
||||
else if ( args->ducking == 1 )
|
||||
{
|
||||
|
@ -235,7 +236,7 @@ void EV_UpadteFlashlight( cl_entity_t *pEnt )
|
|||
{
|
||||
if ( EV_IsLocal( pEnt->index ) )
|
||||
{
|
||||
g_engfuncs.pEventAPI->EV_LocalPlayerViewheight( view_ofs );
|
||||
gEngfuncs.pEventAPI->EV_LocalPlayerViewheight( view_ofs );
|
||||
}
|
||||
else if ( pEnt->curstate.usehull == 1 ) // NOTE: needs changes in delta.lst
|
||||
{
|
||||
|
@ -247,14 +248,14 @@ void EV_UpadteFlashlight( cl_entity_t *pEnt )
|
|||
vecEnd = vecSrc + forward * 512;
|
||||
int ignore = PM_FindPhysEntByIndex( pEnt->index );
|
||||
|
||||
trace = g_engfuncs.PM_TraceLine( vecSrc, vecEnd, PM_TRACELINE_PHYSENTSONLY, 2, ignore );
|
||||
trace = gEngfuncs.PM_TraceLine( vecSrc, vecEnd, PM_TRACELINE_PHYSENTSONLY, 2, ignore );
|
||||
|
||||
if( trace->fraction != 1.0f )
|
||||
vecPos = trace->endpos + (trace->plane.normal * -16.0f);
|
||||
else vecPos = trace->endpos;
|
||||
|
||||
// update flashlight endpos
|
||||
dlight_t *dl = g_engfuncs.pEfxAPI->CL_AllocDLight( pEnt->index );
|
||||
dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDLight( pEnt->index );
|
||||
|
||||
dl->origin = vecPos;
|
||||
dl->die = gpGlobals->time + 0.001f; // die on next frame
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -16,58 +16,59 @@
|
|||
#define VEC_DUCK_HULL_MIN Vector(-16, -16, -18 )
|
||||
#define VEC_DUCK_HULL_MAX Vector( 16, 16, 18 )
|
||||
|
||||
|
||||
enum crowbar_e
|
||||
// bullet types
|
||||
typedef enum
|
||||
{
|
||||
CROWBAR_IDLE = 0,
|
||||
CROWBAR_DRAW,
|
||||
CROWBAR_HOLSTER,
|
||||
CROWBAR_ATTACK1HIT,
|
||||
CROWBAR_ATTACK1MISS,
|
||||
CROWBAR_ATTACK2MISS,
|
||||
CROWBAR_ATTACK2HIT,
|
||||
CROWBAR_ATTACK3MISS,
|
||||
CROWBAR_ATTACK3HIT
|
||||
};
|
||||
BULLET_NONE = 0,
|
||||
BULLET_PLAYER_9MM, // glock
|
||||
BULLET_PLAYER_MP5, // mp5
|
||||
BULLET_PLAYER_357, // python
|
||||
BULLET_PLAYER_BUCKSHOT, // shotgun
|
||||
BULLET_PLAYER_CROWBAR, // crowbar swipe
|
||||
|
||||
enum shotgun_e
|
||||
{
|
||||
SHOTGUN_IDLE = 0,
|
||||
SHOTGUN_DRAW,
|
||||
SHOTGUN_HOLSTER,
|
||||
SHOTGUN_FIRE,
|
||||
SHOTGUN_FIRE2,
|
||||
SHOTGUN_START_RELOAD,
|
||||
SHOTGUN_RELOAD,
|
||||
SHOTGUN_PUMP
|
||||
};
|
||||
BULLET_MONSTER_9MM,
|
||||
BULLET_MONSTER_MP5,
|
||||
BULLET_MONSTER_12MM,
|
||||
} Bullet;
|
||||
|
||||
enum glock_e
|
||||
{
|
||||
GLOCK_IDLE1 = 0,
|
||||
GLOCK_IDLE2,
|
||||
GLOCK_IDLE3,
|
||||
GLOCK_DRAW,
|
||||
GLOCK_HOLSTER,
|
||||
GLOCK_SHOOT,
|
||||
GLOCK_SHOOT_EMPTY,
|
||||
GLOCK_RELOAD,
|
||||
GLOCK_RELOAD_NOT_EMPTY,
|
||||
GLOCK_HOLSTER2,
|
||||
GLOCK_ADD_SILENCER,
|
||||
GLOCK_DEL_SILENCER
|
||||
GLOCK_DRAW,
|
||||
GLOCK_HOLSTER,
|
||||
GLOCK_ADD_SILENCER
|
||||
};
|
||||
|
||||
enum shotgun_e
|
||||
{
|
||||
SHOTGUN_IDLE = 0,
|
||||
SHOTGUN_FIRE,
|
||||
SHOTGUN_FIRE2,
|
||||
SHOTGUN_RELOAD,
|
||||
SHOTGUN_PUMP,
|
||||
SHOTGUN_START_RELOAD,
|
||||
SHOTGUN_DRAW,
|
||||
SHOTGUN_HOLSTER,
|
||||
SHOTGUN_IDLE4,
|
||||
SHOTGUN_IDLE_DEEP
|
||||
};
|
||||
|
||||
enum mp5_e
|
||||
{
|
||||
MP5_IDLE = 0,
|
||||
MP5_LONGIDLE = 0,
|
||||
MP5_IDLE1,
|
||||
MP5_LAUNCH,
|
||||
MP5_RELOAD,
|
||||
MP5_DEPLOY,
|
||||
MP5_HOLSTER,
|
||||
MP5_FIRE1,
|
||||
MP5_FIRE2,
|
||||
MP5_FIRE3,
|
||||
MP5_LAUNCH,
|
||||
MP5_RELOAD
|
||||
};
|
||||
|
||||
enum python_e
|
||||
|
@ -95,18 +96,87 @@ enum gauss_e
|
|||
GAUSS_DRAW
|
||||
};
|
||||
|
||||
enum crowbar_e
|
||||
{
|
||||
CROWBAR_IDLE = 0,
|
||||
CROWBAR_DRAW,
|
||||
CROWBAR_HOLSTER,
|
||||
CROWBAR_ATTACK1HIT,
|
||||
CROWBAR_ATTACK1MISS,
|
||||
CROWBAR_ATTACK2MISS,
|
||||
CROWBAR_ATTACK2HIT,
|
||||
CROWBAR_ATTACK3MISS,
|
||||
CROWBAR_ATTACK3HIT
|
||||
};
|
||||
|
||||
enum crossbow_e
|
||||
{
|
||||
CROSSBOW_IDLE1 = 0, // full
|
||||
CROSSBOW_IDLE2, // empty
|
||||
CROSSBOW_FIDGET1, // full
|
||||
CROSSBOW_FIDGET2, // empty
|
||||
CROSSBOW_FIRE1, // full
|
||||
CROSSBOW_FIRE2, // reload
|
||||
CROSSBOW_FIRE3, // empty
|
||||
CROSSBOW_RELOAD, // from empty
|
||||
CROSSBOW_DRAW1, // full
|
||||
CROSSBOW_DRAW2, // empty
|
||||
CROSSBOW_HOLSTER1, // full
|
||||
CROSSBOW_HOLSTER2, // empty
|
||||
};
|
||||
|
||||
enum rpg_e
|
||||
{
|
||||
RPG_IDLE = 0,
|
||||
RPG_FIDGET,
|
||||
RPG_RELOAD, // to reload
|
||||
RPG_FIRE2, // to empty
|
||||
RPG_HOLSTER1, // loaded
|
||||
RPG_DRAW1, // loaded
|
||||
RPG_HOLSTER2, // unloaded
|
||||
RPG_DRAW_UL, // unloaded
|
||||
RPG_IDLE_UL, // unloaded idle
|
||||
RPG_FIDGET_UL, // unloaded fidget
|
||||
};
|
||||
|
||||
enum egon_e
|
||||
{
|
||||
EGON_IDLE1 = 0,
|
||||
EGON_FIDGET1,
|
||||
EGON_ALTFIREON,
|
||||
EGON_ALTFIRECYCLE,
|
||||
EGON_ALTFIREOFF,
|
||||
EGON_FIRESTOP,
|
||||
EGON_FIRECYCLE,
|
||||
EGON_FIRE1,
|
||||
EGON_FIRE2,
|
||||
EGON_FIRE3,
|
||||
EGON_FIRE4,
|
||||
EGON_DRAW,
|
||||
EGON_HOLSTER
|
||||
};
|
||||
|
||||
enum hgun_e
|
||||
{
|
||||
HGUN_IDLE1 = 0,
|
||||
HGUN_FIDGETSWAY,
|
||||
HGUN_FIDGETSHAKE,
|
||||
HGUN_DOWN,
|
||||
HGUN_UP,
|
||||
HGUN_SHOOT
|
||||
};
|
||||
|
||||
enum tripmine_e
|
||||
{
|
||||
TRIPMINE_IDLE1 = 0,
|
||||
TRIPMINE_IDLE2,
|
||||
TRIPMINE_ARM1,
|
||||
TRIPMINE_ARM2,
|
||||
TRIPMINE_FIDGET,
|
||||
TRIPMINE_HOLSTER,
|
||||
TRIPMINE_DRAW,
|
||||
TRIPMINE_WORLD,
|
||||
TRIPMINE_GROUND,
|
||||
};
|
||||
|
||||
enum squeak_e
|
||||
{
|
||||
SQUEAK_IDLE1 = 0,
|
||||
|
|
|
@ -529,7 +529,7 @@ void IN_CreateMove( usercmd_t *cmd, int msec, int active )
|
|||
|
||||
if( freelook->integer )
|
||||
{
|
||||
if( !mlook_active && lookspring->value )
|
||||
if( !mlook_active && lookspring->integer )
|
||||
V_StartPitchDrift();
|
||||
}
|
||||
}
|
||||
|
@ -675,8 +675,8 @@ void IN_Init( void )
|
|||
cl_lw = CVAR_REGISTER( "cl_lw", "1", FCVAR_ARCHIVE|FCVAR_USERINFO, "enable client weapon predicting" );
|
||||
|
||||
cl_movespeedkey = CVAR_REGISTER ( "cl_movespeedkey", "0.3", 0, "global scale factor between run and walk" );
|
||||
cl_pitchup = CVAR_REGISTER ( "cl_pitchup", "70", 0, "how many pitch up" );
|
||||
cl_pitchdown = CVAR_REGISTER ( "cl_pitchdown", "80", 0, "how many pitch down" );
|
||||
cl_pitchup = CVAR_REGISTER ( "cl_pitchup", "89", 0, "how many pitch up" );
|
||||
cl_pitchdown = CVAR_REGISTER ( "cl_pitchdown", "89", 0, "how many pitch down" );
|
||||
|
||||
freelook = CVAR_REGISTER( "freelook", "1", FCVAR_ARCHIVE, "enables mouse look" );
|
||||
lookspring = CVAR_REGISTER( "lookspring", "0", FCVAR_ARCHIVE, "allow look spring" );
|
||||
|
|
|
@ -89,11 +89,11 @@ void CBeamSegDraw::Start( int nSegs, HSPRITE m_hSprite, kRenderMode_t nRenderMod
|
|||
|
||||
ASSERT( nSegs >= 2 );
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->RenderMode( nRenderMode );
|
||||
g_engfuncs.pTriAPI->Bind( m_hSprite, frame ); // GetSpriteTexture already set frame
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->RenderMode( nRenderMode );
|
||||
gEngfuncs.pTriAPI->Bind( m_hSprite, frame ); // GetSpriteTexture already set frame
|
||||
|
||||
g_engfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
}
|
||||
|
||||
inline void CBeamSegDraw::ComputeNormal( const Vector &vStartPos, const Vector &vNextPos, Vector *pNormal )
|
||||
|
@ -128,17 +128,17 @@ inline void CBeamSegDraw::SpecifySeg( const Vector &vNormal )
|
|||
vPoint2 = m_Seg.m_vPos + (-m_Seg.m_flWidth * 0.5f) * vNormal;
|
||||
|
||||
// Specify the points.
|
||||
g_engfuncs.pTriAPI->Color4f( m_Seg.m_vColor[0], m_Seg.m_vColor[1], m_Seg.m_vColor[2], m_Seg.m_flAlpha );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, m_Seg.m_flTexCoord );
|
||||
g_engfuncs.pTriAPI->Normal3fv( vNormal );
|
||||
// g_engfuncs.pTriAPI->Tangent3fv( vTangentY );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( vPoint2 );
|
||||
gEngfuncs.pTriAPI->Color4f( m_Seg.m_vColor[0], m_Seg.m_vColor[1], m_Seg.m_vColor[2], m_Seg.m_flAlpha );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, m_Seg.m_flTexCoord );
|
||||
gEngfuncs.pTriAPI->Normal3fv( vNormal );
|
||||
// gEngfuncs.pTriAPI->Tangent3fv( vTangentY );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( vPoint2 );
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( m_Seg.m_vColor[0], m_Seg.m_vColor[1], m_Seg.m_vColor[2], m_Seg.m_flAlpha );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, m_Seg.m_flTexCoord );
|
||||
g_engfuncs.pTriAPI->Normal3fv( vNormal );
|
||||
// g_engfuncs.pTriAPI->Tangent3fv( vTangentY );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( vPoint1 );
|
||||
gEngfuncs.pTriAPI->Color4f( m_Seg.m_vColor[0], m_Seg.m_vColor[1], m_Seg.m_vColor[2], m_Seg.m_flAlpha );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, m_Seg.m_flTexCoord );
|
||||
gEngfuncs.pTriAPI->Normal3fv( vNormal );
|
||||
// gEngfuncs.pTriAPI->Tangent3fv( vTangentY );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( vPoint1 );
|
||||
|
||||
}
|
||||
|
||||
|
@ -177,8 +177,8 @@ void CBeamSegDraw::NextSeg( CBeamSeg *pSeg )
|
|||
|
||||
void CBeamSegDraw::End()
|
||||
{
|
||||
g_engfuncs.pTriAPI->End();
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -550,9 +550,9 @@ int CViewRenderBeams::CullBeam( const Vector &start, const Vector &end, int pvsO
|
|||
}
|
||||
|
||||
// check bbox
|
||||
if( g_engfuncs.pEfxAPI->CL_IsBoxVisible( mins, maxs ))
|
||||
if( gEngfuncs.pEfxAPI->CL_IsBoxVisible( mins, maxs ))
|
||||
{
|
||||
if ( pvsOnly || !g_engfuncs.pEfxAPI->R_CullBox( mins, maxs ) )
|
||||
if ( pvsOnly || !gEngfuncs.pEfxAPI->R_CullBox( mins, maxs ) )
|
||||
{
|
||||
// Beam is visible
|
||||
return 1;
|
||||
|
@ -862,7 +862,7 @@ Beam_t *CViewRenderBeams::CreateBeamPoints( BeamInfo_t &beamInfo )
|
|||
// Model index.
|
||||
if (( beamInfo.m_pszModelName ) && ( beamInfo.m_nModelIndex == -1 ) )
|
||||
{
|
||||
beamInfo.m_nModelIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( beamInfo.m_pszModelName );
|
||||
beamInfo.m_nModelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( beamInfo.m_pszModelName );
|
||||
}
|
||||
|
||||
// Create the new beam.
|
||||
|
@ -1352,14 +1352,14 @@ void CViewRenderBeams::DrawBeamFollow( int spriteIndex, Beam_t *pbeam, int frame
|
|||
if ( !pnew && div != 0 )
|
||||
{
|
||||
delta = pbeam->attachment[0];
|
||||
g_engfuncs.pTriAPI->WorldToScreen( pbeam->attachment[0], screenLast );
|
||||
g_engfuncs.pTriAPI->WorldToScreen( particles->org, screen );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( pbeam->attachment[0], screenLast );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( particles->org, screen );
|
||||
}
|
||||
else if ( particles && particles->next )
|
||||
{
|
||||
delta = particles->org;
|
||||
g_engfuncs.pTriAPI->WorldToScreen( particles->org, screenLast );
|
||||
g_engfuncs.pTriAPI->WorldToScreen( particles->next->org, screen );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( particles->org, screenLast );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( particles->next->org, screen );
|
||||
particles = particles->next;
|
||||
}
|
||||
else
|
||||
|
@ -1790,7 +1790,7 @@ void DrawSegs( int noise_divisions, float *prgNoise, int modelIndex, float frame
|
|||
return;
|
||||
|
||||
ASSERT( fadeLength >= 0.0f );
|
||||
HSPRITE m_hSprite = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
HSPRITE m_hSprite = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
|
||||
if ( !m_hSprite )
|
||||
return;
|
||||
|
@ -1984,7 +1984,7 @@ void DrawDisk( int noise_divisions, float *prgNoise, int modelIndex, float frame
|
|||
Vector point;
|
||||
float w;
|
||||
|
||||
HSPRITE m_hSprite = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
HSPRITE m_hSprite = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
|
||||
if ( !m_hSprite )
|
||||
return;
|
||||
|
@ -2010,11 +2010,11 @@ void DrawDisk( int noise_divisions, float *prgNoise, int modelIndex, float frame
|
|||
|
||||
w = freq * delta[2];
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
g_engfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
gEngfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
|
||||
g_engfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
|
||||
// NOTE: We must force the degenerate triangles to be on the edge
|
||||
for ( i = 0; i < segments; i++ )
|
||||
|
@ -2026,9 +2026,9 @@ void DrawDisk( int noise_divisions, float *prgNoise, int modelIndex, float frame
|
|||
point[1] = source[1];
|
||||
point[2] = source[2];
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, vLast );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( point );
|
||||
gEngfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, vLast );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( point );
|
||||
|
||||
s = sin( fraction * 2 * M_PI );
|
||||
c = cos( fraction * 2 * M_PI );
|
||||
|
@ -2036,15 +2036,15 @@ void DrawDisk( int noise_divisions, float *prgNoise, int modelIndex, float frame
|
|||
point[1] = c * w + source[1];
|
||||
point[2] = source[2];
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, vLast );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( point );
|
||||
gEngfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, vLast );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( point );
|
||||
|
||||
vLast += vStep; // Advance texture scroll (v axis only)
|
||||
}
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -2071,7 +2071,7 @@ void DrawCylinder( int noise_divisions, float *prgNoise, int modelIndex, float f
|
|||
float div, length, fraction, vLast, vStep;
|
||||
Vector point;
|
||||
|
||||
HSPRITE m_hSprite = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
HSPRITE m_hSprite = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
|
||||
if ( !m_hSprite )
|
||||
return;
|
||||
|
@ -2095,12 +2095,12 @@ void DrawCylinder( int noise_divisions, float *prgNoise, int modelIndex, float f
|
|||
vLast = fmod(freq * speed, 1.0f );
|
||||
scale = scale * length;
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->CullFace( TRI_NONE );
|
||||
g_engfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
g_engfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->CullFace( TRI_NONE );
|
||||
gEngfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
gEngfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
|
||||
g_engfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
|
||||
float radius = delta[2];
|
||||
for ( i = 0; i < segments; i++ )
|
||||
|
@ -2114,24 +2114,24 @@ void DrawCylinder( int noise_divisions, float *prgNoise, int modelIndex, float f
|
|||
point[1] = c * freq * radius + source[1];
|
||||
point[2] = source[2] + width;
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( 0.0f, 0.0f, 0.0f, 1.0f );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, vLast );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( point );
|
||||
gEngfuncs.pTriAPI->Color4f( 0.0f, 0.0f, 0.0f, 1.0f );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, vLast );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( point );
|
||||
|
||||
point[0] = s * freq * (radius + width) + source[0];
|
||||
point[1] = c * freq * (radius + width) + source[1];
|
||||
point[2] = source[2] - width;
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, vLast );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( point );
|
||||
gEngfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, vLast );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( point );
|
||||
|
||||
vLast += vStep; // Advance texture scroll (v axis only)
|
||||
}
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->CullFace( TRI_FRONT );
|
||||
gEngfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->CullFace( TRI_FRONT );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -2151,7 +2151,7 @@ void DrawRing( int noise_divisions, float *prgNoise, void (*pfnNoise)( float *no
|
|||
float radius, x, y, scale;
|
||||
Vector d;
|
||||
|
||||
HSPRITE m_hSprite = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
HSPRITE m_hSprite = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
|
||||
if ( !m_hSprite )
|
||||
return;
|
||||
|
@ -2200,7 +2200,7 @@ void DrawRing( int noise_divisions, float *prgNoise, void (*pfnNoise)( float *no
|
|||
screen = center - last1; // mins
|
||||
|
||||
// Is that box in PVS && frustum?
|
||||
if ( !g_engfuncs.pEfxAPI->CL_IsBoxVisible( screen, tmp ) || g_engfuncs.pEfxAPI->R_CullBox( screen, tmp ))
|
||||
if ( !gEngfuncs.pEfxAPI->CL_IsBoxVisible( screen, tmp ) || gEngfuncs.pEfxAPI->R_CullBox( screen, tmp ))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -2214,11 +2214,11 @@ void DrawRing( int noise_divisions, float *prgNoise, void (*pfnNoise)( float *no
|
|||
|
||||
j = segments / 8;
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
g_engfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
gEngfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
|
||||
g_engfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_TRIANGLE_STRIP );
|
||||
|
||||
for ( i = 0; i < segments + 1; i++ )
|
||||
{
|
||||
|
@ -2239,7 +2239,7 @@ void DrawRing( int noise_divisions, float *prgNoise, void (*pfnNoise)( float *no
|
|||
point = point + (gpViewParams->right * factor);
|
||||
|
||||
// Transform point into screen space
|
||||
g_engfuncs.pTriAPI->WorldToScreen( point, screen );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( point, screen );
|
||||
|
||||
if ( i != 0 )
|
||||
{
|
||||
|
@ -2256,13 +2256,13 @@ void DrawRing( int noise_divisions, float *prgNoise, void (*pfnNoise)( float *no
|
|||
last2 = point + (normal * -width);
|
||||
|
||||
vLast += vStep; // Advance texture scroll (v axis only)
|
||||
g_engfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, vLast );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( last2 );
|
||||
gEngfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, vLast );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( last2 );
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, vLast );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( last1 );
|
||||
gEngfuncs.pTriAPI->Color4f( color[0], color[1], color[2], 1.0f );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, vLast );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( last1 );
|
||||
}
|
||||
|
||||
screenLast = screen;
|
||||
|
@ -2276,8 +2276,8 @@ void DrawRing( int noise_divisions, float *prgNoise, void (*pfnNoise)( float *no
|
|||
}
|
||||
}
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -2306,7 +2306,7 @@ void DrawBeamFollow( int modelIndex, BeamTrail_t* pHead, int frame, int rendermo
|
|||
Vector last1, last2, tmp, normal;
|
||||
float scaledColor[3];
|
||||
|
||||
HSPRITE m_hSprite = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
HSPRITE m_hSprite = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, frame );
|
||||
|
||||
if ( !m_hSprite )
|
||||
return;
|
||||
|
@ -2337,25 +2337,25 @@ void DrawBeamFollow( int modelIndex, BeamTrail_t* pHead, int frame, int rendermo
|
|||
nColor[1] = (byte)bound( 0, (int)(scaledColor[1] * 255.0f), 255 );
|
||||
nColor[2] = (byte)bound( 0, (int)(scaledColor[2] * 255.0f), 255 );
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
g_engfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->RenderMode( (kRenderMode_t)rendermode );
|
||||
gEngfuncs.pTriAPI->Bind( m_hSprite, 0 ); // GetSpriteTexture already set frame
|
||||
|
||||
g_engfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
|
||||
while ( pHead )
|
||||
{
|
||||
// Con_Printf( "%.2f ", fraction );
|
||||
g_engfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, 1.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( last2 );
|
||||
gEngfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, 1.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( last2 );
|
||||
|
||||
g_engfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, 1.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( last1 );
|
||||
gEngfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, 1.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( last1 );
|
||||
|
||||
// Transform point into screen space
|
||||
g_engfuncs.pTriAPI->WorldToScreen( pHead->org, screen );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( pHead->org, screen );
|
||||
|
||||
// Build world-space normal to screen-space direction vector
|
||||
tmp = screen - screenLast;
|
||||
|
@ -2387,19 +2387,19 @@ void DrawBeamFollow( int modelIndex, BeamTrail_t* pHead, int frame, int rendermo
|
|||
nColor[0] = nColor[1] = nColor[2] = 0;
|
||||
}
|
||||
|
||||
g_engfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, 0.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( last1 );
|
||||
gEngfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, 0.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( last1 );
|
||||
|
||||
g_engfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, 0.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( last2 );
|
||||
gEngfuncs.pTriAPI->Color4ub( nColor[0], nColor[1], nColor[2], 255 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, 0.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( last2 );
|
||||
|
||||
screenLast = screen;
|
||||
|
||||
pHead = pHead->next;
|
||||
}
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
|
@ -150,12 +150,12 @@ CBaseParticle *CParticleSystem :: AllocParticle( HSPRITE m_hSpr )
|
|||
void CParticleSystem :: DrawParticle( HSPRITE hSprite, const Vector &pos, const byte color[4], float size )
|
||||
{
|
||||
// draw the particle
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
|
||||
g_engfuncs.pTriAPI->RenderMode( kRenderTransTexture );
|
||||
g_engfuncs.pTriAPI->Color4ub( color[0], color[1], color[2], color[3] );
|
||||
gEngfuncs.pTriAPI->RenderMode( kRenderTransTexture );
|
||||
gEngfuncs.pTriAPI->Color4ub( color[0], color[1], color[2], color[3] );
|
||||
|
||||
g_engfuncs.pTriAPI->Bind( hSprite, 0 );
|
||||
gEngfuncs.pTriAPI->Bind( hSprite, 0 );
|
||||
|
||||
if ( hSprite == m_hDefaultParticle )
|
||||
{
|
||||
|
@ -175,22 +175,22 @@ void CParticleSystem :: DrawParticle( HSPRITE hSprite, const Vector &pos, const
|
|||
up = gpViewParams->up * size;
|
||||
|
||||
// Add the 4 corner vertices.
|
||||
g_engfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 0.0f, 1.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv ( pos - right + up );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 0.0f, 1.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv ( pos - right + up );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 0.0f, 0.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv ( pos + right + up );
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 0.0f, 0.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv ( pos + right + up );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 1.0f, 0.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv ( pos + right - up );
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 1.0f, 0.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv ( pos + right - up );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f ( 1.0f, 1.0f );
|
||||
g_engfuncs.pTriAPI->Vertex3fv ( pos - right - up );
|
||||
gEngfuncs.pTriAPI->TexCoord2f ( 1.0f, 1.0f );
|
||||
gEngfuncs.pTriAPI->Vertex3fv ( pos - right - up );
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->End();
|
||||
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
||||
|
||||
void CParticleSystem :: SimulateAndRender( CBaseParticle *pParticle )
|
||||
|
@ -829,4 +829,15 @@ void CParticleSystem :: BulletTracer( const Vector& start, const Vector& end )
|
|||
p->m_flLength = RANDOM_FLOAT( 0.05f, 0.06f );
|
||||
p->m_Velocity = dir * vel;
|
||||
p->pfnCallback = pfnBulletTracerDraw;
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
BulletImpactParticles
|
||||
|
||||
===============
|
||||
*/
|
||||
void CParticleSystem :: BulletImpactParticles( const Vector &pos )
|
||||
{
|
||||
// FIXME: implement
|
||||
}
|
|
@ -136,6 +136,7 @@ public:
|
|||
void SparkleTracer( const Vector& pos, const Vector& dir );
|
||||
void BulletTracer( const Vector& pos, const Vector& end );
|
||||
void StreakTracer( const Vector& pos, const Vector& velocity, int color );
|
||||
void BulletImpactParticles( const Vector &pos );
|
||||
};
|
||||
|
||||
extern CParticleSystem *g_pParticles;
|
||||
|
|
|
@ -129,13 +129,13 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
// that the client has the player list. We run this code once when we detect any COLLIDEALL
|
||||
// tent, then set this BOOL to true so the code doesn't get run again if there's more than
|
||||
// one COLLIDEALL ent for this update. (often are).
|
||||
g_engfuncs.pEventAPI->EV_SetUpPlayerPrediction( false, true );
|
||||
gEngfuncs.pEventAPI->EV_SetUpPlayerPrediction( false, true );
|
||||
|
||||
// Store off the old count
|
||||
g_engfuncs.pEventAPI->EV_PushPMStates();
|
||||
gEngfuncs.pEventAPI->EV_PushPMStates();
|
||||
|
||||
// Now add in all of the players.
|
||||
g_engfuncs.pEventAPI->EV_SetSolidPlayers ( -1 );
|
||||
gEngfuncs.pEventAPI->EV_SetSolidPlayers ( -1 );
|
||||
|
||||
// save oldorigin
|
||||
pTemp->entity.prevstate.origin = pTemp->entity.origin;
|
||||
|
@ -147,7 +147,7 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
if( gpGlobals->time > pTemp->entity.baseline.scale )
|
||||
{
|
||||
// show Sparks
|
||||
DoSparks( pTemp->entity.origin );
|
||||
SparkShower( pTemp->entity.origin );
|
||||
|
||||
// reduce life
|
||||
pTemp->entity.baseline.framerate -= 0.1f;
|
||||
|
@ -172,9 +172,35 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
|
||||
if( pClient )
|
||||
{
|
||||
if( EV_IsLocal( pClient->index ))
|
||||
{
|
||||
// NOTE: if this a local client ?
|
||||
// relink attachment with her viewmodel
|
||||
pClient = GetViewEntity();
|
||||
}
|
||||
pTemp->entity.origin = pClient->origin + pTemp->tentOffset;
|
||||
}
|
||||
}
|
||||
// same as FTENT_PLYRATTACHMENT but offset will be updated every frame
|
||||
else if( pTemp->flags & FTENT_ATTACHMENT )
|
||||
{
|
||||
cl_entity_t *pClient = GetEntityByIndex( pTemp->clientIndex );
|
||||
|
||||
if( pClient )
|
||||
{
|
||||
if( EV_IsLocal( pClient->index ))
|
||||
{
|
||||
// NOTE: if this a local client ?
|
||||
// relink attachment with her viewmodel
|
||||
pClient = GetViewEntity();
|
||||
}
|
||||
|
||||
pTemp->entity.origin = pClient->origin;
|
||||
|
||||
if( pTemp->entity.baseline.body > 0 )
|
||||
pTemp->entity.origin += pClient->attachment_origin[pTemp->entity.baseline.body - 1];
|
||||
}
|
||||
}
|
||||
else if( pTemp->flags & FTENT_SINEWAVE )
|
||||
{
|
||||
pTemp->x += pTemp->entity.baseline.origin.x * frametime;
|
||||
|
@ -214,7 +240,7 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
pTemp->die = 0.0f;
|
||||
|
||||
// restore state info
|
||||
g_engfuncs.pEventAPI->EV_PopPMStates();
|
||||
gEngfuncs.pEventAPI->EV_PopPMStates();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -253,12 +279,12 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
pmtrace_t pmtrace;
|
||||
physent_t *pe;
|
||||
|
||||
g_engfuncs.pEventAPI->EV_SetTraceHull( 2 );
|
||||
g_engfuncs.pEventAPI->EV_PlayerTrace( pTemp->entity.prevstate.origin, pTemp->entity.origin, PM_STUDIO_BOX, -1, &pmtrace );
|
||||
gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
|
||||
gEngfuncs.pEventAPI->EV_PlayerTrace( pTemp->entity.prevstate.origin, pTemp->entity.origin, PM_STUDIO_BOX, -1, &pmtrace );
|
||||
|
||||
if ( pmtrace.fraction != 1 )
|
||||
{
|
||||
pe = g_engfuncs.pEventAPI->EV_GetPhysent( pmtrace.ent );
|
||||
pe = gEngfuncs.pEventAPI->EV_GetPhysent( pmtrace.ent );
|
||||
|
||||
if( !pmtrace.ent || ( pe->info != pTemp->clientIndex ))
|
||||
{
|
||||
|
@ -274,8 +300,8 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
{
|
||||
pmtrace_t pmtrace;
|
||||
|
||||
g_engfuncs.pEventAPI->EV_SetTraceHull( 2 );
|
||||
g_engfuncs.pEventAPI->EV_PlayerTrace( pTemp->entity.prevstate.origin, pTemp->entity.origin, PM_STUDIO_BOX|PM_WORLD_ONLY, -1, &pmtrace );
|
||||
gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
|
||||
gEngfuncs.pEventAPI->EV_PlayerTrace( pTemp->entity.prevstate.origin, pTemp->entity.origin, PM_STUDIO_BOX|PM_WORLD_ONLY, -1, &pmtrace );
|
||||
|
||||
if( pmtrace.fraction != 1.0f )
|
||||
{
|
||||
|
@ -355,7 +381,7 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
// FIXME: this code is right ???
|
||||
if(( pTemp->flags & FTENT_FLICKER ) && m_iTempEntFrame == pTemp->entity.curstate.effects )
|
||||
{
|
||||
dlight_t *dl = g_engfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
|
||||
dl->origin = pTemp->entity.origin;
|
||||
dl->radius = 60;
|
||||
|
@ -378,7 +404,7 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
if( pTemp->flags & FTENT_CLIENTCUSTOM )
|
||||
{
|
||||
if( pTemp->callback )
|
||||
(*pTemp->callback)( pTemp );
|
||||
(*pTemp->callback)( pTemp, frametime, GetClientTime( ));
|
||||
}
|
||||
|
||||
if( pTemp->flags & FTENT_WINDBLOWN )
|
||||
|
@ -407,7 +433,7 @@ int CTempEnts::TE_Update( TEMPENTITY *pTemp )
|
|||
}
|
||||
|
||||
// restore state info
|
||||
g_engfuncs.pEventAPI->EV_PopPMStates();
|
||||
gEngfuncs.pEventAPI->EV_PopPMStates();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -485,10 +511,10 @@ void CTempEnts::Clear( void )
|
|||
m_iTempEntFrame = 0;
|
||||
|
||||
// update muzzleflash indexes
|
||||
m_iMuzzleFlash[0] = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash1.spr" );
|
||||
m_iMuzzleFlash[1] = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash2.spr" );
|
||||
m_iMuzzleFlash[2] = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash3.spr" );
|
||||
m_iMuzzleFlash[3] = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash.spr" );
|
||||
m_iMuzzleFlash[0] = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash1.spr" );
|
||||
m_iMuzzleFlash[1] = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash2.spr" );
|
||||
m_iMuzzleFlash[2] = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash3.spr" );
|
||||
m_iMuzzleFlash[3] = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/muzzleflash.spr" );
|
||||
|
||||
hSprGlowShell = TEX_Load( "renderfx/glowshell" );
|
||||
|
||||
|
@ -622,7 +648,7 @@ TEMPENTITY *CTempEnts::TempEntAllocNoModel( const Vector& org )
|
|||
return TempEntAlloc( org, 0 );
|
||||
}
|
||||
|
||||
TEMPENTITY *CTempEnts::TempEntAllocCustom( const Vector& org, int modelIndex, int high, ENTCALLBACK pfnCallback )
|
||||
TEMPENTITY *CTempEnts::TempEntAllocCustom( const Vector& org, int modelIndex, int high, void ( *callback )( struct tempent_s *ent, float frametime, float currenttime ))
|
||||
{
|
||||
TEMPENTITY *pTemp;
|
||||
|
||||
|
@ -635,9 +661,9 @@ TEMPENTITY *CTempEnts::TempEntAllocCustom( const Vector& org, int modelIndex, in
|
|||
pTemp = TempEntAlloc( org, modelIndex );
|
||||
}
|
||||
|
||||
if( pTemp && pfnCallback )
|
||||
if( pTemp && callback )
|
||||
{
|
||||
pTemp->callback = pfnCallback;
|
||||
pTemp->callback = callback;
|
||||
pTemp->flags |= FTENT_CLIENTCUSTOM;
|
||||
}
|
||||
|
||||
|
@ -1043,7 +1069,7 @@ void CTempEnts::RocketFlare( const Vector& pos )
|
|||
int modelIndex;
|
||||
int nframeCount;
|
||||
|
||||
modelIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/animglow01.spr" );
|
||||
modelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/animglow01.spr" );
|
||||
if( !modelIndex ) return;
|
||||
|
||||
nframeCount = GetModelFrames( modelIndex );
|
||||
|
@ -1077,19 +1103,15 @@ void CTempEnts::MuzzleFlash( cl_entity_t *pEnt, int iAttachment, int type )
|
|||
if( !modelIndex ) return;
|
||||
|
||||
frameCount = GetModelFrames( modelIndex );
|
||||
pos = pEnt->origin;
|
||||
|
||||
if( iAttachment > 0 )
|
||||
pos += pEnt->attachment_origin[iAttachment - 1];
|
||||
|
||||
if( pos == pEnt->origin )
|
||||
if( iAttachment > 0 && pEnt->attachment_origin[iAttachment - 1] == g_vecZero )
|
||||
{
|
||||
Con_Printf( "Invalid muzzleflash entity!\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
// must set position for right culling on render
|
||||
pTemp = TempEntAlloc( pos, modelIndex );
|
||||
pTemp = TempEntAlloc( pEnt->origin, modelIndex );
|
||||
if( !pTemp ) return;
|
||||
|
||||
pTemp->entity.curstate.rendermode = kRenderTransAdd;
|
||||
|
@ -1098,7 +1120,18 @@ void CTempEnts::MuzzleFlash( cl_entity_t *pEnt, int iAttachment, int type )
|
|||
pTemp->die = gpGlobals->time + 0.05; // die at next frame
|
||||
pTemp->entity.curstate.frame = RANDOM_LONG( 0, frameCount - 1 );
|
||||
pTemp->frameMax = frameCount - 1;
|
||||
pTemp->clientIndex = pEnt->index;
|
||||
|
||||
// because viewentity doesn't have a valid index
|
||||
if( pEnt->curstate.entityType == ET_VIEWENTITY )
|
||||
pTemp->clientIndex = GetLocalPlayer()->index;
|
||||
else pTemp->clientIndex = pEnt->index;
|
||||
|
||||
if( iAttachment > 0 )
|
||||
{
|
||||
// store attachment as baseline->body
|
||||
pTemp->entity.baseline.body = iAttachment;
|
||||
pTemp->flags |= FTENT_ATTACHMENT;
|
||||
}
|
||||
|
||||
if( index == 0 )
|
||||
{
|
||||
|
@ -1111,9 +1144,6 @@ void CTempEnts::MuzzleFlash( cl_entity_t *pEnt, int iAttachment, int type )
|
|||
pTemp->entity.curstate.scale = scale;
|
||||
pTemp->entity.angles[2] = RANDOM_LONG( 0, 359 );
|
||||
}
|
||||
|
||||
// render now (guranteed that muzzleflash will be draw)
|
||||
CL_AddEntity( &pTemp->entity, ET_TEMPENTITY, -1 );
|
||||
}
|
||||
|
||||
void CTempEnts::BloodSprite( const Vector &org, int colorIndex, int modelIndex, int modelIndex2, float size )
|
||||
|
@ -1224,11 +1254,11 @@ void CTempEnts::BreakModel( const Vector &pos, const Vector &size, const Vector
|
|||
}
|
||||
}
|
||||
|
||||
void CTempEnts::TempModel( const Vector &pos, const Vector &dir, const Vector &ang, float life, int modelIndex, int soundtype )
|
||||
TEMPENTITY *CTempEnts::TempModel( const Vector &pos, const Vector &dir, const Vector &ang, float life, int modelIndex, int soundtype )
|
||||
{
|
||||
// alloc a new tempent
|
||||
TEMPENTITY *pTemp = TempEntAlloc( pos, modelIndex );
|
||||
if( !pTemp ) return;
|
||||
if( !pTemp ) return NULL;
|
||||
|
||||
// keep track of shell type
|
||||
switch( soundtype )
|
||||
|
@ -1249,6 +1279,8 @@ void CTempEnts::TempModel( const Vector &pos, const Vector &dir, const Vector &a
|
|||
pTemp->entity.curstate.rendermode = kRenderNormal;
|
||||
pTemp->entity.baseline.renderamt = 255;
|
||||
pTemp->die = gpGlobals->time + life;
|
||||
|
||||
return pTemp;
|
||||
}
|
||||
|
||||
TEMPENTITY *CTempEnts::DefaultSprite( const Vector &pos, int spriteIndex, float framerate )
|
||||
|
@ -1570,7 +1602,7 @@ void CTempEnts::Large_Funnel( Vector pos, int spriteIndex, int flags )
|
|||
}
|
||||
}
|
||||
|
||||
void CTempEnts::DoSparks( const Vector& pos )
|
||||
void CTempEnts::SparkShower( const Vector& pos )
|
||||
{
|
||||
Vector m_vecPos, m_vecDir;
|
||||
|
||||
|
@ -1579,7 +1611,7 @@ void CTempEnts::DoSparks( const Vector& pos )
|
|||
m_vecPos.y = pos.y + RANDOM_FLOAT( -2, 2 );
|
||||
m_vecPos.z = pos.z + RANDOM_FLOAT( -2, 2 );
|
||||
|
||||
int modelIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/richo1.spr" );
|
||||
int modelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/richo1.spr" );
|
||||
RicochetSprite( m_vecPos, modelIndex, RANDOM_FLOAT( 0.4, 0.6f ));
|
||||
|
||||
// create a 8 random spakle tracers
|
||||
|
@ -1631,8 +1663,8 @@ void CTempEnts::PlaceDecal( Vector pos, int entityIndex, int decalIndex )
|
|||
|
||||
pEnt = GetEntityByIndex( entityIndex );
|
||||
if( pEnt ) modelIndex = pEnt->curstate.modelindex;
|
||||
hDecal = g_engfuncs.pEfxAPI->CL_DecalIndex( decalIndex );
|
||||
g_engfuncs.pEfxAPI->R_DecalShoot( hDecal, entityIndex, modelIndex, pos, 0 );
|
||||
hDecal = gEngfuncs.pEfxAPI->CL_DecalIndex( decalIndex );
|
||||
gEngfuncs.pEfxAPI->R_DecalShoot( hDecal, entityIndex, modelIndex, pos, 0 );
|
||||
}
|
||||
|
||||
void CTempEnts::PlaceDecal( Vector pos, int entityIndex, const char *decalname )
|
||||
|
@ -1643,8 +1675,8 @@ void CTempEnts::PlaceDecal( Vector pos, int entityIndex, const char *decalname )
|
|||
|
||||
pEnt = GetEntityByIndex( entityIndex );
|
||||
if( pEnt ) modelIndex = pEnt->curstate.modelindex;
|
||||
hDecal = g_engfuncs.pEfxAPI->CL_DecalIndexFromName( decalname );
|
||||
g_engfuncs.pEfxAPI->R_DecalShoot( hDecal, entityIndex, modelIndex, pos, 0 );
|
||||
hDecal = gEngfuncs.pEfxAPI->CL_DecalIndexFromName( decalname );
|
||||
gEngfuncs.pEfxAPI->R_DecalShoot( hDecal, entityIndex, modelIndex, pos, 0 );
|
||||
}
|
||||
|
||||
void CTempEnts::AllocDLight( Vector pos, byte r, byte g, byte b, float radius, float time, float decay )
|
||||
|
@ -1653,7 +1685,7 @@ void CTempEnts::AllocDLight( Vector pos, byte r, byte g, byte b, float radius, f
|
|||
|
||||
dlight_t *dl;
|
||||
|
||||
dl = g_engfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
dl = gEngfuncs.pEfxAPI->CL_AllocDLight( 0 );
|
||||
|
||||
dl->origin = pos;
|
||||
dl->die = gpGlobals->time + time;
|
||||
|
|
|
@ -6,11 +6,71 @@
|
|||
#ifndef R_TEMPENTS_H
|
||||
#define R_TEMPENTS_H
|
||||
|
||||
#include "effects_api.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: implementation for temp entities
|
||||
//-----------------------------------------------------------------------------
|
||||
#include "tmpent_def.h"
|
||||
#include "effects_api.h"
|
||||
|
||||
// TEMPENTITY priority
|
||||
#define TENTPRIORITY_LOW 0
|
||||
#define TENTPRIORITY_HIGH 1
|
||||
|
||||
// TEMPENTITY flags
|
||||
#define FTENT_NONE 0
|
||||
#define FTENT_SINEWAVE (1<<0)
|
||||
#define FTENT_GRAVITY (1<<1)
|
||||
#define FTENT_ROTATE (1<<2)
|
||||
#define FTENT_SLOWGRAVITY (1<<3)
|
||||
#define FTENT_SMOKETRAIL (1<<4)
|
||||
#define FTENT_COLLIDEWORLD (1<<5)
|
||||
#define FTENT_FLICKER (1<<6)
|
||||
#define FTENT_FADEOUT (1<<7)
|
||||
#define FTENT_SPRANIMATE (1<<8)
|
||||
#define FTENT_HITSOUND (1<<9)
|
||||
#define FTENT_SPIRAL (1<<10)
|
||||
#define FTENT_SPRCYCLE (1<<11)
|
||||
#define FTENT_COLLIDEALL (1<<12) // will collide with world and slideboxes
|
||||
#define FTENT_PERSIST (1<<13) // tent is not removed when unable to draw
|
||||
#define FTENT_COLLIDEKILL (1<<14) // tent is removed upon collision with anything
|
||||
#define FTENT_PLYRATTACHMENT (1<<15) // tent is attached to a player (owner)
|
||||
#define FTENT_SPRANIMATELOOP (1<<16) // animating sprite doesn't die when last frame is displayed
|
||||
#define FTENT_SCALE (1<<17) // an experiment
|
||||
#define FTENT_SPARKSHOWER (1<<18)
|
||||
#define FTENT_NOMODEL (1<<19) // sets by engine, never draw (it just triggers other things)
|
||||
#define FTENT_CLIENTCUSTOM (1<<20) // Must specify callback. Callback function is responsible
|
||||
// for killing tempent and updating fields
|
||||
// ( unless other flags specify how to do things )
|
||||
#define FTENT_WINDBLOWN (1<<21) // This is set when the temp entity is blown by the wind
|
||||
#define FTENT_NEVERDIE (1<<22) // Don't die as long as die != 0
|
||||
#define FTENT_BEOCCLUDED (1<<23) // Don't draw if my specified normal's facing away from the view
|
||||
#define FTENT_ATTACHMENT (1<<24) // This is a dynamically relinked attachment (update every frame)
|
||||
|
||||
typedef struct tempent_s TEMPENTITY;
|
||||
|
||||
struct tempent_s
|
||||
{
|
||||
int flags;
|
||||
float die;
|
||||
float frameMax; // this is also animtime for studiomodels
|
||||
float x, y, z; // probably z isn't used
|
||||
float fadeSpeed;
|
||||
float bounceFactor;
|
||||
int hitSound;
|
||||
void (*hitcallback)( struct tempent_s *ent, struct pmtrace_s *ptr );
|
||||
void (*callback)( struct tempent_s *ent, float frametime, float currenttime );
|
||||
TEMPENTITY *next;
|
||||
int priority; // 0 - low, 1 - high
|
||||
short clientIndex; // if attached, this is the index of the client to stick to
|
||||
// if COLLIDEALL, this is the index of the client to ignore
|
||||
// TENTS with FTENT_PLYRATTACHMENT MUST set the clientindex!
|
||||
vec3_t tentOffset; // if attached, client origin + tentOffset = tent origin.
|
||||
cl_entity_t entity;
|
||||
|
||||
// baseline.origin - velocity
|
||||
// baseline.renderamt - starting fadeout intensity
|
||||
// baseline.angles - angle velocity
|
||||
};
|
||||
|
||||
#define MAX_TEMP_ENTITIES 500
|
||||
#define TENT_WIND_ACCEL 50
|
||||
|
@ -33,7 +93,7 @@ public:
|
|||
void BloodSprite( const Vector &org, int colorIndex, int modelIndex, int modelIndex2, float size );
|
||||
void RicochetSprite( const Vector &pos, int modelIndex, float scale );
|
||||
void MuzzleFlash( cl_entity_t *pEnt, int iAttachment, int type );
|
||||
void TempModel( const Vector &pos, const Vector &dir, const Vector &ang, float life, int modelIndex, int soundtype );
|
||||
TEMPENTITY *TempModel( const Vector &pos, const Vector &dir, const Vector &ang, float life, int modelIndex, int soundtype );
|
||||
void BreakModel( const Vector &pos, const Vector &size, const Vector &dir, float random, float life, int count, int modelIndex, char flags );
|
||||
void Bubbles( const Vector &mins, const Vector &maxs, float height, int modelIndex, int count, float speed );
|
||||
void BubbleTrail( const Vector &start, const Vector &end, float height, int modelIndex, int count, float speed );
|
||||
|
@ -56,7 +116,7 @@ public:
|
|||
void AllocDLight( Vector pos, float radius, float time, float decay = 0.0f );
|
||||
void RocketTrail( Vector start, Vector end, int type );
|
||||
void Large_Funnel( Vector pos, int spriteIndex, int flags );
|
||||
void DoSparks( const Vector& pos );
|
||||
void SparkShower( const Vector& pos );
|
||||
void StreakSplash( const Vector &pos, const Vector &dir, int color, int count, int speed, int velMin, int velMax );
|
||||
// Data
|
||||
private:
|
||||
|
@ -78,7 +138,7 @@ public:
|
|||
TEMPENTITY *TempEntAllocNoModel( const Vector& org );
|
||||
TEMPENTITY *TempEntAlloc( const Vector& org, int modelindex );
|
||||
TEMPENTITY *TempEntAllocHigh( const Vector& org, int modelIndex );
|
||||
TEMPENTITY *TempEntAllocCustom( const Vector& org, int modelIndex, int high, ENTCALLBACK pfnCallback );
|
||||
TEMPENTITY *TempEntAllocCustom( const Vector& org, int modelIndex, int high, void ( *callback )( struct tempent_s *ent, float frametime, float currenttime ));
|
||||
|
||||
// misc utility shaders
|
||||
HSPRITE hSprGlowShell; // glowshell shader
|
||||
|
|
|
@ -43,7 +43,7 @@ static bool CullTracer( const Vector &start, const Vector &end )
|
|||
}
|
||||
|
||||
// check bbox
|
||||
if( g_engfuncs.pEfxAPI->R_CullBox( mins, maxs ) )
|
||||
if( gEngfuncs.pEfxAPI->R_CullBox( mins, maxs ) )
|
||||
return true; // culled
|
||||
|
||||
return false;
|
||||
|
@ -66,8 +66,8 @@ static bool Tracer_ComputeVerts( const Vector &pos, const Vector &delta, float w
|
|||
Vector screenStart, screenEnd;
|
||||
|
||||
// transform point into the screen space
|
||||
g_engfuncs.pTriAPI->WorldToScreen( (float *)start, screenStart );
|
||||
g_engfuncs.pTriAPI->WorldToScreen( (float *)end, screenEnd );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( (float *)start, screenStart );
|
||||
gEngfuncs.pTriAPI->WorldToScreen( (float *)end, screenEnd );
|
||||
|
||||
Vector tmp, normal;
|
||||
|
||||
|
@ -103,26 +103,26 @@ void Tracer_Draw( HSPRITE hSprite, Vector& start, Vector& delta, float width, by
|
|||
// NOTE: Gotta get the winding right so it's not backface culled
|
||||
// (we need to turn of backface culling for these bad boys)
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->RenderMode( kRenderTransTexture );
|
||||
if ( color ) g_engfuncs.pTriAPI->Color4ub( color[0], color[1], color[2], color[3] );
|
||||
else g_engfuncs.pTriAPI->Color4ub( 255, 255, 255, 255 );
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->RenderMode( kRenderTransTexture );
|
||||
if ( color ) gEngfuncs.pTriAPI->Color4ub( color[0], color[1], color[2], color[3] );
|
||||
else gEngfuncs.pTriAPI->Color4ub( 255, 255, 255, 255 );
|
||||
|
||||
g_engfuncs.pTriAPI->Bind( hSprite, 0 );
|
||||
g_engfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
gEngfuncs.pTriAPI->Bind( hSprite, 0 );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, endV );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( verts[2] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, endV );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( verts[2] );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, endV );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( verts[3] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, endV );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( verts[3] );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1.0f, startV );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( verts[1] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1.0f, startV );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( verts[1] );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.0f, startV );
|
||||
g_engfuncs.pTriAPI->Vertex3fv( verts[0] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.0f, startV );
|
||||
gEngfuncs.pTriAPI->Vertex3fv( verts[0] );
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
|
@ -147,8 +147,8 @@ void ProcessRain( void )
|
|||
vecEnd[2] = -4096;
|
||||
|
||||
pmtrace_t pmtrace;
|
||||
g_engfuncs.pEventAPI->EV_SetTraceHull( 2 );
|
||||
g_engfuncs.pEventAPI->EV_PlayerTrace( vecStart, vecStart + vecEnd, PM_STUDIO_IGNORE, -1, &pmtrace );
|
||||
gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
|
||||
gEngfuncs.pEventAPI->EV_PlayerTrace( vecStart, vecStart + vecEnd, PM_STUDIO_IGNORE, -1, &pmtrace );
|
||||
|
||||
if ( pmtrace.startsolid || pmtrace.allsolid )
|
||||
{
|
||||
|
@ -163,7 +163,7 @@ void ProcessRain( void )
|
|||
{
|
||||
// NOTE: in Xash3D PM_WaterEntity always return a valid water volume or NULL
|
||||
// so not needs to run additional checks here
|
||||
cl_entity_t *pWater = g_engfuncs.pfnWaterEntity( pmtrace.endpos );
|
||||
cl_entity_t *pWater = gEngfuncs.pfnWaterEntity( pmtrace.endpos );
|
||||
if ( pWater )
|
||||
{
|
||||
deathHeight = pWater->curstate.maxs[2];
|
||||
|
@ -506,7 +506,7 @@ void SetPoint( float x, float y, float z, float (*matrix)[4] )
|
|||
result.y = DotProduct( point, matrix[1] ) + matrix[1][3];
|
||||
result.z = DotProduct( point, matrix[2] ) + matrix[2][3];
|
||||
|
||||
g_engfuncs.pTriAPI->Vertex3f( result[0], result[1], result[2] );
|
||||
gEngfuncs.pTriAPI->Vertex3f( result[0], result[1], result[2] );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -526,14 +526,14 @@ void DrawRain( void )
|
|||
if ( gHUD.Rain.weatherMode == 0 )
|
||||
{
|
||||
// load rain sprite
|
||||
int modelIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/hi_rain.spr" );
|
||||
hsprDripTexture = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, 0 );
|
||||
int modelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/hi_rain.spr" );
|
||||
hsprDripTexture = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
// load snow sprite
|
||||
int modelIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/snowflake.spr" );
|
||||
hsprDripTexture = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, 0 );
|
||||
int modelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/snowflake.spr" );
|
||||
hsprDripTexture = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, 0 );
|
||||
}
|
||||
}
|
||||
if( hsprDripTexture <= 0 ) return;
|
||||
|
@ -541,10 +541,10 @@ void DrawRain( void )
|
|||
float visibleHeight = gHUD.Rain.globalHeight - SNOWFADEDIST;
|
||||
|
||||
// usual triapi stuff
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->Bind( hsprDripTexture, 0 );
|
||||
g_engfuncs.pTriAPI->RenderMode( kRenderTransAdd );
|
||||
g_engfuncs.pTriAPI->CullFace( TRI_NONE );
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Bind( hsprDripTexture, 0 );
|
||||
gEngfuncs.pTriAPI->RenderMode( kRenderTransAdd );
|
||||
gEngfuncs.pTriAPI->CullFace( TRI_NONE );
|
||||
|
||||
// go through drips list
|
||||
cl_drip *Drip = FirstChainDrip.p_Next;
|
||||
|
@ -568,19 +568,19 @@ void DrawRain( void )
|
|||
float shiftX = (Drip->xDelta / DRIPSPEED) * DRIP_SPRITE_HALFHEIGHT;
|
||||
float shiftY = (Drip->yDelta / DRIPSPEED) * DRIP_SPRITE_HALFHEIGHT;
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( 1.0, 1.0, 1.0, Drip->alpha );
|
||||
g_engfuncs.pTriAPI->Begin( TRI_TRIANGLES );
|
||||
gEngfuncs.pTriAPI->Color4f( 1.0, 1.0, 1.0, Drip->alpha );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_TRIANGLES );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0, 0 );
|
||||
g_engfuncs.pTriAPI->Vertex3f( Drip->origin[0]-toPlayer.y - shiftX, Drip->origin[1]+toPlayer.x - shiftY,Drip->origin[2] + DRIP_SPRITE_HALFHEIGHT );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0, 0 );
|
||||
gEngfuncs.pTriAPI->Vertex3f( Drip->origin[0]-toPlayer.y - shiftX, Drip->origin[1]+toPlayer.x - shiftY,Drip->origin[2] + DRIP_SPRITE_HALFHEIGHT );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0.5, 1 );
|
||||
g_engfuncs.pTriAPI->Vertex3f( Drip->origin[0] + shiftX, Drip->origin[1] + shiftY, Drip->origin[2]-DRIP_SPRITE_HALFHEIGHT );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0.5, 1 );
|
||||
gEngfuncs.pTriAPI->Vertex3f( Drip->origin[0] + shiftX, Drip->origin[1] + shiftY, Drip->origin[2]-DRIP_SPRITE_HALFHEIGHT );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1, 0 );
|
||||
g_engfuncs.pTriAPI->Vertex3f( Drip->origin[0]+toPlayer.y - shiftX, Drip->origin[1]-toPlayer.x - shiftY, Drip->origin[2]+DRIP_SPRITE_HALFHEIGHT);
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1, 0 );
|
||||
gEngfuncs.pTriAPI->Vertex3f( Drip->origin[0]+toPlayer.y - shiftX, Drip->origin[1]-toPlayer.x - shiftY, Drip->origin[2]+DRIP_SPRITE_HALFHEIGHT);
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->End();
|
||||
Drip = nextdDrip;
|
||||
}
|
||||
}
|
||||
|
@ -605,26 +605,26 @@ void DrawRain( void )
|
|||
// apply start fading effect
|
||||
float alpha = (Drip->origin[2] <= visibleHeight) ? Drip->alpha : ((gHUD.Rain.globalHeight - Drip->origin[2]) / (float)SNOWFADEDIST) * Drip->alpha;
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( 1.0, 1.0, 1.0, alpha );
|
||||
g_engfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
gEngfuncs.pTriAPI->Color4f( 1.0, 1.0, 1.0, alpha );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0, 0 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0, 0 );
|
||||
SetPoint( 0, SNOW_SPRITE_HALFSIZE, SNOW_SPRITE_HALFSIZE, matrix );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0, 1 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0, 1 );
|
||||
SetPoint( 0, SNOW_SPRITE_HALFSIZE, -SNOW_SPRITE_HALFSIZE, matrix );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1, 1 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1, 1 );
|
||||
SetPoint( 0, -SNOW_SPRITE_HALFSIZE, -SNOW_SPRITE_HALFSIZE, matrix );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1, 0 );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1, 0 );
|
||||
SetPoint( 0, -SNOW_SPRITE_HALFSIZE, SNOW_SPRITE_HALFSIZE, matrix );
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->End();
|
||||
Drip = nextdDrip;
|
||||
}
|
||||
}
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -643,16 +643,16 @@ void DrawFXObjects( void )
|
|||
if( hsprWaterRing == 0 ) // in case what we don't want search it if not found
|
||||
{
|
||||
// load water ring sprite
|
||||
int modelIndex = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/waterring.spr" );
|
||||
hsprWaterRing = g_engfuncs.pTriAPI->GetSpriteTexture( modelIndex, 0 );
|
||||
int modelIndex = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/waterring.spr" );
|
||||
hsprWaterRing = gEngfuncs.pTriAPI->GetSpriteTexture( modelIndex, 0 );
|
||||
}
|
||||
|
||||
if( hsprWaterRing <= 0 ) return; // don't waste time
|
||||
|
||||
g_engfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
g_engfuncs.pTriAPI->Bind( hsprWaterRing, 0 );
|
||||
g_engfuncs.pTriAPI->RenderMode( kRenderTransAdd );
|
||||
g_engfuncs.pTriAPI->CullFace( TRI_NONE );
|
||||
gEngfuncs.pTriAPI->Enable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Bind( hsprWaterRing, 0 );
|
||||
gEngfuncs.pTriAPI->RenderMode( kRenderTransAdd );
|
||||
gEngfuncs.pTriAPI->CullFace( TRI_NONE );
|
||||
|
||||
// go through objects list
|
||||
cl_rainfx* curFX = FirstChainFX.p_Next;
|
||||
|
@ -666,28 +666,28 @@ void DrawFXObjects( void )
|
|||
float color[3];
|
||||
|
||||
// UNDONE: calc lighting right
|
||||
g_engfuncs.pEfxAPI->R_LightForPoint( (const float *)curFX->origin, color );
|
||||
gEngfuncs.pEfxAPI->R_LightForPoint( (const float *)curFX->origin, color );
|
||||
// Con_Printf( "color %g %g %g\n", color[0], color[1], color[2] );
|
||||
|
||||
g_engfuncs.pTriAPI->Color4f( 0.4 + color[0], 0.4 + color[1], 0.4 + color[2], alpha );
|
||||
g_engfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
gEngfuncs.pTriAPI->Color4f( 0.4 + color[0], 0.4 + color[1], 0.4 + color[2], alpha );
|
||||
gEngfuncs.pTriAPI->Begin( TRI_QUADS );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0, 0 );
|
||||
g_engfuncs.pTriAPI->Vertex3f( curFX->origin[0] - size, curFX->origin[1] - size, curFX->origin[2] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0, 0 );
|
||||
gEngfuncs.pTriAPI->Vertex3f( curFX->origin[0] - size, curFX->origin[1] - size, curFX->origin[2] );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 0, 1 );
|
||||
g_engfuncs.pTriAPI->Vertex3f( curFX->origin[0] - size, curFX->origin[1] + size, curFX->origin[2] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 0, 1 );
|
||||
gEngfuncs.pTriAPI->Vertex3f( curFX->origin[0] - size, curFX->origin[1] + size, curFX->origin[2] );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1, 1 );
|
||||
g_engfuncs.pTriAPI->Vertex3f( curFX->origin[0] + size, curFX->origin[1] + size, curFX->origin[2] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1, 1 );
|
||||
gEngfuncs.pTriAPI->Vertex3f( curFX->origin[0] + size, curFX->origin[1] + size, curFX->origin[2] );
|
||||
|
||||
g_engfuncs.pTriAPI->TexCoord2f( 1, 0 );
|
||||
g_engfuncs.pTriAPI->Vertex3f( curFX->origin[0] + size, curFX->origin[1] - size, curFX->origin[2] );
|
||||
gEngfuncs.pTriAPI->TexCoord2f( 1, 0 );
|
||||
gEngfuncs.pTriAPI->Vertex3f( curFX->origin[0] + size, curFX->origin[1] - size, curFX->origin[2] );
|
||||
|
||||
g_engfuncs.pTriAPI->End();
|
||||
gEngfuncs.pTriAPI->End();
|
||||
curFX = nextFX;
|
||||
}
|
||||
g_engfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
gEngfuncs.pTriAPI->Disable( TRI_SHADER );
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -22,7 +22,7 @@ void EV_DrawBeam ( void )
|
|||
cl_entity_t *view = GetViewModel();
|
||||
|
||||
float life = 1.05; // animtime
|
||||
int m_iBeam = g_engfuncs.pEventAPI->EV_FindModelIndex( "sprites/plasma.spr" );
|
||||
int m_iBeam = gEngfuncs.pEventAPI->EV_FindModelIndex( "sprites/plasma.spr" );
|
||||
int idx = GetLocalPlayer()->index; // link with client
|
||||
|
||||
g_pViewRenderBeams->CreateBeamEnts( idx | 0x1000, idx | 0x2000, m_iBeam, life, 0.8, 0.5, 127, 0.6, 0, 10, 20, 100, 0 );
|
||||
|
@ -42,7 +42,7 @@ void EV_EjectShell( const mstudioevent_t *event, cl_entity_t *entity )
|
|||
|
||||
float fR, fU;
|
||||
|
||||
int shell = g_engfuncs.pEventAPI->EV_FindModelIndex( event->options );
|
||||
int shell = gEngfuncs.pEventAPI->EV_FindModelIndex( event->options );
|
||||
origin.z = origin.z - entity->curstate.usehull ? 12 : 28;
|
||||
|
||||
for( int j = 0; j < 3; j++ )
|
||||
|
|
|
@ -232,6 +232,36 @@ void AngleMatrix( const vec3_t angles, float (*matrix)[4] )
|
|||
matrix[2][3] = 0.0;
|
||||
}
|
||||
|
||||
// g-cont. copied here from pm_math.cpp
|
||||
void VectorAngles( const Vector &forward, Vector &angles )
|
||||
{
|
||||
float tmp, yaw, pitch;
|
||||
|
||||
if (forward[1] == 0 && forward[0] == 0)
|
||||
{
|
||||
yaw = 0;
|
||||
if (forward[2] > 0)
|
||||
pitch = 90;
|
||||
else
|
||||
pitch = 270;
|
||||
}
|
||||
else
|
||||
{
|
||||
yaw = (atan2(forward[1], forward[0]) * 180 / M_PI);
|
||||
if (yaw < 0)
|
||||
yaw += 360;
|
||||
|
||||
tmp = sqrt (forward[0]*forward[0] + forward[1]*forward[1]);
|
||||
pitch = (atan2(forward[2], tmp) * 180 / M_PI);
|
||||
if (pitch < 0)
|
||||
pitch += 360;
|
||||
}
|
||||
|
||||
angles[0] = pitch;
|
||||
angles[1] = yaw;
|
||||
angles[2] = 0;
|
||||
}
|
||||
|
||||
//
|
||||
// hl2 fade - this supports multiple fading
|
||||
// FIXME: make Class CHudFade instead of C-style code?
|
||||
|
@ -436,13 +466,13 @@ UTIL_Probe
|
|||
client explosion utility
|
||||
====================
|
||||
*/
|
||||
float UTIL_Probe( const Vector &origin, Vector *vecDirection, float strength )
|
||||
float UTIL_Probe( Vector &origin, Vector *vecDirection, float strength )
|
||||
{
|
||||
// press out
|
||||
Vector endpos = origin + (( *vecDirection ) * strength );
|
||||
|
||||
// Trace into the world
|
||||
pmtrace_t *trace = g_engfuncs.PM_TraceLine( origin, endpos, PM_TRACELINE_PHYSENTSONLY, 2, -1 );
|
||||
pmtrace_t *trace = gEngfuncs.PM_TraceLine( origin, endpos, PM_TRACELINE_PHYSENTSONLY, 2, -1 );
|
||||
|
||||
// push back a proportional amount to the probe
|
||||
(*vecDirection) = -(*vecDirection) * (1.0f - trace->fraction);
|
||||
|
@ -453,7 +483,7 @@ float UTIL_Probe( const Vector &origin, Vector *vecDirection, float strength )
|
|||
return (1.0f - trace->fraction);
|
||||
}
|
||||
|
||||
void UTIL_GetForceDirection( const Vector &origin, float magnitude, Vector *resultDirection, float *resultForce )
|
||||
void UTIL_GetForceDirection( Vector &origin, float magnitude, Vector *resultDirection, float *resultForce )
|
||||
{
|
||||
Vector d[6];
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#ifndef UTILS_H
|
||||
#define UTILS_H
|
||||
|
||||
extern cl_enginefuncs_t g_engfuncs;
|
||||
extern cl_enginefuncs_t gEngfuncs;
|
||||
|
||||
#include "event_api.h"
|
||||
#include "enginecallback.h"
|
||||
|
@ -38,7 +38,7 @@ void DBG_AssertFunction( BOOL fExpr, const char* szExpr, const char* szFile, int
|
|||
#ifdef _DEBUG
|
||||
#define GetEntityByIndex(e) DBG_GetEntityByIndex( e, __FILE__, __LINE__ )
|
||||
#else
|
||||
#define GetEntityByIndex (*g_engfuncs.pfnGetEntityByIndex)
|
||||
#define GetEntityByIndex (*gEngfuncs.pfnGetEntityByIndex)
|
||||
#endif
|
||||
|
||||
extern DLL_GLOBAL const Vector g_vecZero;
|
||||
|
@ -90,7 +90,7 @@ typedef struct dllfunction_s
|
|||
#include "cvardef.h"
|
||||
|
||||
// macros to hook function calls into the HUD object
|
||||
#define HOOK_MESSAGE( x ) (*g_engfuncs.pfnHookUserMsg)( #x, __MsgFunc_##x );
|
||||
#define HOOK_MESSAGE( x ) (*gEngfuncs.pfnHookUserMsg)( #x, __MsgFunc_##x );
|
||||
|
||||
#define DECLARE_MESSAGE( y, x ) int __MsgFunc_##x(const char *pszName, int iSize, void *pbuf) \
|
||||
{ \
|
||||
|
@ -102,7 +102,7 @@ typedef struct dllfunction_s
|
|||
return gHUD.MsgFunc_##x(pszName, iSize, pbuf ); \
|
||||
}
|
||||
|
||||
#define HOOK_COMMAND( x, y ) (*g_engfuncs.pfnAddCommand)( x, __CmdFunc_##y, "user-defined command" );
|
||||
#define HOOK_COMMAND( x, y ) (*gEngfuncs.pfnAddCommand)( x, __CmdFunc_##y, "user-defined command" );
|
||||
#define DECLARE_HUDCOMMAND( x ) void __CmdFunc_##x( void ) \
|
||||
{ \
|
||||
gHUD.UserCmd_##x( ); \
|
||||
|
@ -195,7 +195,7 @@ inline int ConsoleStringLen( const char *string )
|
|||
inline cl_entity_t *DBG_GetEntityByIndex( int entnum, const char *file, const int line )
|
||||
{
|
||||
DBG_AssertFunction(( entnum >= 0 && entnum < gpGlobals->numEntities ), "Invalid entnum", file, line, NULL );
|
||||
return (*g_engfuncs.pfnGetEntityByIndex)( entnum );
|
||||
return (*gEngfuncs.pfnGetEntityByIndex)( entnum );
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -214,8 +214,7 @@ extern float READ_HIRESANGLE( void );
|
|||
extern void END_READ( void );
|
||||
|
||||
// misc utilities
|
||||
extern float UTIL_Probe( const Vector &origin, Vector *vecDirection, float strength );
|
||||
extern void UTIL_GetForceDirection( const Vector &origin, float magnitude, Vector *resultDirection, float *resultForce );
|
||||
extern void UTIL_GetForceDirection( Vector &origin, float magnitude, Vector *resultDirection, float *resultForce );
|
||||
extern void RotatePointAroundVector( Vector &dst, const Vector &dir, const Vector &point, float degrees );
|
||||
|
||||
// client fade
|
||||
|
@ -236,6 +235,7 @@ extern void Tracer_Draw( HSPRITE hSpr, Vector& start, Vector& delta, float width
|
|||
|
||||
// mathlib
|
||||
extern void AngleMatrix( const vec3_t angles, float (*matrix)[4] );
|
||||
extern void VectorAngles( const Vector &forward, Vector &angles );
|
||||
|
||||
// from cl_view.c
|
||||
extern void DrawProgressBar( void );
|
||||
|
|
|
@ -116,30 +116,30 @@ void V_PunchAxis( int axis, float punch )
|
|||
//==========================
|
||||
void V_Init( void )
|
||||
{
|
||||
scr_ofsx = g_engfuncs.pfnRegisterVariable( "scr_ofsx", "0", 0, "screen offset by X" );
|
||||
scr_ofsy = g_engfuncs.pfnRegisterVariable( "scr_ofsy", "0", 0, "screen offset by Y" );
|
||||
scr_ofsz = g_engfuncs.pfnRegisterVariable( "scr_ofsz", "0", 0, "screen offset by Z" );
|
||||
r_studio_lerping = g_engfuncs.pfnRegisterVariable( "r_studio_lerping", "1", FCVAR_ARCHIVE, "enables studio model animation lerping" ); // get copy of engine cvar
|
||||
scr_ofsx = gEngfuncs.pfnRegisterVariable( "scr_ofsx", "0", 0, "screen offset by X" );
|
||||
scr_ofsy = gEngfuncs.pfnRegisterVariable( "scr_ofsy", "0", 0, "screen offset by Y" );
|
||||
scr_ofsz = gEngfuncs.pfnRegisterVariable( "scr_ofsz", "0", 0, "screen offset by Z" );
|
||||
r_studio_lerping = gEngfuncs.pfnRegisterVariable( "r_studio_lerping", "1", FCVAR_ARCHIVE, "enables studio model animation lerping" ); // get copy of engine cvar
|
||||
|
||||
cl_vsmoothing = g_engfuncs.pfnRegisterVariable( "cl_vsmoothing", "0.05", 0, "enables lepring in multiplayer" );
|
||||
cl_stairsmooth = g_engfuncs.pfnRegisterVariable( "cl_vstairsmooth", "100", FCVAR_ARCHIVE, "how fast your view moves upward/downward when running up/down stairs" );
|
||||
cl_vsmoothing = gEngfuncs.pfnRegisterVariable( "cl_vsmoothing", "0.05", 0, "enables lepring in multiplayer" );
|
||||
cl_stairsmooth = gEngfuncs.pfnRegisterVariable( "cl_vstairsmooth", "100", FCVAR_ARCHIVE, "how fast your view moves upward/downward when running up/down stairs" );
|
||||
|
||||
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" );
|
||||
v_ipitch_cycle = g_engfuncs.pfnRegisterVariable( "v_ipitch_cycle", "1", 0, "viewing inverse pitch cycle" );
|
||||
v_iyaw_level = g_engfuncs.pfnRegisterVariable( "v_iyaw_level", "0.3", 0, "viewing inverse yaw level" );
|
||||
v_iroll_level = g_engfuncs.pfnRegisterVariable( "v_iroll_level", "0.1", 0, "viewing inverse roll level" );
|
||||
v_ipitch_level = g_engfuncs.pfnRegisterVariable( "v_iyaw_level", "0.3", 0, "viewing inverse pitch level" );
|
||||
v_dark = g_engfuncs.pfnRegisterVariable( "v_dark", "0", 0, "gross hack to make first frame black. half-life legacy" );
|
||||
v_iyaw_cycle = gEngfuncs.pfnRegisterVariable( "v_iyaw_cycle", "2", 0, "viewing inverse yaw cycle" );
|
||||
v_iroll_cycle = gEngfuncs.pfnRegisterVariable( "v_iroll_cycle", "0.5", 0, "viewing inverse roll cycle" );
|
||||
v_ipitch_cycle = gEngfuncs.pfnRegisterVariable( "v_ipitch_cycle", "1", 0, "viewing inverse pitch cycle" );
|
||||
v_iyaw_level = gEngfuncs.pfnRegisterVariable( "v_iyaw_level", "0.3", 0, "viewing inverse yaw level" );
|
||||
v_iroll_level = gEngfuncs.pfnRegisterVariable( "v_iroll_level", "0.1", 0, "viewing inverse roll level" );
|
||||
v_ipitch_level = gEngfuncs.pfnRegisterVariable( "v_iyaw_level", "0.3", 0, "viewing inverse pitch level" );
|
||||
v_dark = gEngfuncs.pfnRegisterVariable( "v_dark", "0", 0, "gross hack to make first frame black. half-life legacy" );
|
||||
|
||||
cl_weaponlag = g_engfuncs.pfnRegisterVariable( "v_viewmodel_lag", "0.0", FCVAR_ARCHIVE, "add some lag to viewmodel like in HL2" );
|
||||
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" );
|
||||
cl_bobup = g_engfuncs.pfnRegisterVariable( "cl_bobup", "0.5", 0, "bob upper limit" );
|
||||
cl_waterdist = g_engfuncs.pfnRegisterVariable( "cl_waterdist", "4", 0, "distance between viewofs and water plane" );
|
||||
cl_chasedist = g_engfuncs.pfnRegisterVariable( "cl_chasedist", "112", 0, "max distance to chase camera" );
|
||||
g_engfuncs.pfnAddCommand( "thirdperson", V_ThirdPerson, "change camera to thirdperson" );
|
||||
g_engfuncs.pfnAddCommand( "firstperson", V_FirstPerson, "change camera to firstperson" );
|
||||
cl_weaponlag = gEngfuncs.pfnRegisterVariable( "v_viewmodel_lag", "0.0", FCVAR_ARCHIVE, "add some lag to viewmodel like in HL2" );
|
||||
cl_bobcycle = gEngfuncs.pfnRegisterVariable( "cl_bobcycle","0.8", 0, "bob full cycle" );
|
||||
cl_bob = gEngfuncs.pfnRegisterVariable( "cl_bob", "0.01", 0, "bob value" );
|
||||
cl_bobup = gEngfuncs.pfnRegisterVariable( "cl_bobup", "0.5", 0, "bob upper limit" );
|
||||
cl_waterdist = gEngfuncs.pfnRegisterVariable( "cl_waterdist", "4", 0, "distance between viewofs and water plane" );
|
||||
cl_chasedist = gEngfuncs.pfnRegisterVariable( "cl_chasedist", "112", 0, "max distance to chase camera" );
|
||||
gEngfuncs.pfnAddCommand( "thirdperson", V_ThirdPerson, "change camera to thirdperson" );
|
||||
gEngfuncs.pfnAddCommand( "firstperson", V_FirstPerson, "change camera to firstperson" );
|
||||
}
|
||||
|
||||
//==========================
|
||||
|
@ -364,7 +364,7 @@ void V_PreRender( ref_params_t *pparams )
|
|||
void V_CalcGlobalFog( ref_params_t *pparams )
|
||||
{
|
||||
int bOn = (pparams->waterlevel < 2) && (gHUD.m_flStartDist > 0) && (gHUD.m_flEndDist > 0 && gHUD.m_flStartDist);
|
||||
g_engfuncs.pTriAPI->Fog( gHUD.m_vecFogColor, gHUD.m_flStartDist, gHUD.m_flEndDist, bOn );
|
||||
gEngfuncs.pTriAPI->Fog( gHUD.m_vecFogColor, gHUD.m_flStartDist, gHUD.m_flEndDist, bOn );
|
||||
}
|
||||
|
||||
//==========================
|
||||
|
@ -488,7 +488,7 @@ void V_GetChaseOrigin( Vector angles, Vector origin, float distance, Vector &res
|
|||
|
||||
while( maxLoops > 0 )
|
||||
{
|
||||
trace = g_engfuncs.PM_TraceLine( vecStart, vecEnd, PM_TRACELINE_PHYSENTSONLY, 2, ignoreent );
|
||||
trace = gEngfuncs.PM_TraceLine( vecStart, vecEnd, PM_TRACELINE_PHYSENTSONLY, 2, ignoreent );
|
||||
if( trace->ent <= 0 ) break; // we hit the world or nothing, stop trace
|
||||
|
||||
ent = GetEntityByIndex( PM_GetPhysEntInfo( trace->ent ));
|
||||
|
@ -767,7 +767,7 @@ float V_CalcWaterLevel( ref_params_t *pparams )
|
|||
float waterDist = cl_waterdist->value;
|
||||
Vector point;
|
||||
|
||||
cl_entity_t *pwater = g_engfuncs.pfnWaterEntity( pparams->simorg );
|
||||
cl_entity_t *pwater = gEngfuncs.pfnWaterEntity( pparams->simorg );
|
||||
if( pwater ) waterDist += ( pwater->curstate.scale * 16 );
|
||||
|
||||
point = pparams->vieworg;
|
||||
|
|
|
@ -6,14 +6,11 @@
|
|||
#define CLGAME_API_H
|
||||
|
||||
typedef int HSPRITE; // handle to a graphic
|
||||
typedef struct tempent_s TEMPENTITY;
|
||||
typedef struct dlight_s dlight_t;
|
||||
typedef struct usercmd_s usercmd_t;
|
||||
typedef struct skyportal_s skyportal_t;
|
||||
typedef struct ref_params_s ref_params_t;
|
||||
typedef struct mstudioevent_s mstudioevent_t;
|
||||
typedef void (*ENTCALLBACK)( TEMPENTITY *ent );
|
||||
typedef void (*HITCALLBACK)( TEMPENTITY *ent, struct pmtrace_s *ptr );
|
||||
typedef int (*pfnUserMsgHook)( const char *pszName, int iSize, void *pbuf ); // user message handle
|
||||
|
||||
#include "wrect.h"
|
||||
|
@ -203,9 +200,9 @@ typedef struct cl_enginefuncs_s
|
|||
float (*pfnGetClientTime)( void ); // can use gpGlobals->time instead
|
||||
void (*pfnFadeClientVolume)( float fadePercent, float fadeOutSeconds, float holdTime, float fadeInSeconds ); // was V_CalcShake
|
||||
|
||||
int (*pfnPointContents)( const float *rgflPos, int *truecontents );
|
||||
int (*PM_PointContents)( const float *rgflPos, int *truecontents );
|
||||
struct cl_entity_s *(*pfnWaterEntity)( const float *rgflPos );
|
||||
struct pmtrace_s *(*PM_TraceLine)( const float *start, const float *end, int flags, int usehull, int ignore_pe );
|
||||
struct pmtrace_s *(*PM_TraceLine)( float *start, float *end, int flags, int usehull, int ignore_pe );
|
||||
|
||||
modtype_t (*pfnGetModelType)( int modelIndex );
|
||||
void (*pfnGetModBounds)( int modelIndex, float *mins, float *maxs );
|
||||
|
|
|
@ -156,7 +156,7 @@ typedef struct local_state_s
|
|||
{
|
||||
entity_state_t playerstate;
|
||||
clientdata_t client;
|
||||
weapon_data_t weapondata[32]; // WEAPON_BACKUP
|
||||
weapon_data_t weapondata[32]; // store 32 weapons
|
||||
} local_state_t;
|
||||
|
||||
#endif//ENTITY_STATE_H
|
|
@ -49,7 +49,7 @@ typedef struct event_api_s
|
|||
void (*EV_WeaponAnimation)( int sequence, int body );
|
||||
word (*EV_PrecacheEvent)( int type, const char* psz );
|
||||
void (*EV_PlaybackEvent)( int flags, const struct cl_entity_s *pInvoker, word eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2 );
|
||||
const char *(*EV_TraceTexture)( int ground, const float *v1, const float *v2 );
|
||||
const char *(*EV_TraceTexture)( int ground, float *vstart, float *vend );
|
||||
void (*EV_StopAllSounds)( int ent, int entchannel );
|
||||
void (*EV_KillEvents)( int entnum, const char *eventname );
|
||||
} event_api_t;
|
||||
|
|
|
@ -1055,9 +1055,6 @@ int AddToFullPack( struct entity_state_s *state, int e, edict_t *ent, edict_t *h
|
|||
// Copy state data
|
||||
//
|
||||
|
||||
#ifdef DEBUG
|
||||
strncpy( state->classname, STRING( ent->v.classname ), sizeof( state->classname ));
|
||||
#endif
|
||||
// Round animtime to nearest millisecond
|
||||
state->animtime = (int)(1000.0 * ent->v.animtime ) / 1000.0;
|
||||
|
||||
|
@ -1170,6 +1167,9 @@ Creates baselines used for network encoding, especially for player data since pl
|
|||
void CreateBaseline( int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs )
|
||||
{
|
||||
#ifdef DEBUG
|
||||
// NOTE: edit delta.lst if you want to get it work: add new field
|
||||
// DEFINE_DELTA( classname, DT_STRING, 1, 1.0 ),
|
||||
// into Entity_Encode, Player_Encode and Custom_Encode structures
|
||||
strncpy( baseline->classname, STRING( entity->v.classname ), sizeof( baseline->classname ));
|
||||
#endif
|
||||
baseline->origin = entity->v.origin;
|
||||
|
|
|
@ -152,6 +152,13 @@ void CCrowbar::PrimaryAttack()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void CCrowbar::Smack( )
|
||||
{
|
||||
DecalGunshot( &m_trHit, BULLET_PLAYER_CROWBAR );
|
||||
}
|
||||
|
||||
|
||||
void CCrowbar::SwingAgain( void )
|
||||
{
|
||||
Swing( 0 );
|
||||
|
@ -201,6 +208,10 @@ int CCrowbar::Swing( int fFirst )
|
|||
{
|
||||
if ( fFirst )
|
||||
{
|
||||
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrowbar,
|
||||
0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0,
|
||||
0.0, 0, 0.0 );
|
||||
|
||||
// miss
|
||||
m_flNextPrimaryAttack = m_pPlayer->WeaponTimeBase() + 0.5;
|
||||
|
||||
|
@ -210,6 +221,16 @@ int CCrowbar::Swing( int fFirst )
|
|||
}
|
||||
else
|
||||
{
|
||||
switch( ((m_iSwing++) % 2) + 1 )
|
||||
{
|
||||
case 0:
|
||||
SendWeaponAnim( CROWBAR_ATTACK1HIT ); break;
|
||||
case 1:
|
||||
SendWeaponAnim( CROWBAR_ATTACK2HIT ); break;
|
||||
case 2:
|
||||
SendWeaponAnim( CROWBAR_ATTACK3HIT ); break;
|
||||
}
|
||||
|
||||
// player "shoot" animation
|
||||
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
|
||||
|
||||
|
@ -241,15 +262,19 @@ int CCrowbar::Swing( int fFirst )
|
|||
{
|
||||
if ( pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE )
|
||||
{
|
||||
bHit = TRUE;//play hitbody sound on client
|
||||
// play thwack or smack sound
|
||||
switch( RANDOM_LONG(0,2) )
|
||||
{
|
||||
case 0:
|
||||
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod1.wav", 1, ATTN_NORM); break;
|
||||
case 1:
|
||||
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod2.wav", 1, ATTN_NORM); break;
|
||||
case 2:
|
||||
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1, ATTN_NORM); break;
|
||||
}
|
||||
m_pPlayer->m_iWeaponVolume = CROWBAR_BODYHIT_VOLUME;
|
||||
if ( !pEntity->IsAlive() )
|
||||
{
|
||||
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrowbar,
|
||||
0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0,
|
||||
fFirst, bHit, 0 );
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
else
|
||||
flVol = 0.1;
|
||||
|
||||
|
@ -257,15 +282,45 @@ int CCrowbar::Swing( int fFirst )
|
|||
}
|
||||
}
|
||||
|
||||
// play texture hit sound
|
||||
// UNDONE: Calculate the correct point of intersection when we hit with the hull instead of the line
|
||||
|
||||
if (fHitWorld)
|
||||
{
|
||||
float fvolbar = TEXTURETYPE_PlaySound(&tr, vecSrc, vecSrc + (vecEnd-vecSrc)*2, BULLET_PLAYER_CROWBAR);
|
||||
|
||||
if ( g_pGameRules->IsMultiplayer() )
|
||||
{
|
||||
// override the volume here, cause we don't play texture sounds in multiplayer,
|
||||
// and fvolbar is going to be 0 from the above call.
|
||||
|
||||
fvolbar = 1;
|
||||
}
|
||||
|
||||
// also play crowbar strike
|
||||
switch( RANDOM_LONG(0,1) )
|
||||
{
|
||||
case 0:
|
||||
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hit1.wav", fvolbar, ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));
|
||||
break;
|
||||
case 1:
|
||||
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hit2.wav", fvolbar, ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));
|
||||
break;
|
||||
}
|
||||
|
||||
// delay the decal a bit
|
||||
m_trHit = tr;
|
||||
}
|
||||
|
||||
m_pPlayer->m_iWeaponVolume = flVol * CROWBAR_WALLHIT_VOLUME;
|
||||
#endif
|
||||
m_flNextPrimaryAttack = m_pPlayer->WeaponTimeBase() + 0.25;
|
||||
|
||||
SetThink( Smack );
|
||||
pev->nextthink = m_pPlayer->WeaponTimeBase() + 0.2;
|
||||
|
||||
|
||||
}
|
||||
|
||||
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usCrowbar,
|
||||
0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0,
|
||||
fFirst, bHit, 0 );
|
||||
|
||||
return fDidHit;
|
||||
}
|
||||
|
||||
|
|
|
@ -465,7 +465,6 @@ void CEgon::CreateEffect( void )
|
|||
|
||||
void CEgon::DestroyEffect( void )
|
||||
{
|
||||
|
||||
#ifndef CLIENT_DLL
|
||||
if ( m_pBeam )
|
||||
{
|
||||
|
@ -486,7 +485,6 @@ void CEgon::DestroyEffect( void )
|
|||
m_pSprite = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -184,6 +184,17 @@ void CGauss::SecondaryAttack()
|
|||
return;
|
||||
}
|
||||
|
||||
int flags;
|
||||
|
||||
if( IsLocalWeapon( ))
|
||||
{
|
||||
flags = FEV_NOTHOST;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = 0;
|
||||
}
|
||||
|
||||
if ( m_fInAttack == 0 )
|
||||
{
|
||||
if ( m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0 )
|
||||
|
@ -207,7 +218,7 @@ void CGauss::SecondaryAttack()
|
|||
m_pPlayer->m_flStartCharge = gpGlobals->time;
|
||||
m_pPlayer->m_flAmmoStartCharge = m_pPlayer->WeaponTimeBase() + GetFullChargeTime();
|
||||
|
||||
PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 110, 0, 0, 0 );
|
||||
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, 110, 0, 0, 0 );
|
||||
|
||||
m_iSoundState = SND_CHANGE_PITCH;
|
||||
}
|
||||
|
@ -261,7 +272,7 @@ void CGauss::SecondaryAttack()
|
|||
if ( m_iSoundState == 0 )
|
||||
ALERT( at_console, "sound state %d\n", m_iSoundState );
|
||||
|
||||
PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, pitch, 0, ( m_iSoundState == SND_CHANGE_PITCH ) ? 1 : 0, 0 );
|
||||
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usGaussSpin, 0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0.0, 0.0, pitch, 0, ( m_iSoundState == SND_CHANGE_PITCH ) ? 1 : 0, 0 );
|
||||
|
||||
m_iSoundState = SND_CHANGE_PITCH; // hack for going through level transitions
|
||||
|
||||
|
@ -372,15 +383,25 @@ void CGauss::Fire( Vector vecOrigSrc, Vector vecDir, float flDamage )
|
|||
if ( m_fPrimaryFire == false )
|
||||
g_irunninggausspred = true;
|
||||
#endif
|
||||
|
||||
int flags;
|
||||
|
||||
if( IsLocalWeapon( ))
|
||||
{
|
||||
flags = FEV_NOTHOST;
|
||||
}
|
||||
else
|
||||
{
|
||||
flags = 0;
|
||||
}
|
||||
|
||||
// The main firing event is sent unreliably so it won't be delayed.
|
||||
PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usGaussFire, 0.0, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, flDamage, 0.0, 0, 0, m_fPrimaryFire ? 1 : 0, 0 );
|
||||
PLAYBACK_EVENT_FULL( flags, m_pPlayer->edict(), m_usGaussFire, 0.0, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, flDamage, 0.0, 0, 0, m_fPrimaryFire ? 1 : 0, 0 );
|
||||
|
||||
// This reliable event is used to stop the spinning sound
|
||||
// It's delayed by a fraction of second to make sure it is delayed by 1 frame on the client
|
||||
// It's sent reliably anyway, which could lead to other delays
|
||||
|
||||
PLAYBACK_EVENT_FULL( FEV_NOTHOST | FEV_RELIABLE, m_pPlayer->edict(), m_usGaussFire, 0.01, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, 0.0, 0.0, 0, 0, 0, 1 );
|
||||
PLAYBACK_EVENT_FULL( flags | FEV_RELIABLE, m_pPlayer->edict(), m_usGaussFire, 0.01, (float *)&m_pPlayer->pev->origin, (float *)&m_pPlayer->pev->angles, 0.0, 0.0, 0, 0, 0, 1 );
|
||||
|
||||
|
||||
/*ALERT( at_console, "%f %f %f\n%f %f %f\n",
|
||||
|
|
347
dlls/hl.plg
347
dlls/hl.plg
|
@ -1,347 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: hl - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP562.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\dlls" /I "..\common" /I "..\game_shared" /I "..\\" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\hl\!debug/" /Fo"..\temp\hl\!debug/" /Fd"..\temp\hl\!debug/" /FD /c
|
||||
"D:\Xash3D\src_main\dlls\aflock.cpp"
|
||||
"D:\Xash3D\src_main\dlls\agrunt.cpp"
|
||||
"D:\Xash3D\src_main\dlls\airtank.cpp"
|
||||
"D:\Xash3D\src_main\dlls\animating.cpp"
|
||||
"D:\Xash3D\src_main\dlls\animation.cpp"
|
||||
"D:\Xash3D\src_main\dlls\apache.cpp"
|
||||
"D:\Xash3D\src_main\dlls\barnacle.cpp"
|
||||
"D:\Xash3D\src_main\dlls\barney.cpp"
|
||||
"D:\Xash3D\src_main\dlls\bigmomma.cpp"
|
||||
"D:\Xash3D\src_main\dlls\bloater.cpp"
|
||||
"D:\Xash3D\src_main\dlls\bmodels.cpp"
|
||||
"D:\Xash3D\src_main\dlls\bullsquid.cpp"
|
||||
"D:\Xash3D\src_main\dlls\buttons.cpp"
|
||||
"D:\Xash3D\src_main\dlls\cbase.cpp"
|
||||
"D:\Xash3D\src_main\dlls\client.cpp"
|
||||
"D:\Xash3D\src_main\dlls\combat.cpp"
|
||||
"D:\Xash3D\src_main\dlls\controller.cpp"
|
||||
"D:\Xash3D\src_main\dlls\crossbow.cpp"
|
||||
"D:\Xash3D\src_main\dlls\crowbar.cpp"
|
||||
"D:\Xash3D\src_main\dlls\defaultai.cpp"
|
||||
"D:\Xash3D\src_main\dlls\doors.cpp"
|
||||
"D:\Xash3D\src_main\dlls\effects.cpp"
|
||||
"D:\Xash3D\src_main\dlls\egon.cpp"
|
||||
"D:\Xash3D\src_main\dlls\explode.cpp"
|
||||
"D:\Xash3D\src_main\dlls\flyingmonster.cpp"
|
||||
"D:\Xash3D\src_main\dlls\func_break.cpp"
|
||||
"D:\Xash3D\src_main\dlls\func_tank.cpp"
|
||||
"D:\Xash3D\src_main\dlls\game.cpp"
|
||||
"D:\Xash3D\src_main\dlls\gamerules.cpp"
|
||||
"D:\Xash3D\src_main\dlls\gargantua.cpp"
|
||||
"D:\Xash3D\src_main\dlls\gauss.cpp"
|
||||
"D:\Xash3D\src_main\dlls\genericmonster.cpp"
|
||||
"D:\Xash3D\src_main\dlls\ggrenade.cpp"
|
||||
"D:\Xash3D\src_main\dlls\globals.cpp"
|
||||
"D:\Xash3D\src_main\dlls\glock.cpp"
|
||||
"D:\Xash3D\src_main\dlls\gman.cpp"
|
||||
"D:\Xash3D\src_main\dlls\h_ai.cpp"
|
||||
"D:\Xash3D\src_main\dlls\h_battery.cpp"
|
||||
"D:\Xash3D\src_main\dlls\h_cine.cpp"
|
||||
"D:\Xash3D\src_main\dlls\h_cycler.cpp"
|
||||
"D:\Xash3D\src_main\dlls\h_export.cpp"
|
||||
"D:\Xash3D\src_main\dlls\handgrenade.cpp"
|
||||
"D:\Xash3D\src_main\dlls\hassassin.cpp"
|
||||
"D:\Xash3D\src_main\dlls\headcrab.cpp"
|
||||
"D:\Xash3D\src_main\dlls\healthkit.cpp"
|
||||
"D:\Xash3D\src_main\dlls\hgrunt.cpp"
|
||||
"D:\Xash3D\src_main\dlls\hornet.cpp"
|
||||
"D:\Xash3D\src_main\dlls\hornetgun.cpp"
|
||||
"D:\Xash3D\src_main\dlls\houndeye.cpp"
|
||||
"D:\Xash3D\src_main\dlls\ichthyosaur.cpp"
|
||||
"D:\Xash3D\src_main\dlls\islave.cpp"
|
||||
"D:\Xash3D\src_main\dlls\items.cpp"
|
||||
"D:\Xash3D\src_main\dlls\leech.cpp"
|
||||
"D:\Xash3D\src_main\dlls\lights.cpp"
|
||||
"D:\Xash3D\src_main\dlls\maprules.cpp"
|
||||
"D:\Xash3D\src_main\dlls\monstermaker.cpp"
|
||||
"D:\Xash3D\src_main\dlls\monsters.cpp"
|
||||
"D:\Xash3D\src_main\dlls\monsterstate.cpp"
|
||||
"D:\Xash3D\src_main\dlls\mortar.cpp"
|
||||
"D:\Xash3D\src_main\dlls\mp5.cpp"
|
||||
"D:\Xash3D\src_main\dlls\multiplay_gamerules.cpp"
|
||||
"D:\Xash3D\src_main\dlls\nihilanth.cpp"
|
||||
"D:\Xash3D\src_main\dlls\nodes.cpp"
|
||||
"D:\Xash3D\src_main\dlls\osprey.cpp"
|
||||
"D:\Xash3D\src_main\dlls\pathcorner.cpp"
|
||||
"D:\Xash3D\src_main\dlls\plane.cpp"
|
||||
"D:\Xash3D\src_main\dlls\plats.cpp"
|
||||
"D:\Xash3D\src_main\dlls\player.cpp"
|
||||
"D:\Xash3D\src_main\game_shared\pm_debug.cpp"
|
||||
"D:\Xash3D\src_main\game_shared\pm_math.cpp"
|
||||
"D:\Xash3D\src_main\game_shared\pm_shared.cpp"
|
||||
"D:\Xash3D\src_main\dlls\python.cpp"
|
||||
"D:\Xash3D\src_main\dlls\rat.cpp"
|
||||
"D:\Xash3D\src_main\dlls\roach.cpp"
|
||||
"D:\Xash3D\src_main\dlls\rpg.cpp"
|
||||
"D:\Xash3D\src_main\dlls\satchel.cpp"
|
||||
"D:\Xash3D\src_main\dlls\schedule.cpp"
|
||||
"D:\Xash3D\src_main\dlls\scientist.cpp"
|
||||
"D:\Xash3D\src_main\dlls\scripted.cpp"
|
||||
"D:\Xash3D\src_main\dlls\shotgun.cpp"
|
||||
"D:\Xash3D\src_main\dlls\singleplay_gamerules.cpp"
|
||||
"D:\Xash3D\src_main\dlls\skill.cpp"
|
||||
"D:\Xash3D\src_main\dlls\sound.cpp"
|
||||
"D:\Xash3D\src_main\dlls\soundent.cpp"
|
||||
"D:\Xash3D\src_main\dlls\spectator.cpp"
|
||||
"D:\Xash3D\src_main\dlls\squadmonster.cpp"
|
||||
"D:\Xash3D\src_main\dlls\squeakgrenade.cpp"
|
||||
"D:\Xash3D\src_main\dlls\subs.cpp"
|
||||
"D:\Xash3D\src_main\dlls\talkmonster.cpp"
|
||||
"D:\Xash3D\src_main\dlls\teamplay_gamerules.cpp"
|
||||
"D:\Xash3D\src_main\dlls\tentacle.cpp"
|
||||
"D:\Xash3D\src_main\dlls\triggers.cpp"
|
||||
"D:\Xash3D\src_main\dlls\tripmine.cpp"
|
||||
"D:\Xash3D\src_main\dlls\turret.cpp"
|
||||
"D:\Xash3D\src_main\dlls\util.cpp"
|
||||
"D:\Xash3D\src_main\dlls\weapons.cpp"
|
||||
"D:\Xash3D\src_main\dlls\world.cpp"
|
||||
"D:\Xash3D\src_main\dlls\xen.cpp"
|
||||
"D:\Xash3D\src_main\dlls\zombie.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP562.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP563.tmp" with contents
|
||||
[
|
||||
msvcrtd.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\hl\!debug/hl.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /def:".\hl.def" /out:"..\temp\hl\!debug/hl.dll" /implib:"..\temp\hl\!debug/hl.lib" /pdbtype:sept
|
||||
"\Xash3D\src_main\temp\hl\!debug\aflock.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\agrunt.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\airtank.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\animating.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\animation.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\apache.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\barnacle.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\barney.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\bigmomma.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\bloater.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\bmodels.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\bullsquid.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\buttons.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\cbase.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\client.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\combat.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\controller.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\crossbow.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\crowbar.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\defaultai.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\doors.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\effects.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\egon.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\explode.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\flyingmonster.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\func_break.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\func_tank.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\game.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\gamerules.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\gargantua.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\gauss.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\genericmonster.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\ggrenade.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\globals.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\glock.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\gman.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\h_ai.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\h_battery.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\h_cine.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\h_cycler.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\h_export.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\handgrenade.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\hassassin.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\headcrab.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\healthkit.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\hgrunt.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\hornet.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\hornetgun.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\houndeye.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\ichthyosaur.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\islave.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\items.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\leech.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\lights.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\maprules.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\monstermaker.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\monsters.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\monsterstate.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\mortar.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\mp5.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\multiplay_gamerules.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\nihilanth.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\nodes.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\osprey.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\pathcorner.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\plane.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\plats.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\player.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\pm_debug.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\pm_math.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\pm_shared.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\python.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\rat.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\roach.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\rpg.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\satchel.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\schedule.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\scientist.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\scripted.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\shotgun.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\singleplay_gamerules.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\skill.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\sound.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\soundent.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\spectator.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\squadmonster.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\squeakgrenade.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\subs.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\talkmonster.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\teamplay_gamerules.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\tempmonster.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\tentacle.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\triggers.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\tripmine.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\turret.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\util.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\weapons.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\world.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\xen.obj"
|
||||
"\Xash3D\src_main\temp\hl\!debug\zombie.obj"
|
||||
]
|
||||
Creating command line "link.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP563.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP564.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\hl\!debug\hl.dll "D:\Xash3D\valve\bin\server.dll"
|
||||
]
|
||||
Creating command line ""C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP564.bat""
|
||||
Compiling...
|
||||
aflock.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
agrunt.cpp
|
||||
airtank.cpp
|
||||
animating.cpp
|
||||
animation.cpp
|
||||
apache.cpp
|
||||
barnacle.cpp
|
||||
barney.cpp
|
||||
bigmomma.cpp
|
||||
bloater.cpp
|
||||
bmodels.cpp
|
||||
bullsquid.cpp
|
||||
buttons.cpp
|
||||
cbase.cpp
|
||||
client.cpp
|
||||
combat.cpp
|
||||
controller.cpp
|
||||
crossbow.cpp
|
||||
crowbar.cpp
|
||||
defaultai.cpp
|
||||
doors.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
effects.cpp
|
||||
egon.cpp
|
||||
explode.cpp
|
||||
flyingmonster.cpp
|
||||
func_break.cpp
|
||||
func_tank.cpp
|
||||
game.cpp
|
||||
gamerules.cpp
|
||||
gargantua.cpp
|
||||
gauss.cpp
|
||||
genericmonster.cpp
|
||||
ggrenade.cpp
|
||||
globals.cpp
|
||||
glock.cpp
|
||||
gman.cpp
|
||||
h_ai.cpp
|
||||
h_battery.cpp
|
||||
h_cine.cpp
|
||||
h_cycler.cpp
|
||||
h_export.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
handgrenade.cpp
|
||||
hassassin.cpp
|
||||
headcrab.cpp
|
||||
healthkit.cpp
|
||||
hgrunt.cpp
|
||||
hornet.cpp
|
||||
hornetgun.cpp
|
||||
houndeye.cpp
|
||||
ichthyosaur.cpp
|
||||
islave.cpp
|
||||
items.cpp
|
||||
leech.cpp
|
||||
lights.cpp
|
||||
maprules.cpp
|
||||
monstermaker.cpp
|
||||
monsters.cpp
|
||||
monsterstate.cpp
|
||||
mortar.cpp
|
||||
mp5.cpp
|
||||
multiplay_gamerules.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
nihilanth.cpp
|
||||
nodes.cpp
|
||||
osprey.cpp
|
||||
pathcorner.cpp
|
||||
plane.cpp
|
||||
plats.cpp
|
||||
player.cpp
|
||||
python.cpp
|
||||
rat.cpp
|
||||
roach.cpp
|
||||
rpg.cpp
|
||||
satchel.cpp
|
||||
schedule.cpp
|
||||
scientist.cpp
|
||||
scripted.cpp
|
||||
shotgun.cpp
|
||||
singleplay_gamerules.cpp
|
||||
skill.cpp
|
||||
sound.cpp
|
||||
soundent.cpp
|
||||
Generating Code...
|
||||
Compiling...
|
||||
spectator.cpp
|
||||
squadmonster.cpp
|
||||
squeakgrenade.cpp
|
||||
subs.cpp
|
||||
talkmonster.cpp
|
||||
teamplay_gamerules.cpp
|
||||
tentacle.cpp
|
||||
triggers.cpp
|
||||
tripmine.cpp
|
||||
turret.cpp
|
||||
util.cpp
|
||||
weapons.cpp
|
||||
world.cpp
|
||||
xen.cpp
|
||||
zombie.cpp
|
||||
Generating Code...
|
||||
Skipping... (no relevant changes detected)
|
||||
pm_debug.cpp
|
||||
pm_math.cpp
|
||||
pm_shared.cpp
|
||||
Linking...
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\hl\!debug\hl.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
hl.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
21
dlls/rpg.cpp
21
dlls/rpg.cpp
|
@ -47,13 +47,21 @@ LINK_ENTITY_TO_CLASS( laser_spot, CLaserSpot );
|
|||
|
||||
//=========================================================
|
||||
//=========================================================
|
||||
CLaserSpot *CLaserSpot::CreateSpot( void )
|
||||
CLaserSpot *CLaserSpot::CreateSpot( entvars_t *pevOwner )
|
||||
{
|
||||
CLaserSpot *pSpot = GetClassPtr( (CLaserSpot *)NULL );
|
||||
pSpot->Spawn();
|
||||
|
||||
pSpot->pev->classname = MAKE_STRING("laser_spot");
|
||||
|
||||
if( pevOwner )
|
||||
{
|
||||
// predictable laserspot (cl_lw must be set to 1)
|
||||
pSpot->pev->flags |= FL_SKIPLOCALHOST;
|
||||
pSpot->pev->owner = ENT( pevOwner );
|
||||
pevOwner->effects |= EF_LASERSPOT;
|
||||
}
|
||||
|
||||
return pSpot;
|
||||
}
|
||||
|
||||
|
@ -79,6 +87,8 @@ void CLaserSpot::Spawn( void )
|
|||
void CLaserSpot::Suspend( float flSuspendTime )
|
||||
{
|
||||
pev->effects |= EF_NODRAW;
|
||||
if( pev->owner )
|
||||
pev->owner->v.effects &= ~EF_LASERSPOT;
|
||||
|
||||
SetThink( Revive );
|
||||
pev->nextthink = gpGlobals->time + flSuspendTime;
|
||||
|
@ -91,6 +101,9 @@ void CLaserSpot::Revive( void )
|
|||
{
|
||||
pev->effects &= ~EF_NODRAW;
|
||||
|
||||
if( pev->owner )
|
||||
pev->owner->v.effects |= EF_LASERSPOT;
|
||||
|
||||
SetThink( NULL );
|
||||
}
|
||||
|
||||
|
@ -433,6 +446,7 @@ void CRpg::Holster( void )
|
|||
if (m_pSpot)
|
||||
{
|
||||
m_pSpot->Killed( NULL, GIB_NEVER );
|
||||
m_pPlayer->pev->effects &= ~EF_LASERSPOT;
|
||||
m_pSpot = NULL;
|
||||
}
|
||||
#endif
|
||||
|
@ -496,6 +510,7 @@ void CRpg::SecondaryAttack()
|
|||
if (!m_fSpotActive && m_pSpot)
|
||||
{
|
||||
m_pSpot->Killed( NULL, GIB_NORMAL );
|
||||
m_pPlayer->pev->effects &= ~EF_LASERSPOT;
|
||||
m_pSpot = NULL;
|
||||
}
|
||||
#endif
|
||||
|
@ -554,11 +569,11 @@ void CRpg::UpdateSpot( void )
|
|||
{
|
||||
if (!m_pSpot)
|
||||
{
|
||||
m_pSpot = CLaserSpot::CreateSpot();
|
||||
m_pSpot = CLaserSpot::CreateSpot( m_pPlayer->pev );
|
||||
}
|
||||
|
||||
UTIL_MakeVectors( m_pPlayer->pev->v_angle );
|
||||
Vector vecSrc = m_pPlayer->GetGunPosition( );;
|
||||
Vector vecSrc = m_pPlayer->GetGunPosition( );
|
||||
Vector vecAiming = gpGlobals->v_forward;
|
||||
|
||||
TraceResult tr;
|
||||
|
|
|
@ -413,7 +413,6 @@ void W_Precache(void)
|
|||
g_sModelIndexLaser = PRECACHE_MODEL( (char *)g_pModelNameLaser );
|
||||
g_sModelIndexLaserDot = PRECACHE_MODEL("sprites/laserdot.spr");
|
||||
|
||||
|
||||
// used by explosions
|
||||
PRECACHE_MODEL ("models/grenade.mdl");
|
||||
PRECACHE_MODEL ("sprites/explode1.spr");
|
||||
|
@ -431,6 +430,20 @@ void W_Precache(void)
|
|||
|
||||
PRECACHE_SOUND ("items/weapondrop1.wav");// weapon falls to the ground
|
||||
|
||||
// g-cont. precache here resources that was precached in the engine (in original HL of course)
|
||||
|
||||
// custom muzzleflashes
|
||||
PRECACHE_MODEL ("sprites/muzzleflash1.spr");
|
||||
PRECACHE_MODEL ("sprites/muzzleflash2.spr");
|
||||
PRECACHE_MODEL ("sprites/muzzleflash3.spr");
|
||||
PRECACHE_MODEL ("sprites/muzzleflash.spr");
|
||||
|
||||
// ricochet sprite
|
||||
PRECACHE_MODEL ("sprites/richo1.spr");
|
||||
|
||||
// rocket flare
|
||||
PRECACHE_MODEL ("sprites/animglow01.spr");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -492,6 +492,7 @@ public:
|
|||
void Precache( void );
|
||||
int iItemSlot( void ) { return 1; }
|
||||
void EXPORT SwingAgain( void );
|
||||
void EXPORT Smack( void );
|
||||
int GetItemInfo(ItemInfo *p);
|
||||
|
||||
void PrimaryAttack( void );
|
||||
|
@ -499,6 +500,8 @@ public:
|
|||
BOOL Deploy( void );
|
||||
void Holster( void );
|
||||
void WeaponIdle( void );
|
||||
int m_iSwing;
|
||||
TraceResult m_trHit;
|
||||
private:
|
||||
unsigned short m_usCrowbar;
|
||||
};
|
||||
|
@ -609,7 +612,7 @@ public:
|
|||
void Suspend( float flSuspendTime );
|
||||
void EXPORT Revive( void );
|
||||
|
||||
static CLaserSpot *CreateSpot( void );
|
||||
static CLaserSpot *CreateSpot( entvars_t *pevOwner = NULL );
|
||||
};
|
||||
|
||||
class CRpg : public CBasePlayerWeapon
|
||||
|
|
|
@ -18,6 +18,9 @@ FRAME PARSING
|
|||
*/
|
||||
void CL_UpdateEntityFields( cl_entity_t *ent )
|
||||
{
|
||||
// set player state
|
||||
ent->player = ( ent->curstate.entityType == ET_PLAYER ) ? true : false;
|
||||
|
||||
// FIXME: this very-very temporary stuffffffff
|
||||
// make me lerping
|
||||
VectorCopy( ent->curstate.origin, ent->origin );
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include "triangle_api.h"
|
||||
#include "effects_api.h"
|
||||
#include "event_flags.h"
|
||||
#include "pm_defs.h"
|
||||
#include "pm_local.h"
|
||||
|
||||
/*
|
||||
====================
|
||||
|
@ -737,6 +737,7 @@ void CL_FreeEntity( cl_entity_t *pEdict )
|
|||
if( pEdict->index == -1 )
|
||||
return;
|
||||
|
||||
CL_UnlinkEdict( pEdict );
|
||||
clgame.dllFuncs.pfnUpdateOnRemove( pEdict );
|
||||
pEdict->index = -1; // freed
|
||||
}
|
||||
|
@ -1520,18 +1521,12 @@ pfnTraceLine
|
|||
|
||||
=============
|
||||
*/
|
||||
static pmtrace_t *pfnTraceLine( const float *start, const float *end, int flags, int usehull, int ignore_pe )
|
||||
static pmtrace_t *pfnTraceLine( float *start, float *end, int flags, int usehull, int ignore_pe )
|
||||
{
|
||||
static pmtrace_t trace;
|
||||
static pmtrace_t tr;
|
||||
|
||||
// FIXME: implement traceline
|
||||
Mem_Set( &trace, 0, sizeof( pmtrace_t ));
|
||||
VectorCopy( end, trace.endpos );
|
||||
trace.fraction = 1.0f;
|
||||
trace.allsolid = true;
|
||||
trace.hitgroup = -1;
|
||||
|
||||
return &trace;
|
||||
tr = PM_PlayerTrace( clgame.pmove, start, end, flags, usehull, ignore_pe, NULL );
|
||||
return &tr;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1708,7 +1703,11 @@ pfnIndexFromTrace
|
|||
*/
|
||||
int pfnIndexFromTrace( struct pmtrace_s *pTrace )
|
||||
{
|
||||
// FIXME: implement
|
||||
if( pTrace->ent >= 0 && pTrace->ent < clgame.pmove->numphysent )
|
||||
{
|
||||
// return cl.entities number
|
||||
return clgame.pmove->physents[pTrace->ent].info;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1720,7 +1719,11 @@ pfnGetPhysent
|
|||
*/
|
||||
physent_t *pfnGetPhysent( int idx )
|
||||
{
|
||||
// FIXME: implement
|
||||
if( idx >= 0 && idx < clgame.pmove->numphysent )
|
||||
{
|
||||
// return physent
|
||||
return &clgame.pmove->physents[idx];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -1743,7 +1746,7 @@ pfnPushPMStates
|
|||
*/
|
||||
void pfnPushPMStates( void )
|
||||
{
|
||||
// FIXME: implement
|
||||
clgame.oldcount = clgame.pmove->numphysent;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1754,18 +1757,7 @@ pfnPopPMStates
|
|||
*/
|
||||
void pfnPopPMStates( void )
|
||||
{
|
||||
// FIXME: implement
|
||||
}
|
||||
|
||||
/*
|
||||
=============
|
||||
pfnSetSolidPlayers
|
||||
|
||||
=============
|
||||
*/
|
||||
void pfnSetSolidPlayers( int playernum )
|
||||
{
|
||||
// FIXME: implement
|
||||
clgame.pmove->numphysent = clgame.oldcount;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1776,7 +1768,7 @@ pfnSetTraceHull
|
|||
*/
|
||||
void pfnSetTraceHull( int hull )
|
||||
{
|
||||
// FIXME: implement
|
||||
clgame.trace_hull = bound( 0, hull, 3 );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1787,7 +1779,9 @@ pfnPlayerTrace
|
|||
*/
|
||||
static void pfnPlayerTrace( float *start, float *end, int traceFlags, int ignore_pe, pmtrace_t *tr )
|
||||
{
|
||||
// FIXME: implement
|
||||
if( !tr ) return;
|
||||
|
||||
*tr = PM_PlayerTrace( clgame.pmove, start, end, traceFlags, clgame.trace_hull, ignore_pe, NULL );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1796,10 +1790,15 @@ pfnTraceTexture
|
|||
|
||||
=============
|
||||
*/
|
||||
static const char *pfnTraceTexture( int ground, const float *v1, const float *v2 )
|
||||
static const char *pfnTraceTexture( int ground, float *vstart, float *vend )
|
||||
{
|
||||
// FIXME: implement
|
||||
return NULL;
|
||||
physent_t *pe;
|
||||
|
||||
if( ground < 0 || ground >= clgame.pmove->numphysent )
|
||||
return NULL; // bad ground
|
||||
|
||||
pe = &clgame.pmove->physents[ground];
|
||||
return PM_TraceTexture( pe, vstart, vend );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2296,7 +2295,7 @@ static event_api_t gEventApi =
|
|||
pfnSetUpPlayerPrediction,
|
||||
pfnPushPMStates,
|
||||
pfnPopPMStates,
|
||||
pfnSetSolidPlayers,
|
||||
CL_SetSolidPlayers,
|
||||
pfnSetTraceHull,
|
||||
pfnPlayerTrace,
|
||||
CL_WeaponAnim,
|
||||
|
|
|
@ -21,6 +21,7 @@ cvar_t *cl_showfps;
|
|||
cvar_t *cl_nodelta;
|
||||
cvar_t *cl_crosshair;
|
||||
cvar_t *cl_idealpitchscale;
|
||||
cvar_t *cl_solid_players;
|
||||
cvar_t *cl_shownet;
|
||||
cvar_t *cl_showmiss;
|
||||
cvar_t *userinfo;
|
||||
|
@ -1011,6 +1012,9 @@ void CL_ReadPackets( void )
|
|||
CL_ReadDemoMessage();
|
||||
else CL_ReadNetMessage();
|
||||
|
||||
// build list of all solid entities per frame (exclude clients)
|
||||
CL_SetSolidEntities ();
|
||||
|
||||
// singleplayer never has connection timeout
|
||||
if( NET_IsLocalAddress( cls.netchan.remote_address ))
|
||||
return;
|
||||
|
@ -1239,6 +1243,7 @@ void CL_InitLocal( void )
|
|||
cl_crosshair = Cvar_Get( "crosshair", "1", CVAR_ARCHIVE|CVAR_USERINFO, "show weapon chrosshair" );
|
||||
cl_nodelta = Cvar_Get ("cl_nodelta", "0", 0, "disable delta-compression for usercommnds" );
|
||||
cl_idealpitchscale = Cvar_Get( "cl_idealpitchscale", "0.8", 0, "how much to look up/down slopes and stairs when not using freelook" );
|
||||
cl_solid_players = Cvar_Get( "cl_solid_players", "1", 0, "Make all players not solid (can't traceline them)" );
|
||||
|
||||
cl_shownet = Cvar_Get( "cl_shownet", "0", 0, "client show network packets" );
|
||||
cl_showmiss = Cvar_Get( "cl_showmiss", "0", CVAR_ARCHIVE, "client show prediction errors" );
|
||||
|
|
|
@ -523,24 +523,12 @@ static cl_entity_t* pfnGetPlayerModel( void )
|
|||
pfnSetPlayerModel
|
||||
|
||||
for drawing playermodel previews
|
||||
|
||||
FIXME: move all this shit on the gameui.dll
|
||||
====================
|
||||
*/
|
||||
static void pfnSetPlayerModel( cl_entity_t *ent, const char *path )
|
||||
{
|
||||
re->RegisterModel( path, MAX_MODELS - 1 );
|
||||
ent->curstate.modelindex = MAX_MODELS - 1;
|
||||
|
||||
// setup latched controllers state to avoid unexpected poses :)
|
||||
ent->curstate.controller[0] = 127;
|
||||
ent->curstate.controller[1] = 127;
|
||||
ent->curstate.controller[2] = 127;
|
||||
ent->curstate.controller[3] = 127;
|
||||
ent->latched.prevcontroller[0] = 127;
|
||||
ent->latched.prevcontroller[1] = 127;
|
||||
ent->latched.prevcontroller[2] = 127;
|
||||
ent->latched.prevcontroller[3] = 127;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -580,6 +580,9 @@ void CL_ParseServerData( sizebuf_t *msg )
|
|||
cl.video_prepped = false;
|
||||
cl.audio_prepped = false;
|
||||
|
||||
Mem_Set( &clgame.movevars, 0, sizeof( clgame.movevars ));
|
||||
Mem_Set( &clgame.oldmovevars, 0, sizeof( clgame.oldmovevars ));
|
||||
|
||||
// initialize world and clients
|
||||
CL_InitWorld ();
|
||||
}
|
||||
|
@ -1044,5 +1047,6 @@ void CL_ParseServerMessage( sizebuf_t *msg )
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cls_message_debug.parsing = false; // done
|
||||
}
|
|
@ -25,13 +25,12 @@ bool CL_CopyEntityToPhysEnt( physent_t *pe, cl_entity_t *ent )
|
|||
if( !mod || mod->type == mod_bad )
|
||||
return false;
|
||||
|
||||
pe->player = false;
|
||||
pe->player = ent->player;
|
||||
|
||||
if( ent->index > 0 && ent->index < clgame.globals->maxClients )
|
||||
if( pe->player )
|
||||
{
|
||||
// client or bot
|
||||
com.strncpy( pe->name, "player", sizeof( pe->name ));
|
||||
pe->player = true;
|
||||
}
|
||||
else if( ent == clgame.entities )
|
||||
{
|
||||
|
@ -96,6 +95,91 @@ bool CL_CopyEntityToPhysEnt( physent_t *pe, cl_entity_t *ent )
|
|||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
====================
|
||||
CL_AddLinksToPmove
|
||||
|
||||
collect solid entities
|
||||
====================
|
||||
*/
|
||||
void CL_AddLinksToPmove( areanode_t *node, const vec3_t pmove_mins, const vec3_t pmove_maxs )
|
||||
{
|
||||
link_t *l, *next;
|
||||
cl_entity_t *check;
|
||||
physent_t *pe;
|
||||
|
||||
// touch linked edicts
|
||||
for( l = node->solid_edicts.next; l != &node->solid_edicts; l = next )
|
||||
{
|
||||
next = l->next;
|
||||
check = CL_GetEntityByIndex( l->entnum );
|
||||
|
||||
// don't add the world and clients here
|
||||
if( !check || check == &clgame.entities[0] || check->player )
|
||||
continue;
|
||||
|
||||
if(check->curstate.solid == SOLID_BSP || check->curstate.solid == SOLID_BBOX || check->curstate.solid == SOLID_SLIDEBOX)
|
||||
{
|
||||
if( !BoundsIntersect( pmove_mins, pmove_maxs, check->absmin, check->absmax ))
|
||||
continue;
|
||||
|
||||
if( clgame.pmove->numphysent == MAX_PHYSENTS )
|
||||
return;
|
||||
|
||||
pe = &clgame.pmove->physents[clgame.pmove->numphysent];
|
||||
|
||||
if( CL_CopyEntityToPhysEnt( pe, check ))
|
||||
clgame.pmove->numphysent++;
|
||||
}
|
||||
}
|
||||
|
||||
// recurse down both sides
|
||||
if( node->axis == -1 ) return;
|
||||
|
||||
if( pmove_maxs[node->axis] > node->dist )
|
||||
CL_AddLinksToPmove( node->children[0], pmove_mins, pmove_maxs );
|
||||
if( pmove_mins[node->axis] < node->dist )
|
||||
CL_AddLinksToPmove( node->children[1], pmove_mins, pmove_maxs );
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
CL_SetSolid
|
||||
|
||||
Builds all the pmove physents for the current frame
|
||||
Note that CL_SetUpPlayerPrediction() must be called first!
|
||||
pmove must be setup with world and solid entity hulls before calling
|
||||
(via CL_PredictMove)
|
||||
===============
|
||||
*/
|
||||
void CL_SetSolidPlayers( int playernum )
|
||||
{
|
||||
int j;
|
||||
extern vec3_t player_mins;
|
||||
extern vec3_t player_maxs;
|
||||
cl_entity_t *ent;
|
||||
physent_t *pe;
|
||||
|
||||
if( !cl_solid_players->integer )
|
||||
return;
|
||||
|
||||
// FIXME: create predicted_players array
|
||||
for( j = 0; j < clgame.globals->maxClients; j++ )
|
||||
{
|
||||
// the player object never gets added
|
||||
if( j == playernum ) continue;
|
||||
|
||||
ent = CL_GetEntityByIndex( j + 1 );
|
||||
|
||||
if( !ent || !ent->player )
|
||||
continue; // not present this frame
|
||||
|
||||
pe = &clgame.pmove->physents[clgame.pmove->numphysent];
|
||||
if( CL_CopyEntityToPhysEnt( pe, ent ))
|
||||
clgame.pmove->numphysent++;
|
||||
}
|
||||
}
|
||||
|
||||
static void pfnParticle( float *origin, int color, float life, int zpos, int zvel )
|
||||
{
|
||||
vec3_t dir;
|
||||
|
@ -341,4 +425,119 @@ void CL_InitClientMove( void )
|
|||
|
||||
// initalize pmove
|
||||
clgame.dllFuncs.pfnPM_Init( clgame.pmove );
|
||||
}
|
||||
|
||||
static void PM_CheckMovingGround( clientdata_t *cd, entity_state_t *state, float frametime )
|
||||
{
|
||||
if(!( cd->flags & FL_BASEVELOCITY ))
|
||||
{
|
||||
// apply momentum (add in half of the previous frame of velocity first)
|
||||
VectorMA( cd->velocity, 1.0f + (frametime * 0.5f), state->basevelocity, cd->velocity );
|
||||
VectorClear( state->basevelocity );
|
||||
}
|
||||
cd->flags &= ~FL_BASEVELOCITY;
|
||||
}
|
||||
|
||||
void CL_SetSolidEntities( void )
|
||||
{
|
||||
physent_t *pe;
|
||||
vec3_t absmin, absmax;
|
||||
cl_entity_t *touch[MAX_EDICTS];
|
||||
int i, count;
|
||||
|
||||
// world not initialized
|
||||
if( !cl.frame.valid ) return;
|
||||
|
||||
// setup physents
|
||||
clgame.pmove->numvisent = 0; // FIXME: add visents for debugging
|
||||
clgame.pmove->numphysent = 0;
|
||||
clgame.pmove->nummoveent = 0;
|
||||
|
||||
for( i = 0; i < 3; i++ )
|
||||
{
|
||||
absmin[i] = cl.frame.cd.origin[i] - 256;
|
||||
absmax[i] = cl.frame.cd.origin[i] + 256;
|
||||
}
|
||||
|
||||
CL_CopyEntityToPhysEnt( &clgame.pmove->physents[0], &clgame.entities[0] );
|
||||
clgame.pmove->numphysent = 1; // always have world
|
||||
|
||||
CL_AddLinksToPmove( cl_areanodes, absmin, absmax );
|
||||
count = CL_AreaEdicts( absmin, absmax, touch, MAX_EDICTS, AREA_CUSTOM );
|
||||
|
||||
// build list of ladders around player
|
||||
for( i = 0; i < count; i++ )
|
||||
{
|
||||
if( clgame.pmove->nummoveent >= MAX_MOVEENTS )
|
||||
{
|
||||
MsgDev( D_ERROR, "PM_PlayerMove: too many ladders in PVS\n" );
|
||||
break;
|
||||
}
|
||||
|
||||
if( touch[i] == CL_GetLocalPlayer( )) continue;
|
||||
|
||||
pe = &clgame.pmove->moveents[clgame.pmove->nummoveent];
|
||||
if( CL_CopyEntityToPhysEnt( pe, touch[i] ))
|
||||
clgame.pmove->nummoveent++;
|
||||
}
|
||||
}
|
||||
|
||||
static void PM_SetupMove( playermove_t *pmove, clientdata_t *cd, entity_state_t *state, usercmd_t *ucmd )
|
||||
{
|
||||
pmove->player_index = cl.playernum;
|
||||
pmove->multiplayer = (clgame.globals->maxClients > 1) ? true : false;
|
||||
pmove->time = sv_time(); // probably never used
|
||||
VectorCopy( cd->origin, pmove->origin );
|
||||
VectorCopy( cl.refdef.cl_viewangles, pmove->angles );
|
||||
VectorCopy( cl.refdef.cl_viewangles, pmove->oldangles );
|
||||
VectorCopy( cd->velocity, pmove->velocity );
|
||||
VectorCopy( state->basevelocity, pmove->basevelocity );
|
||||
VectorCopy( cd->view_ofs, pmove->view_ofs );
|
||||
VectorClear( pmove->movedir );
|
||||
pmove->flDuckTime = cd->flDuckTime;
|
||||
pmove->bInDuck = cd->bInDuck;
|
||||
pmove->usehull = (cd->flags & FL_DUCKING) ? 1 : 0; // reset hull
|
||||
pmove->flTimeStepSound = cd->flTimeStepSound;
|
||||
pmove->iStepLeft = state->iStepLeft;
|
||||
pmove->flFallVelocity = state->flFallVelocity;
|
||||
pmove->flSwimTime = cd->flSwimTime;
|
||||
VectorCopy( cd->punchangle, pmove->punchangle );
|
||||
pmove->flSwimTime = cd->flSwimTime;
|
||||
pmove->flNextPrimaryAttack = 0.0f; // not used by PM_ code
|
||||
pmove->effects = state->effects;
|
||||
pmove->flags = cd->flags;
|
||||
pmove->gravity = state->gravity;
|
||||
pmove->friction = state->friction;
|
||||
pmove->oldbuttons = state->oldbuttons;
|
||||
pmove->waterjumptime = cd->waterjumptime;
|
||||
pmove->dead = (cd->health <= 0.0f ) ? true : false;
|
||||
pmove->deadflag = cd->deadflag;
|
||||
pmove->spectator = 0; // FIXME: implement
|
||||
pmove->movetype = state->movetype;
|
||||
pmove->onground = -1; // will be set by PM_ code
|
||||
pmove->waterlevel = cd->waterlevel;
|
||||
pmove->watertype = cd->watertype;
|
||||
pmove->maxspeed = clgame.movevars.maxspeed;
|
||||
pmove->clientmaxspeed = cd->maxspeed;
|
||||
pmove->iuser1 = cd->iuser1;
|
||||
pmove->iuser2 = cd->iuser2;
|
||||
pmove->iuser3 = cd->iuser3;
|
||||
pmove->iuser4 = cd->iuser4;
|
||||
pmove->fuser1 = cd->fuser1;
|
||||
pmove->fuser2 = cd->fuser2;
|
||||
pmove->fuser3 = cd->fuser3;
|
||||
pmove->fuser4 = cd->fuser4;
|
||||
VectorCopy( cd->vuser1, pmove->vuser1 );
|
||||
VectorCopy( cd->vuser2, pmove->vuser2 );
|
||||
VectorCopy( cd->vuser3, pmove->vuser3 );
|
||||
VectorCopy( cd->vuser4, pmove->vuser4 );
|
||||
pmove->cmd = *ucmd; // setup current cmds
|
||||
|
||||
com.strncpy( pmove->physinfo, cd->physinfo, MAX_INFO_STRING );
|
||||
}
|
||||
|
||||
static void PM_FinishMove( playermove_t *pmove, clientdata_t *cd, entity_state_t *state )
|
||||
{
|
||||
cd->waterjumptime = pmove->waterjumptime;
|
||||
state->onground = pmove->onground;
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
#include "client.h"
|
||||
#include "matrix_lib.h"
|
||||
#include "const.h"
|
||||
#include "pm_defs.h"
|
||||
#include "pm_local.h"
|
||||
#include "protocol.h"
|
||||
#include "net_encode.h"
|
||||
|
||||
|
@ -101,13 +101,13 @@ CL_SetIdealPitch
|
|||
void CL_SetIdealPitch( cl_entity_t *ent )
|
||||
{
|
||||
float angleval, sinval, cosval;
|
||||
trace_t tr;
|
||||
pmtrace_t tr;
|
||||
vec3_t top, bottom;
|
||||
float z[MAX_FORWARD];
|
||||
int i, j;
|
||||
int step, dir, steps;
|
||||
|
||||
if( ent->curstate.onground == -1 )
|
||||
if( !( cl.frame.cd.flags & FL_ONGROUND ))
|
||||
return;
|
||||
|
||||
angleval = ent->angles[YAW] * M_PI * 2 / 360;
|
||||
|
@ -123,15 +123,14 @@ void CL_SetIdealPitch( cl_entity_t *ent )
|
|||
bottom[1] = top[1];
|
||||
bottom[2] = top[2] - 160;
|
||||
|
||||
// FIXME: write client trace
|
||||
// tr = CL_Move( top, vec3_origin, vec3_origin, bottom, MOVE_NOMONSTERS, ent );
|
||||
if( tr.fAllSolid )
|
||||
return; // looking at a wall, leave ideal the way is was
|
||||
// skip any monsters (only world and brush models)
|
||||
tr = PM_PlayerTrace( clgame.pmove, top, bottom, PM_STUDIO_IGNORE, 2, -1, NULL );
|
||||
if( tr.allsolid ) return; // looking at a wall, leave ideal the way is was
|
||||
|
||||
if( tr.flFraction == 1.0f )
|
||||
if( tr.fraction == 1.0f )
|
||||
return; // near a dropoff
|
||||
|
||||
z[i] = top[2] + tr.flFraction * (bottom[2] - top[2]);
|
||||
z[i] = top[2] + tr.fraction * (bottom[2] - top[2]);
|
||||
}
|
||||
|
||||
dir = 0;
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
|
||||
#include "common.h"
|
||||
#include "client.h"
|
||||
#include "tmpent_def.h"
|
||||
#include "event_flags.h"
|
||||
#include "entity_types.h"
|
||||
|
||||
/*
|
||||
==============================================================
|
||||
|
@ -33,6 +33,8 @@ void CL_WeaponAnim( int iAnim, int body )
|
|||
view->latched.prevanimtime = view->curstate.animtime;
|
||||
}
|
||||
|
||||
com.strncpy( view->curstate.classname, "viewentity", sizeof( view->curstate.classname ));
|
||||
view->curstate.entityType = ET_VIEWENTITY;
|
||||
view->curstate.animtime = clgame.globals->time; // start immediately
|
||||
view->curstate.framerate = 1.0f;
|
||||
view->curstate.sequence = iAnim;
|
||||
|
|
|
@ -35,7 +35,7 @@ void V_SetupRefDef( void )
|
|||
|
||||
VectorCopy( cl.frame.cd.punchangle, cl.refdef.punchangle );
|
||||
cl.refdef.movevars = &clgame.movevars;
|
||||
cl.refdef.onground = ( clent->curstate.onground == -1 ) ? false : true;
|
||||
cl.refdef.onground = ( cl.frame.cd.flags & FL_ONGROUND ) ? 1 : 0;
|
||||
cl.refdef.health = cl.frame.cd.health;
|
||||
cl.refdef.movetype = clent->curstate.movetype;
|
||||
cl.refdef.num_entities = clgame.globals->numEntities;
|
||||
|
|
|
@ -196,7 +196,8 @@ void CL_AreaEdicts_r( areanode_t *node, area_t *ap )
|
|||
for( l = start->next; l != start; l = next )
|
||||
{
|
||||
next = l->next;
|
||||
check = EDICT_FROM_AREA( l );
|
||||
check = CL_GetEntityByIndex( l->entnum );
|
||||
if( !check ) continue;
|
||||
|
||||
if( check->curstate.solid == SOLID_NOT && check->curstate.skin == CONTENTS_NONE )
|
||||
continue; // deactivated
|
||||
|
|
|
@ -221,6 +221,9 @@ typedef struct
|
|||
movevars_t oldmovevars;
|
||||
playermove_t *pmove; // pmove state
|
||||
|
||||
int trace_hull; // used by PM_SetTraceHull
|
||||
int oldcount; // used by PM_Push\Pop state
|
||||
|
||||
vec3_t player_mins[4]; // 4 hulls allowed
|
||||
vec3_t player_maxs[4]; // 4 hulls allowed
|
||||
|
||||
|
@ -326,6 +329,7 @@ extern cvar_t *cl_nodelta;
|
|||
extern cvar_t *cl_crosshair;
|
||||
extern cvar_t *cl_showmiss;
|
||||
extern cvar_t *cl_testlights;
|
||||
extern cvar_t *cl_solid_players;
|
||||
extern cvar_t *cl_idealpitchscale;
|
||||
extern cvar_t *cl_allow_levelshots;
|
||||
extern cvar_t *cl_levelshot_name;
|
||||
|
@ -454,8 +458,10 @@ void V_PostRender( void );
|
|||
void V_RenderView( void );
|
||||
|
||||
//
|
||||
// cl_move.c
|
||||
// cl_pmove.c
|
||||
//
|
||||
void CL_SetSolidEntities( void );
|
||||
void CL_SetSolidPlayers( int playernum );
|
||||
void CL_InitClientMove( void );
|
||||
void CL_PredictMovement( void );
|
||||
void CL_CheckPredictionError( void );
|
||||
|
@ -534,6 +540,8 @@ void CL_PlayVideo_f( void );
|
|||
//
|
||||
// cl_world.c
|
||||
//
|
||||
extern areanode_t cl_areanodes[];
|
||||
|
||||
void CL_ClearWorld( void );
|
||||
void CL_UnlinkEdict( cl_entity_t *ent );
|
||||
void CL_LinkEdict( cl_entity_t *ent );
|
||||
|
|
|
@ -46,6 +46,9 @@ const char *PM_TraceTexture( physent_t *pe, vec3_t v1, vec3_t v2 )
|
|||
if( !bmodel || bmodel->type != mod_brush && bmodel->type != mod_world )
|
||||
return NULL;
|
||||
|
||||
// making trace adjustments
|
||||
VectorSubtract( v1, pe->origin, vecStartPos );
|
||||
|
||||
// rotate start and end into the models frame of reference
|
||||
if( pe->solid == SOLID_BSP && !VectorIsNull( pe->angles ))
|
||||
{
|
||||
|
@ -54,8 +57,9 @@ const char *PM_TraceTexture( physent_t *pe, vec3_t v1, vec3_t v2 )
|
|||
Matrix4x4_CreateFromEntity( matrix, pe->origin[0], pe->origin[1], pe->origin[2], pe->angles[PITCH], pe->angles[YAW], pe->angles[ROLL], 1.0f );
|
||||
Matrix4x4_Invert_Simple( imatrix, matrix );
|
||||
|
||||
VectorCopy( vecStartPos, temp );
|
||||
Matrix4x4_VectorTransform( imatrix, temp, vecStartPos );
|
||||
VectorCopy( trace.endpos, temp );
|
||||
Matrix4x4_VectorTransform( imatrix, v1, vecStartPos );
|
||||
Matrix4x4_VectorTransform( imatrix, temp, trace.endpos );
|
||||
}
|
||||
|
||||
|
|
|
@ -1,171 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: engine - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP56A.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "common" /I "server" /I "client" /I "uimenu" /I "../public" /I "../common" /I "../game_shared" /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\server\sv_frame.c"
|
||||
"D:\Xash3D\src_main\engine\server\sv_game.c"
|
||||
"D:\Xash3D\src_main\engine\server\sv_world.c"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP56A.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP56B.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\build.obj"
|
||||
"\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_frame.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_game.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_main.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_menu.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_parse.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_pmove.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_pred.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_scrn.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_tent.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_video.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cl_view.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_debug.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_light.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_main.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_model.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_portals.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_studio.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_test.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\cm_trace.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\con_utils.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\console.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\engfuncs.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\export.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\keys.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\net_buffer.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\net_chan.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\net_encode.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\net_huff.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\pm_studio.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\pm_surface.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\pm_trace.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\pm_utils.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_pmove.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\titles.obj"
|
||||
"\Xash3D\src_main\temp\engine\!debug\world.obj"
|
||||
]
|
||||
Creating command line "link.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP56B.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP56C.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\ÌÈØÀ\LOCALS~1\Temp\RSP56C.bat""
|
||||
Compiling...
|
||||
sv_frame.c
|
||||
d:\xash3d\src_main\engine\server\sv_frame.c(172) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_frame.c(186) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
sv_game.c
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(405) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(408) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(408) : error C2065: 'sv_priv_t' : undeclared identifier
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(408) : error C2059: syntax error : ')'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(422) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(422) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(422) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int '
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(422) : warning C4024: 'com' : different types for formal and actual parameter 2
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(422) : error C2198: 'com' : too few actual parameters
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(504) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(540) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(607) : error C2065: 'sv_ent' : undeclared identifier
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(607) : warning C4552: '*' : operator has no effect; expected operator with side-effect
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(608) : error C2275: 'sv_client_t' : illegal use of this type as an expression
|
||||
d:\xash3d\src_main\engine\server\server.h(158) : see declaration of 'sv_client_t'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(608) : error C2065: 'cl' : undeclared identifier
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(610) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(613) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct sv_client_s *'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(616) : error C2223: left of '->modelindex' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(616) : error C2223: left of '->modelindex' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(1358) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(1402) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(2225) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3280) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3283) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3286) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3286) : warning C4047: 'function' : 'int ' differs in levels of indirection from 'unsigned char *'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3286) : warning C4024: 'CM_HeadnodeVisible' : different types for formal and actual parameter 1
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3286) : error C2198: 'CM_HeadnodeVisible' : too few actual parameters
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3292) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3294) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_game.c(3300) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
sv_world.c
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(133) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(136) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(136) : error C2198: 'RemoveLink' : too few actual parameters
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(137) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(138) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(182) : error C2065: 'sv_priv_t' : undeclared identifier
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(182) : error C2065: 'sv_ent' : undeclared identifier
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(182) : warning C4552: '*' : operator has no effect; expected operator with side-effect
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(184) : error C2039: 'pvEngineData' : is not a member of 'edict_s'
|
||||
d:\xash3d\src_main\common\edict.h(13) : see declaration of 'edict_s'
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(187) : error C2223: left of '->area' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(195) : error C2223: left of '->num_leafs' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(211) : error C2223: left of '->num_leafs' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(212) : error C2223: left of '->headnode' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(216) : error C2223: left of '->num_leafs' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(231) : error C2223: left of '->num_leafs' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(234) : error C2223: left of '->num_leafs' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(235) : error C2223: left of '->headnode' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(238) : error C2223: left of '->leafnums' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(238) : error C2223: left of '->num_leafs' must point to struct/union
|
||||
d:\xash3d\src_main\engine\server\sv_world.c(238) : fatal error C1903: unable to recover from previous error(s); stopping compilation
|
||||
Generating Code...
|
||||
Error executing cl.exe.
|
||||
<h3>Output Window</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
engine.dll - 46 error(s), 7 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -666,16 +666,10 @@ void SV_PutClientInServer( edict_t *ent )
|
|||
{
|
||||
if( ent->v.flags & FL_SPECTATOR )
|
||||
{
|
||||
// setup spectatormaxspeed and refresh physinfo
|
||||
SV_SetClientMaxspeed( client, svgame.movevars.spectatormaxspeed );
|
||||
|
||||
svgame.dllFuncs.pfnSpectatorConnect( ent );
|
||||
}
|
||||
else
|
||||
{
|
||||
// setup maxspeed and refresh physinfo
|
||||
SV_SetClientMaxspeed( client, svgame.movevars.maxspeed );
|
||||
|
||||
if( sv_maxclients->integer > 1 )
|
||||
ent->v.netname = MAKE_STRING(Info_ValueForKey( client->userinfo, "name" ));
|
||||
else ent->v.netname = MAKE_STRING( "player" );
|
||||
|
@ -686,9 +680,6 @@ void SV_PutClientInServer( edict_t *ent )
|
|||
}
|
||||
else
|
||||
{
|
||||
// setup maxspeed and refresh physinfo
|
||||
SV_SetClientMaxspeed( client, svgame.movevars.maxspeed );
|
||||
|
||||
// NOTE: we needs to setup angles on restore here
|
||||
if( ent->v.fixangle == 1 )
|
||||
{
|
||||
|
|
|
@ -193,26 +193,6 @@ send updates to client if changed
|
|||
*/
|
||||
void SV_UpdateMovevars( void )
|
||||
{
|
||||
if( sv_maxspeed->modified )
|
||||
{
|
||||
sv_client_t *cl;
|
||||
int i;
|
||||
|
||||
// maxspeed is modified, refresh maxspeed for each client
|
||||
for( i = 0, cl = svs.clients; i < sv_maxclients->integer; i++, cl++ )
|
||||
{
|
||||
if( !SV_IsValidEdict( cl->edict ))
|
||||
continue;
|
||||
|
||||
// can update even if client it's not active
|
||||
SV_SetClientMaxspeed( cl, sv_maxspeed->value );
|
||||
}
|
||||
|
||||
if( sv.state == ss_active )
|
||||
SV_BroadcastPrintf( PRINT_HIGH, "sv_maxspeed is changed to %g\n", sv_maxspeed->value );
|
||||
sv_maxspeed->modified = false;
|
||||
}
|
||||
|
||||
if( !physinfo->modified ) return;
|
||||
|
||||
svgame.movevars.gravity = sv_gravity->value;
|
||||
|
@ -634,7 +614,7 @@ void SV_Init( void )
|
|||
sv_skyvec_y = Cvar_Get ("sv_skyvec_y", "0", CVAR_PHYSICINFO, "sky direction y (hl1 compatibility)" );
|
||||
sv_skyvec_z = Cvar_Get ("sv_skyvec_z", "-1", CVAR_PHYSICINFO, "sky direction z (hl1 compatibility)" );
|
||||
sv_skyname = Cvar_Get ("sv_skyname", "2desert", CVAR_PHYSICINFO, "skybox name (can be dynamically changed in-game)" );
|
||||
sv_footsteps = Cvar_Get ("mp_footsteps", "0", CVAR_PHYSICINFO, "can hear footsteps from other players" );
|
||||
sv_footsteps = Cvar_Get ("mp_footsteps", "1", CVAR_PHYSICINFO, "can hear footsteps from other players" );
|
||||
|
||||
rcon_password = Cvar_Get( "rcon_password", "", 0, "remote connect password" );
|
||||
sv_fps = Cvar_Get( "sv_fps", "60", CVAR_SERVERINFO|CVAR_ARCHIVE, "network game server fps" );
|
||||
|
|
|
@ -529,11 +529,9 @@ static void PM_SetupMove( playermove_t *pmove, edict_t *clent, usercmd_t *ucmd,
|
|||
|
||||
// setup physents
|
||||
pmove->numvisent = 0; // FIXME: add visents for debugging
|
||||
pmove->numphysent = 0;
|
||||
pmove->nummoveent = 0;
|
||||
|
||||
VectorCopy( clent->v.absmin, absmin );
|
||||
VectorCopy( clent->v.absmax, absmax );
|
||||
|
||||
for( i = 0; i < 3; i++ )
|
||||
{
|
||||
absmin[i] = clent->v.origin[i] - 256;
|
||||
|
|
|
@ -1,114 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: gameui - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP56E.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../common" /I "../game_shared" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\gameui\!debug/" /Fo"..\temp\gameui\!debug/" /Fd"..\temp\gameui\!debug/" /FD /GZ /c
|
||||
"D:\Xash3D\src_main\gameui\basemenu.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_advcontrols.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_audio.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_configuration.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_controls.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_creategame.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_credits.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_customgame.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_gameoptions.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_langame.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_loadgame.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_main.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_multiplayer.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_newgame.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_playdemo.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_playersetup.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_playrec.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_recdemo.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_savegame.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_saveload.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_video.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_vidmodes.cpp"
|
||||
"D:\Xash3D\src_main\gameui\menu_vidoptions.cpp"
|
||||
"D:\Xash3D\src_main\gameui\udll_int.cpp"
|
||||
"D:\Xash3D\src_main\gameui\utils.cpp"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP56E.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP56F.tmp" with contents
|
||||
[
|
||||
msvcrtd.lib /nologo /dll /incremental:yes /pdb:"..\temp\gameui\!debug/gameui.pdb" /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /def:".\gameui.def" /out:"..\temp\gameui\!debug/gameui.dll" /implib:"..\temp\gameui\!debug/gameui.lib" /pdbtype:sept
|
||||
"\Xash3D\src_main\temp\gameui\!debug\basemenu.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_advcontrols.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_audio.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_configuration.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_controls.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_creategame.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_credits.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_customgame.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_gameoptions.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_langame.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_loadgame.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_main.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_multiplayer.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_newgame.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_playdemo.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_playersetup.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_playrec.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_recdemo.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_savegame.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_saveload.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_video.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_vidmodes.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\menu_vidoptions.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\udll_int.obj"
|
||||
"\Xash3D\src_main\temp\gameui\!debug\utils.obj"
|
||||
]
|
||||
Creating command line "link.exe @"C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP56F.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP570.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\gameui\!debug\gameui.dll "D:\Xash3D\valve\bin\GameUI.dll"
|
||||
]
|
||||
Creating command line ""C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP570.bat""
|
||||
Compiling...
|
||||
basemenu.cpp
|
||||
Generating Code...
|
||||
Skipping... (no relevant changes detected)
|
||||
menu_advcontrols.cpp
|
||||
menu_audio.cpp
|
||||
menu_configuration.cpp
|
||||
menu_controls.cpp
|
||||
menu_creategame.cpp
|
||||
menu_credits.cpp
|
||||
menu_customgame.cpp
|
||||
menu_gameoptions.cpp
|
||||
menu_langame.cpp
|
||||
menu_loadgame.cpp
|
||||
menu_main.cpp
|
||||
menu_multiplayer.cpp
|
||||
menu_newgame.cpp
|
||||
menu_playdemo.cpp
|
||||
menu_playersetup.cpp
|
||||
menu_playrec.cpp
|
||||
menu_recdemo.cpp
|
||||
menu_savegame.cpp
|
||||
menu_saveload.cpp
|
||||
menu_video.cpp
|
||||
menu_vidmodes.cpp
|
||||
menu_vidoptions.cpp
|
||||
udll_int.cpp
|
||||
utils.cpp
|
||||
Linking...
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\gameui\!debug\gameui.dll
|
||||
‘Ş®Ż¨ŕ®˘ ® ä ©«®˘: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
gameui.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -407,6 +407,10 @@ static void UI_PlayerSetup_Init( void )
|
|||
uiPlayerSetup.ent->curstate.controller[1] = 127;
|
||||
uiPlayerSetup.ent->curstate.controller[2] = 127;
|
||||
uiPlayerSetup.ent->curstate.controller[3] = 127;
|
||||
uiPlayerSetup.ent->latched.prevcontroller[0] = 127;
|
||||
uiPlayerSetup.ent->latched.prevcontroller[1] = 127;
|
||||
uiPlayerSetup.ent->latched.prevcontroller[2] = 127;
|
||||
uiPlayerSetup.ent->latched.prevcontroller[3] = 127;
|
||||
uiPlayerSetup.ent->origin[0] = 92;
|
||||
uiPlayerSetup.ent->origin[2] = 2;
|
||||
uiPlayerSetup.ent->angles[1] = 180;
|
||||
|
|
|
@ -1,128 +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\ĚČŘŔ\LOCALS~1\Temp\RSP572.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\cmd.c"
|
||||
"D:\Xash3D\src_main\launch\console.c"
|
||||
"D:\Xash3D\src_main\launch\cpuinfo.c"
|
||||
"D:\Xash3D\src_main\launch\crclib.c"
|
||||
"D:\Xash3D\src_main\launch\cvar.c"
|
||||
"D:\Xash3D\src_main\launch\export.c"
|
||||
"D:\Xash3D\src_main\launch\filesystem.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_bmp.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_dds.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_jpg.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_main.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_pcx.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_png.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_tga.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_utils.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_vtf.c"
|
||||
"D:\Xash3D\src_main\launch\imagelib\img_wad.c"
|
||||
"D:\Xash3D\src_main\launch\library.c"
|
||||
"D:\Xash3D\src_main\launch\memlib.c"
|
||||
"D:\Xash3D\src_main\launch\network.c"
|
||||
"D:\Xash3D\src_main\launch\parselib.c"
|
||||
"D:\Xash3D\src_main\launch\soundlib\snd_main.c"
|
||||
"D:\Xash3D\src_main\launch\soundlib\snd_ogg.c"
|
||||
"D:\Xash3D\src_main\launch\soundlib\snd_raw.c"
|
||||
"D:\Xash3D\src_main\launch\soundlib\snd_utils.c"
|
||||
"D:\Xash3D\src_main\launch\soundlib\snd_wav.c"
|
||||
"D:\Xash3D\src_main\launch\stdlib.c"
|
||||
"D:\Xash3D\src_main\launch\system.c"
|
||||
"D:\Xash3D\src_main\launch\utils.c"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP572.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP573.tmp" with contents
|
||||
[
|
||||
zlib.lib png.lib jpg.lib ogg.lib vorbis.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:"libcmt" /nodefaultlib:"libc" /out:"..\temp\launch\!debug/launch.dll" /implib:"..\temp\launch\!debug/launch.lib" /pdbtype:sept /libpath:"./imagelib" /libpath:"./soundlib"
|
||||
"\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\library.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\snd_main.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\snd_ogg.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\snd_raw.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\snd_utils.obj"
|
||||
"\Xash3D\src_main\temp\launch\!debug\snd_wav.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\ĚČŘŔ\LOCALS~1\Temp\RSP573.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ĚČŘŔ\LOCALS~1\Temp\RSP574.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\ĚČŘŔ\LOCALS~1\Temp\RSP574.bat""
|
||||
Compiling...
|
||||
cmd.c
|
||||
console.c
|
||||
cpuinfo.c
|
||||
crclib.c
|
||||
cvar.c
|
||||
export.c
|
||||
filesystem.c
|
||||
img_bmp.c
|
||||
img_dds.c
|
||||
img_jpg.c
|
||||
img_main.c
|
||||
img_pcx.c
|
||||
img_png.c
|
||||
img_tga.c
|
||||
img_utils.c
|
||||
img_vtf.c
|
||||
img_wad.c
|
||||
library.c
|
||||
memlib.c
|
||||
network.c
|
||||
Generating Code...
|
||||
Compiling...
|
||||
parselib.c
|
||||
snd_main.c
|
||||
snd_ogg.c
|
||||
snd_raw.c
|
||||
snd_utils.c
|
||||
snd_wav.c
|
||||
stdlib.c
|
||||
system.c
|
||||
utils.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library ..\temp\launch\!debug/launch.lib and object ..\temp\launch\!debug/launch.exp
|
||||
<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>
|
|
@ -1,69 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: snd_dx - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP581.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "../public" /I "../common" /I "../game_shared" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\snd_dx\!debug/" /Fo"..\temp\snd_dx\!debug/" /Fd"..\temp\snd_dx\!debug/" /FD /GZ /c
|
||||
"D:\Xash3D\src_main\snd_dx\s_backend.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_dsp.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_export.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_load.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_main.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_mix.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_mouth.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_stream.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_utils.c"
|
||||
"D:\Xash3D\src_main\snd_dx\s_vox.c"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP581.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP582.tmp" with contents
|
||||
[
|
||||
winmm.lib /nologo /dll /incremental:yes /pdb:"..\temp\snd_dx\!debug/snd_dx.pdb" /debug /machine:I386 /nodefaultlib:"libcmt.lib" /out:"..\temp\snd_dx\!debug/snd_dx.dll" /implib:"..\temp\snd_dx\!debug/snd_dx.lib" /pdbtype:sept
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_backend.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_dsp.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_export.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_load.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_main.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_mix.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_mouth.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_stream.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_utils.obj"
|
||||
"\Xash3D\src_main\temp\snd_dx\!debug\s_vox.obj"
|
||||
]
|
||||
Creating command line "link.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP582.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP583.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\snd_dx\!debug\snd_dx.dll "D:\Xash3D\bin\snd_dx.dll"
|
||||
]
|
||||
Creating command line ""C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP583.bat""
|
||||
Compiling...
|
||||
s_backend.c
|
||||
s_dsp.c
|
||||
s_export.c
|
||||
s_load.c
|
||||
s_main.c
|
||||
s_mix.c
|
||||
s_mouth.c
|
||||
s_stream.c
|
||||
s_utils.c
|
||||
s_vox.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library ..\temp\snd_dx\!debug/snd_dx.lib and object ..\temp\snd_dx\!debug/snd_dx.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\snd_dx\!debug\snd_dx.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
snd_dx.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -800,7 +800,7 @@ void R_FreeSkydome( skydome_t *skydome );
|
|||
void R_ClearSkyBox( void );
|
||||
void R_DrawSky( ref_shader_t *shader );
|
||||
bool R_AddSkySurface( msurface_t *fa );
|
||||
ref_shader_t *R_SetupSky( const char *name );
|
||||
void R_SetupSky( const char *name );
|
||||
void R_FreeSky( void );
|
||||
|
||||
//====================================================================
|
||||
|
|
|
@ -980,10 +980,13 @@ static void R_SetupFrame( void )
|
|||
RI.vup = RI.viewAxis[2];
|
||||
|
||||
// ambient lighting
|
||||
mapConfig.environmentColor[0] = RI.refdef.movevars->skycolor_r;
|
||||
mapConfig.environmentColor[1] = RI.refdef.movevars->skycolor_g;
|
||||
mapConfig.environmentColor[2] = RI.refdef.movevars->skycolor_b;
|
||||
mapConfig.environmentColor[3] = 255;
|
||||
if( r_worldmodel && !( RI.refdef.flags & RDF_NOWORLDMODEL ))
|
||||
{
|
||||
mapConfig.environmentColor[0] = RI.refdef.movevars->skycolor_r;
|
||||
mapConfig.environmentColor[1] = RI.refdef.movevars->skycolor_g;
|
||||
mapConfig.environmentColor[2] = RI.refdef.movevars->skycolor_b;
|
||||
mapConfig.environmentColor[3] = 255;
|
||||
}
|
||||
|
||||
if( RI.params & RP_SHADOWMAPVIEW )
|
||||
return;
|
||||
|
@ -2243,7 +2246,8 @@ shader_t Mod_RegisterShader( const char *name, int shaderType )
|
|||
src = CL_LoadSprite( name ); // hud sprites
|
||||
break;
|
||||
case SHADER_SKY:
|
||||
src = R_SetupSky( name );
|
||||
R_SetupSky( name );
|
||||
src = tr.currentSkyShader;
|
||||
break;
|
||||
default:
|
||||
MsgDev( D_WARN, "Mod_RegisterShader: invalid shader type (%i)\n", shaderType );
|
||||
|
|
|
@ -433,7 +433,9 @@ static void R_BatchMeshBuffer( const meshbuffer_t *mb, const meshbuffer_t *nextm
|
|||
{
|
||||
// draw sky
|
||||
if(!( RI.params & RP_NOSKY ))
|
||||
{
|
||||
R_DrawSky( tr.currentSkyShader );
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#include "byteorder.h"
|
||||
#include "bspfile.h"
|
||||
#include "cl_entity.h"
|
||||
#include "pm_movevars.h"
|
||||
|
||||
#define Mod_CopyString( m, str ) com.stralloc( (m)->mempool, str, __FILE__, __LINE__ )
|
||||
#define MAX_SIDE_VERTS 256 // per one polygon
|
||||
|
@ -262,7 +261,6 @@ void Mod_FreeModel( ref_model_t *mod )
|
|||
{
|
||||
if( !mod || !mod->mempool ) return;
|
||||
|
||||
if( mod == r_worldmodel ) R_FreeSky();
|
||||
Mem_FreePool( &mod->mempool );
|
||||
Mem_Set( mod, 0, sizeof( *mod ));
|
||||
}
|
||||
|
@ -1621,10 +1619,12 @@ static void Mod_LoadSurfaces( const dlump_t *l )
|
|||
out->numstyles++;
|
||||
}
|
||||
|
||||
if( !tr.currentSkyShader && ( out->flags & SURF_DRAWSKY || out->shader->flags & SHADER_SKYPARMS ))
|
||||
if( out->flags & SURF_DRAWSKY )
|
||||
{
|
||||
// because sky shader may missing skyParms, but always has surfaceparm 'sky'
|
||||
tr.currentSkyShader = out->shader;
|
||||
// create fake skyshader for detect it while drawing
|
||||
out->shader->flags |= SHADER_SKYPARMS;
|
||||
out->shader->sort = SORT_SKY;
|
||||
out->shader->skyParms = NULL;
|
||||
}
|
||||
|
||||
// create lightmap
|
||||
|
|
|
@ -1034,6 +1034,7 @@ static void R_FreeMedia( void )
|
|||
if( !glState.initializedMedia )
|
||||
return;
|
||||
|
||||
R_FreeSky();
|
||||
R_ShutdownOcclusionQueries();
|
||||
R_ShutdownDecals();
|
||||
R_ShutdownShadows();
|
||||
|
|
|
@ -2615,7 +2615,9 @@ bool R_ShaderCheckCache( const char *name )
|
|||
void R_RegisterBuiltinShaders( void )
|
||||
{
|
||||
tr.defaultShader = R_LoadShader( MAP_DEFAULT_SHADER, SHADER_NOMIP, true, (TF_NOMIPMAP|TF_NOPICMIP), SHADER_UNKNOWN );
|
||||
tr.fillShader = R_LoadShader( "*white", SHADER_GENERIC, true, (TF_CLAMP|TF_NOMIPMAP|TF_NOPICMIP), SHADER_UNKNOWN );
|
||||
tr.fillShader = R_LoadShader( "*white", SHADER_NOMIP, true, (TF_CLAMP|TF_NOMIPMAP|TF_NOPICMIP), SHADER_UNKNOWN );
|
||||
tr.currentSkyShader = R_LoadShader( "*sky", SHADER_GENERIC, true, (TF_CLAMP|TF_NOMIPMAP|TF_NOPICMIP), SHADER_UNKNOWN );
|
||||
tr.currentSkyShader->flags |= SHADER_STATIC;
|
||||
}
|
||||
|
||||
void R_InitShaders( void )
|
||||
|
@ -3655,7 +3657,7 @@ static ref_shader_t *Shader_CreateDefault( ref_shader_t *shader, int type, int a
|
|||
pass->num_textures++;
|
||||
break;
|
||||
case SHADER_SKY:
|
||||
shader->type = SHADER_SKY;
|
||||
shader->type = SHADER_SKY|SHADER_STATIC;
|
||||
shader->name = Shader_Malloc( length + 1 );
|
||||
strcpy( shader->name, shortname );
|
||||
// create simple sky parms, when Shader_SkyParms parsing it properly
|
||||
|
@ -3668,7 +3670,7 @@ static ref_shader_t *Shader_CreateDefault( ref_shader_t *shader, int type, int a
|
|||
shader->type = SHADER_FARBOX;
|
||||
shader->features = MF_STCOORDS;
|
||||
shader->sort = SORT_SKY;
|
||||
shader->flags = SHADER_SKYPARMS;
|
||||
shader->flags = SHADER_SKYPARMS|SHADER_STATIC;
|
||||
shader->num_stages = 1;
|
||||
shader->name = Shader_Malloc( length + 1 + sizeof( ref_stage_t ) * shader->num_stages );
|
||||
strcpy( shader->name, shortname );
|
||||
|
@ -3687,7 +3689,7 @@ static ref_shader_t *Shader_CreateDefault( ref_shader_t *shader, int type, int a
|
|||
shader->features = MF_STCOORDS;
|
||||
shader->sort = SORT_SKY;
|
||||
shader->num_stages = 1;
|
||||
shader->flags = SHADER_SKYPARMS;
|
||||
shader->flags = SHADER_SKYPARMS|SHADER_STATIC;
|
||||
shader->name = Shader_Malloc( length + 1 + sizeof( ref_stage_t ) * shader->num_stages );
|
||||
strcpy( shader->name, shortname );
|
||||
shader->stages = ( ref_stage_t * )( ( byte * )shader->name + length + 1 );
|
||||
|
@ -4120,130 +4122,117 @@ void R_SetAnimFrequency( float anim_fps )
|
|||
R_SetupSky
|
||||
=================
|
||||
*/
|
||||
ref_shader_t *R_SetupSky( const char *name )
|
||||
void R_SetupSky( const char *name )
|
||||
{
|
||||
string loadname;
|
||||
bool shader_valid = false;
|
||||
bool force_default = false;
|
||||
ref_script_t *cache;
|
||||
ref_shader_t *shader;
|
||||
uint hashKey;
|
||||
int index;
|
||||
|
||||
if( name && name[0] )
|
||||
{
|
||||
ref_script_t *cache;
|
||||
ref_shader_t *shader;
|
||||
uint hashKey;
|
||||
if( !name || !name[0] ) return;
|
||||
|
||||
com.snprintf( loadname, sizeof( loadname ), "%s/%s", SI->envpath, name );
|
||||
com.snprintf( loadname, sizeof( loadname ), "%s/%s", SI->envpath, name );
|
||||
|
||||
// make sure what new shader it's a skyShader and existing
|
||||
hashKey = Com_HashKey( loadname, SHADERS_HASH_SIZE );
|
||||
// make sure what new shader it's a skyShader and existing
|
||||
hashKey = Com_HashKey( loadname, SHADERS_HASH_SIZE );
|
||||
|
||||
for( shader = r_shadersHash[hashKey]; shader; shader = shader->nextHash )
|
||||
{
|
||||
if( !com.stricmp( shader->name, loadname ))
|
||||
break;
|
||||
}
|
||||
for( shader = r_shadersHash[hashKey]; shader; shader = shader->nextHash )
|
||||
{
|
||||
if( !com.stricmp( shader->name, loadname ))
|
||||
break;
|
||||
}
|
||||
|
||||
if( shader )
|
||||
{
|
||||
// already loaded, check parms
|
||||
if( shader->flags & SHADER_SKYPARMS && shader->skyParms )
|
||||
shader_valid = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cache = Shader_GetCache( loadname, SHADER_INVALID, hashKey );
|
||||
if( cache )
|
||||
{
|
||||
script_t *script = Com_OpenScript( cache->name, cache->buffer, cache->size );
|
||||
token_t tok;
|
||||
|
||||
while( Com_ReadToken( script, SC_ALLOW_NEWLINES, &tok ))
|
||||
{
|
||||
if( !com.stricmp( "skyParms", tok.string ))
|
||||
{
|
||||
// check only far skybox images for existing
|
||||
// because near skybox without far will be ignored by engine
|
||||
if( Com_ReadToken( script, SC_ALLOW_PATHNAMES2, &tok ))
|
||||
{
|
||||
if( com.stricmp( "-", tok.string ))
|
||||
{
|
||||
if( Shader_CheckSkybox( tok.string ))
|
||||
{
|
||||
shader_valid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
shader_valid = true;
|
||||
break; // new shader just reset skybox
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( !com.stricmp( "surfaceParm", tok.string ))
|
||||
{
|
||||
// check only far skybox images for existing
|
||||
// because near skybox without far will be ignored by engine
|
||||
if( Com_ReadToken( script, SC_ALLOW_PATHNAMES2, &tok ))
|
||||
{
|
||||
if( !com.stricmp( "sky", tok.string ))
|
||||
{
|
||||
shader_valid = true;
|
||||
break; // yes it's q3-style skyshader
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Com_CloseScript( script );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( !Shader_CheckSkybox( loadname ))
|
||||
{
|
||||
if( Shader_CheckSkybox( loadname ))
|
||||
shader_valid = true;
|
||||
else shader_valid = true;
|
||||
}
|
||||
else shader_valid = true;
|
||||
force_default = true;
|
||||
}
|
||||
}
|
||||
if( shader )
|
||||
{
|
||||
// already loaded, check parms
|
||||
if( shader->flags & SHADER_SKYPARMS && shader->skyParms )
|
||||
shader_valid = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// NULL names force to get current sky shader by user requesting
|
||||
return (tr.currentSkyShader) ? tr.currentSkyShader : tr.defaultShader;
|
||||
cache = Shader_GetCache( loadname, SHADER_INVALID, hashKey );
|
||||
if( cache )
|
||||
{
|
||||
script_t *script = Com_OpenScript( cache->name, cache->buffer, cache->size );
|
||||
token_t tok;
|
||||
|
||||
while( Com_ReadToken( script, SC_ALLOW_NEWLINES, &tok ))
|
||||
{
|
||||
if( !com.stricmp( "skyParms", tok.string ))
|
||||
{
|
||||
// check only far skybox images for existing
|
||||
// because near skybox without far will be ignored by engine
|
||||
if( Com_ReadToken( script, SC_ALLOW_PATHNAMES2, &tok ))
|
||||
{
|
||||
if( com.stricmp( "-", tok.string ))
|
||||
{
|
||||
if( Shader_CheckSkybox( tok.string ))
|
||||
{
|
||||
shader_valid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
shader_valid = true;
|
||||
break; // new shader just reset skybox
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( !com.stricmp( "surfaceParm", tok.string ))
|
||||
{
|
||||
// check only far skybox images for existing
|
||||
// because near skybox without far will be ignored by engine
|
||||
if( Com_ReadToken( script, SC_ALLOW_PATHNAMES2, &tok ))
|
||||
{
|
||||
if( !com.stricmp( "sky", tok.string ))
|
||||
{
|
||||
shader_valid = true;
|
||||
break; // yes it's q3-style skyshader
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Com_CloseScript( script );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( Shader_CheckSkybox( loadname ))
|
||||
shader_valid = true;
|
||||
force_default = true;
|
||||
}
|
||||
}
|
||||
|
||||
if( !shader_valid )
|
||||
{
|
||||
MsgDev( D_ERROR, "R_SetupSky: 'couldn't find shader '%s'\n", name );
|
||||
return (tr.currentSkyShader) ? tr.currentSkyShader : tr.defaultShader;
|
||||
return;
|
||||
}
|
||||
|
||||
if( tr.currentSkyShader == NULL )
|
||||
{
|
||||
if( !r_worldmodel ) MsgDev( D_ERROR, "R_SetupSky: map not loaded\n" );
|
||||
else MsgDev( D_NOTE, "R_SetupSky: map %s not contain sky surfaces\n", r_worldmodel->name );
|
||||
return (tr.currentSkyShader) ? tr.currentSkyShader : tr.defaultShader;
|
||||
MsgDev( D_ERROR, "R_SetupSky: tr.currentSkyShader == NULL\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
index = tr.currentSkyShader->shadernum;
|
||||
Shader_FreeShader( tr.currentSkyShader, FREE_FORCE ); // release old sky
|
||||
|
||||
// new sky shader
|
||||
tr.currentSkyShader = R_LoadShader( loadname, SHADER_SKY, force_default, 0, SHADER_INVALID );
|
||||
tr.currentSkyShader = R_LoadShader( loadname, SHADER_SKY, true, 0, SHADER_INVALID );
|
||||
if( index != tr.currentSkyShader->shadernum )
|
||||
MsgDev( D_ERROR, "R_SetupSky: mismatch shader indexes %i != %i\n", index, tr.currentSkyShader->shadernum );
|
||||
|
||||
return tr.currentSkyShader;
|
||||
Msg( "R_SetupSky( %s )\n", name );
|
||||
}
|
||||
|
||||
void R_FreeSky( void )
|
||||
{
|
||||
if( tr.currentSkyShader == NULL ) return; // already freed
|
||||
|
||||
// already freed ?
|
||||
if( tr.currentSkyShader == NULL ) return;
|
||||
Shader_FreeShader( tr.currentSkyShader, FREE_FORCE );
|
||||
tr.currentSkyShader = NULL;
|
||||
}
|
|
@ -1,107 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: vid_gl - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP579.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "../public" /I "../common" /I "../game_shared" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\vid_gl\!debug/" /Fo"..\temp\vid_gl\!debug/" /Fd"..\temp\vid_gl\!debug/" /FD /c
|
||||
"D:\Xash3D\src_main\vid_gl\r_backend.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_bloom.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_cin.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_cull.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_decals.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_draw.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_image.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_light.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_main.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_math.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_mesh.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_model.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_opengl.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_poly.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_program.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_register.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_shader.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_shadow.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_sky.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_sprite.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_studio.c"
|
||||
"D:\Xash3D\src_main\vid_gl\r_surf.c"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP579.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP57A.tmp" with contents
|
||||
[
|
||||
msvcrtd.lib user32.lib gdi32.lib /nologo /subsystem:windows /dll /incremental:yes /pdb:"..\temp\vid_gl\!debug/vid_gl.pdb" /debug /machine:I386 /nodefaultlib:"msvcrt.lib" /out:"..\temp\vid_gl\!debug/vid_gl.dll" /implib:"..\temp\vid_gl\!debug/vid_gl.lib" /pdbtype:sept
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_backend.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_bloom.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_cin.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_cull.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_decals.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_draw.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_image.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_light.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_main.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_math.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_mesh.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_model.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_opengl.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_poly.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_program.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_register.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_shader.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_shadow.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_sky.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_sprite.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_studio.obj"
|
||||
"\Xash3D\src_main\temp\vid_gl\!debug\r_surf.obj"
|
||||
]
|
||||
Creating command line "link.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP57A.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP57C.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\vid_gl\!debug\vid_gl.dll "D:\Xash3D\bin\vid_gl.dll"
|
||||
]
|
||||
Creating command line ""C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP57C.bat""
|
||||
Compiling...
|
||||
r_backend.c
|
||||
r_bloom.c
|
||||
r_cin.c
|
||||
r_cull.c
|
||||
r_decals.c
|
||||
r_draw.c
|
||||
r_image.c
|
||||
r_light.c
|
||||
r_main.c
|
||||
r_math.c
|
||||
r_mesh.c
|
||||
r_model.c
|
||||
r_opengl.c
|
||||
r_poly.c
|
||||
r_program.c
|
||||
r_register.c
|
||||
r_shader.c
|
||||
r_shadow.c
|
||||
r_sky.c
|
||||
r_sprite.c
|
||||
Generating Code...
|
||||
Compiling...
|
||||
r_studio.c
|
||||
r_surf.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library ..\temp\vid_gl\!debug/vid_gl.lib and object ..\temp\vid_gl\!debug/vid_gl.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\vid_gl\!debug\vid_gl.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
vid_gl.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -1,81 +0,0 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: xtools - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP588.tmp" with contents
|
||||
[
|
||||
/nologo /MDd /W3 /Gm /Gi /GX /ZI /Od /I "./" /I "../public" /I "bsplib" /I "ripper" /I "../common" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR"..\temp\xtools\!debug/" /Fo"..\temp\xtools\!debug/" /Fd"..\temp\xtools\!debug/" /FD /GZ /c
|
||||
"D:\Xash3D\src_main\xtools\bsplib.c"
|
||||
"D:\Xash3D\src_main\xtools\ripper\conv_bsplumps.c"
|
||||
"D:\Xash3D\src_main\xtools\ripper\conv_doom.c"
|
||||
"D:\Xash3D\src_main\xtools\ripper\conv_image.c"
|
||||
"D:\Xash3D\src_main\xtools\ripper\conv_main.c"
|
||||
"D:\Xash3D\src_main\xtools\ripper\conv_shader.c"
|
||||
"D:\Xash3D\src_main\xtools\ripper\conv_sprite.c"
|
||||
"D:\Xash3D\src_main\xtools\spritegen.c"
|
||||
"D:\Xash3D\src_main\xtools\studio.c"
|
||||
"D:\Xash3D\src_main\xtools\studio_utils.c"
|
||||
"D:\Xash3D\src_main\xtools\utils.c"
|
||||
"D:\Xash3D\src_main\xtools\wadlib.c"
|
||||
"D:\Xash3D\src_main\xtools\ximage.c"
|
||||
"D:\Xash3D\src_main\xtools\xtools.c"
|
||||
]
|
||||
Creating command line "cl.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP588.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP589.tmp" with contents
|
||||
[
|
||||
msvcrtd.lib user32.lib /nologo /dll /incremental:yes /pdb:"..\temp\xtools\!debug/xtools.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"..\temp\xtools\!debug/xtools.dll" /implib:"..\temp\xtools\!debug/xtools.lib" /pdbtype:sept
|
||||
"\Xash3D\src_main\temp\xtools\!debug\bsplib.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\conv_bsplumps.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\conv_doom.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\conv_image.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\conv_main.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\conv_shader.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\conv_sprite.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\spritegen.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\studio.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\studio_utils.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\utils.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\wadlib.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\ximage.obj"
|
||||
"\Xash3D\src_main\temp\xtools\!debug\xtools.obj"
|
||||
]
|
||||
Creating command line "link.exe @"C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP589.tmp""
|
||||
Creating temporary file "C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP58A.bat" with contents
|
||||
[
|
||||
@echo off
|
||||
copy \Xash3D\src_main\temp\xtools\!debug\xtools.dll "D:\Xash3D\bin\xtools.dll"
|
||||
]
|
||||
Creating command line ""C:\DOCUME~1\ÌÈØÀ\LOCALS~1\Temp\RSP58A.bat""
|
||||
Compiling...
|
||||
bsplib.c
|
||||
conv_bsplumps.c
|
||||
conv_doom.c
|
||||
conv_image.c
|
||||
conv_main.c
|
||||
conv_shader.c
|
||||
conv_sprite.c
|
||||
spritegen.c
|
||||
studio.c
|
||||
studio_utils.c
|
||||
utils.c
|
||||
wadlib.c
|
||||
ximage.c
|
||||
xtools.c
|
||||
Generating Code...
|
||||
Linking...
|
||||
Creating library ..\temp\xtools\!debug/xtools.lib and object ..\temp\xtools\!debug/xtools.exp
|
||||
<h3>Output Window</h3>
|
||||
Performing Custom Build Step on \Xash3D\src_main\temp\xtools\!debug\xtools.dll
|
||||
‘ª®¯¨à®¢ ® ä ©«®¢: 1.
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
xtools.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue