mirror of
https://github.com/YGGverse/xash3d-fwgs.git
synced 2025-01-30 08:44:31 +00:00
ref: make API thinner by moving simple calls into EngineGetParm(RenderGetParm with ref extensions), fix some UBs
This commit is contained in:
parent
8abbef8dbd
commit
92b89936b3
@ -85,6 +85,7 @@ color24 gTracerColors[] =
|
||||
#define FTENT_SCALE 0x00100000 // An experiment
|
||||
|
||||
typedef struct tempent_s TEMPENTITY;
|
||||
struct pmtrace_s;
|
||||
typedef struct tempent_s
|
||||
{
|
||||
int flags;
|
||||
|
@ -235,7 +235,8 @@ typedef struct render_api_s
|
||||
float (*pfnTime)( void ); // Sys_DoubleTime
|
||||
void (*Cvar_Set)( const char *name, const char *value );
|
||||
void (*S_FadeMusicVolume)( float fadePercent ); // fade background track (0-100 percents)
|
||||
void (*SetRandomSeed)( long lSeed ); // set custom seed for RANDOM_FLOAT\RANDOM_LONG for predictable random
|
||||
// a1ba: changed long to int
|
||||
void (*SetRandomSeed)( int lSeed ); // set custom seed for RANDOM_FLOAT\RANDOM_LONG for predictable random
|
||||
// ONLY ADD NEW FUNCTIONS TO THE END OF THIS STRUCT. INTERFACE VERSION IS FROZEN AT 37
|
||||
} render_api_t;
|
||||
|
||||
|
@ -3177,7 +3177,7 @@ TriWorldToScreen
|
||||
convert world coordinates (x,y,z) into screen (x, y)
|
||||
=============
|
||||
*/
|
||||
int TriWorldToScreen( float *world, float *screen )
|
||||
int TriWorldToScreen( const float *world, float *screen )
|
||||
{
|
||||
int retval;
|
||||
|
||||
@ -3281,7 +3281,7 @@ Demo_IsPlayingback
|
||||
|
||||
=================
|
||||
*/
|
||||
int Demo_IsPlayingback( void )
|
||||
static int Demo_IsPlayingback( void )
|
||||
{
|
||||
return cls.demoplayback;
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ static void *pfnGetNativeObject( const char *obj )
|
||||
return Platform_GetNativeObject( obj );
|
||||
}
|
||||
|
||||
void IN_TouchHideButtons(const char *str, qboolean hide)
|
||||
void IN_TouchHideButtons( const char *str, qboolean hide )
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -135,7 +135,7 @@ const char *CL_GenericHandle( int fileindex )
|
||||
return cl.files_precache[fileindex];
|
||||
}
|
||||
|
||||
int CL_RenderGetParm( int parm, int arg, const qboolean checkRef )
|
||||
int CL_RenderGetParm( const int parm, const int arg, const qboolean checkRef )
|
||||
{
|
||||
switch( parm )
|
||||
{
|
||||
@ -163,7 +163,41 @@ int CL_RenderGetParm( int parm, int arg, const qboolean checkRef )
|
||||
case PARM_WATER_ALPHA:
|
||||
return FBitSet( world.flags, FWORLD_WATERALPHA );
|
||||
default:
|
||||
if( checkRef ) return ref.dllFuncs.RenderGetParm( parm, arg );
|
||||
// indicates call from client.dll
|
||||
if( checkRef )
|
||||
{
|
||||
return ref.dllFuncs.RefGetParm( parm, arg );
|
||||
}
|
||||
// call issued from ref_dll, check extensions here
|
||||
else switch( parm )
|
||||
{
|
||||
case PARM_DEV_OVERVIEW:
|
||||
return CL_IsDevOverviewMode();
|
||||
case PARM_THIRDPERSON:
|
||||
return CL_IsThirdPerson();
|
||||
case PARM_QUAKE_COMPATIBLE:
|
||||
return Host_IsQuakeCompatible();
|
||||
case PARM_PLAYER_INDEX:
|
||||
return cl.playernum + 1;
|
||||
case PARM_VIEWENT_INDEX:
|
||||
return cl.viewentity;
|
||||
case PARM_CONNSTATE:
|
||||
return (int)cls.state;
|
||||
case PARM_PLAYING_DEMO:
|
||||
return cls.demoplayback;
|
||||
case PARM_WATER_LEVEL:
|
||||
return cl.local.waterlevel;
|
||||
case PARM_MAX_CLIENTS:
|
||||
return cl.maxclients;
|
||||
case PARM_LOCAL_HEALTH:
|
||||
return cl.local.health;
|
||||
case PARM_LOCAL_GAME:
|
||||
return Host_IsLocalGame();
|
||||
case PARM_NUMENTITIES:
|
||||
return pfnNumberOfEntities();
|
||||
case PARM_NUMMODELS:
|
||||
return cl.nummodels;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -186,7 +220,7 @@ static render_api_t gRenderAPI =
|
||||
NULL, // R_SetCurrentEntity,
|
||||
NULL, // R_SetCurrentModel,
|
||||
R_FatPVS,
|
||||
NULL, // R_StoreEfrags,
|
||||
R_StoreEfrags,
|
||||
NULL, // GL_FindTexture,
|
||||
NULL, // GL_TextureName,
|
||||
NULL, // GL_TextureData,
|
||||
@ -216,7 +250,7 @@ static render_api_t gRenderAPI =
|
||||
NULL, // GL_TexGen,
|
||||
NULL, // GL_TextureTarget,
|
||||
NULL, // GL_SetTexCoordArrayMode,
|
||||
NULL, // GL_GetProcAddress,
|
||||
GL_GetProcAddress,
|
||||
NULL, // GL_UpdateTexSize,
|
||||
NULL,
|
||||
NULL,
|
||||
@ -242,6 +276,39 @@ static render_api_t gRenderAPI =
|
||||
COM_SetRandomSeed,
|
||||
};
|
||||
|
||||
static void R_FillRenderAPIFromRef( render_api_t *to, const ref_interface_t *from )
|
||||
{
|
||||
to->GetDetailScaleForTexture = from->GetDetailScaleForTexture;
|
||||
to->GetExtraParmsForTexture = from->GetExtraParmsForTexture;
|
||||
to->GetFrameTime = from->GetFrameTime;
|
||||
to->R_SetCurrentEntity = from->R_SetCurrentEntity;
|
||||
to->R_SetCurrentModel = from->R_SetCurrentModel;
|
||||
to->GL_FindTexture = from->GL_FindTexture;
|
||||
to->GL_TextureName = from->GL_TextureName;
|
||||
to->GL_TextureData = from->GL_TextureData;
|
||||
to->GL_LoadTexture = from->GL_LoadTexture;
|
||||
to->GL_CreateTexture = from->GL_CreateTexture;
|
||||
to->GL_LoadTextureArray = from->GL_LoadTextureArray;
|
||||
to->GL_CreateTextureArray = from->GL_CreateTextureArray;
|
||||
to->GL_FreeTexture = from->GL_FreeTexture;
|
||||
to->DrawSingleDecal = from->DrawSingleDecal;
|
||||
to->R_DecalSetupVerts = from->R_DecalSetupVerts;
|
||||
to->R_EntityRemoveDecals = from->R_EntityRemoveDecals;
|
||||
to->AVI_UploadRawFrame = from->AVI_UploadRawFrame;
|
||||
to->GL_Bind = from->GL_Bind;
|
||||
to->GL_SelectTexture = from->GL_SelectTexture;
|
||||
to->GL_LoadTextureMatrix = from->GL_LoadTextureMatrix;
|
||||
to->GL_TexMatrixIdentity = from->GL_TexMatrixIdentity;
|
||||
to->GL_CleanUpTextureUnits = from->GL_CleanUpTextureUnits;
|
||||
to->GL_TexGen = from->GL_TexGen;
|
||||
to->GL_TextureTarget = from->GL_TextureTarget;
|
||||
to->GL_TexCoordArrayMode = from->GL_TexCoordArrayMode;
|
||||
to->GL_UpdateTexSize = from->GL_UpdateTexSize;
|
||||
to->GL_DrawParticles = from->GL_DrawParticles;
|
||||
to->LightVec = from->LightVec;
|
||||
to->StudioGetTexture = from->StudioGetTexture;
|
||||
}
|
||||
|
||||
/*
|
||||
===============
|
||||
R_InitRenderAPI
|
||||
@ -255,38 +322,7 @@ qboolean R_InitRenderAPI( void )
|
||||
memset( &clgame.drawFuncs, 0, sizeof( clgame.drawFuncs ));
|
||||
|
||||
// fill missing functions from renderer
|
||||
gRenderAPI.GetDetailScaleForTexture = ref.dllFuncs.GetDetailScaleForTexture;
|
||||
gRenderAPI.GetExtraParmsForTexture = ref.dllFuncs.GetDetailScaleForTexture;
|
||||
gRenderAPI.GetFrameTime = ref.dllFuncs.GetFrameTime;
|
||||
gRenderAPI.R_SetCurrentEntity = ref.dllFuncs.R_SetCurrentEntity;
|
||||
gRenderAPI.R_SetCurrentModel = ref.dllFuncs.R_SetCurrentModel;
|
||||
gRenderAPI.R_StoreEfrags = R_StoreEfrags;
|
||||
gRenderAPI.GL_FindTexture = ref.dllFuncs.GL_FindTexture;
|
||||
gRenderAPI.GL_TextureName = ref.dllFuncs.GL_TextureName;
|
||||
gRenderAPI.GL_TextureData = ref.dllFuncs.GL_TextureData;
|
||||
gRenderAPI.GL_LoadTexture = ref.dllFuncs.GL_LoadTexture;
|
||||
gRenderAPI.GL_CreateTexture = ref.dllFuncs.GL_CreateTexture;
|
||||
gRenderAPI.GL_LoadTextureArray = ref.dllFuncs.GL_LoadTextureArray;
|
||||
gRenderAPI.GL_CreateTextureArray = ref.dllFuncs.GL_CreateTextureArray;
|
||||
gRenderAPI.GL_FreeTexture = ref.dllFuncs.GL_FreeTexture;
|
||||
gRenderAPI.DrawSingleDecal = ref.dllFuncs.DrawSingleDecal;
|
||||
gRenderAPI.R_DecalSetupVerts = ref.dllFuncs.R_DecalSetupVerts;
|
||||
gRenderAPI.R_EntityRemoveDecals = ref.dllFuncs.R_EntityRemoveDecals;
|
||||
gRenderAPI.AVI_UploadRawFrame = ref.dllFuncs.AVI_UploadRawFrame;
|
||||
gRenderAPI.GL_Bind = ref.dllFuncs.GL_Bind;
|
||||
gRenderAPI.GL_SelectTexture = ref.dllFuncs.GL_SelectTexture;
|
||||
gRenderAPI.GL_LoadTextureMatrix = ref.dllFuncs.GL_LoadTextureMatrix;
|
||||
gRenderAPI.GL_TexMatrixIdentity = ref.dllFuncs.GL_TexMatrixIdentity;
|
||||
gRenderAPI.GL_CleanUpTextureUnits = ref.dllFuncs.GL_CleanUpTextureUnits;
|
||||
gRenderAPI.GL_TexGen = ref.dllFuncs.GL_TexGen;
|
||||
gRenderAPI.GL_TextureTarget = ref.dllFuncs.GL_TextureTarget;
|
||||
gRenderAPI.GL_TexCoordArrayMode = ref.dllFuncs.GL_TexCoordArrayMode;
|
||||
gRenderAPI.GL_GetProcAddress = GL_GetProcAddress;
|
||||
gRenderAPI.GL_UpdateTexSize = ref.dllFuncs.GL_UpdateTexSize;
|
||||
gRenderAPI.GL_DrawParticles = ref.dllFuncs.GL_DrawParticles;
|
||||
gRenderAPI.LightVec = ref.dllFuncs.LightVec;
|
||||
gRenderAPI.StudioGetTexture = ref.dllFuncs.StudioGetTexture;
|
||||
|
||||
R_FillRenderAPIFromRef( &gRenderAPI, &ref.dllFuncs );
|
||||
|
||||
if( clgame.dllFuncs.pfnGetRenderInterface )
|
||||
{
|
||||
|
@ -109,7 +109,7 @@ void TriColor4f( float r, float g, float b, float a );
|
||||
void TriColor4ub( byte r, byte g, byte b, byte a );
|
||||
void TriBrightness( float brightness );
|
||||
void TriCullFace( TRICULLSTYLE mode );
|
||||
int TriWorldToScreen( float *world, float *screen );
|
||||
int TriWorldToScreen( const float *world, float *screen );
|
||||
int TriBoxInPVS( float *mins, float *maxs );
|
||||
void TriLightAtPoint( float *pos, float *value );
|
||||
void TriColor4fRendermode( float r, float g, float b, float a, int rendermode );
|
||||
|
@ -275,16 +275,6 @@ of server connections
|
||||
|
||||
==================================================================
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ca_disconnected = 0,// not talking to a server
|
||||
ca_connecting, // sending request packets to the server
|
||||
ca_connected, // netchan_t established, waiting for svc_serverdata
|
||||
ca_validate, // download resources, validating, auth on server
|
||||
ca_active, // game views should be displayed
|
||||
ca_cinematic, // playing a cinematic, not connected to a server
|
||||
} connstate_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
scrshot_inactive,
|
||||
@ -831,7 +821,6 @@ void CL_PlayerTrace( float *start, float *end, int traceFlags, int ignore_pe, pm
|
||||
void CL_PlayerTraceExt( float *start, float *end, int traceFlags, int (*pfnIgnore)( physent_t *pe ), pmtrace_t *tr );
|
||||
void CL_SetTraceHull( int hull );
|
||||
void CL_GetMousePosition( int *mx, int *my ); // TODO: move to input
|
||||
int Demo_IsPlayingback( void );
|
||||
cl_entity_t* CL_GetViewModel( void );
|
||||
void pfnGetScreenFade( struct screenfade_s *fade );
|
||||
physent_t *pfnGetPhysent( int idx );
|
||||
@ -958,7 +947,7 @@ void CL_ClearAllRemaps( void );
|
||||
// cl_render.c
|
||||
//
|
||||
qboolean R_InitRenderAPI( void );
|
||||
int CL_RenderGetParm( int parm, int arg, const qboolean checkRef );
|
||||
int CL_RenderGetParm( const int parm, const int arg, const qboolean checkRef );
|
||||
lightstyle_t *CL_GetLightStyle( int number );
|
||||
int R_FatPVS( const vec3_t org, float radius, byte *visbuffer, qboolean merge, qboolean fullvis );
|
||||
const ref_overview_t *GL_GetOverviewParms( void );
|
||||
|
@ -883,7 +883,7 @@ static int Con_DrawGenericChar( int x, int y, int number, rgba_t color )
|
||||
return con.curFont->charWidths[number];
|
||||
|
||||
// don't apply color to fixed fonts it's already colored
|
||||
if( con.curFont->type != FONT_FIXED || RENDER_GET_PARM( PARM_TEX_GLFORMAT, 0x8045 ) ) // GL_LUMINANCE8_ALPHA8
|
||||
if( con.curFont->type != FONT_FIXED || REF_GET_PARM( PARM_TEX_GLFORMAT, 0x8045 ) ) // GL_LUMINANCE8_ALPHA8
|
||||
ref.dllFuncs.Color4ub( color[0], color[1], color[2], color[3] );
|
||||
else ref.dllFuncs.Color4ub( 255, 255, 255, color[3] );
|
||||
|
||||
|
@ -16,8 +16,8 @@ convar_t *gl_wgl_msaa_samples;
|
||||
|
||||
void R_GetTextureParms( int *w, int *h, int texnum )
|
||||
{
|
||||
if( w ) *w = RENDER_GET_PARM( PARM_TEX_WIDTH, texnum );
|
||||
if( h ) *h = RENDER_GET_PARM( PARM_TEX_HEIGHT, texnum );
|
||||
if( w ) *w = REF_GET_PARM( PARM_TEX_WIDTH, texnum );
|
||||
if( h ) *h = REF_GET_PARM( PARM_TEX_HEIGHT, texnum );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -35,52 +35,11 @@ void GL_FreeImage( const char *name )
|
||||
ref.dllFuncs.GL_FreeTexture( texnum );
|
||||
}
|
||||
|
||||
static int TriGetRenderMode( void )
|
||||
{
|
||||
return clgame.ds.renderMode;
|
||||
}
|
||||
|
||||
static int pfnRefRenderGetParm( int parm, int arg )
|
||||
static int pfnEngineGetParm( int parm, int arg )
|
||||
{
|
||||
return CL_RenderGetParm( parm, arg, false ); // prevent recursion
|
||||
}
|
||||
|
||||
static int pfnGetPlayerIndex( void )
|
||||
{
|
||||
return cl.playernum + 1;
|
||||
}
|
||||
|
||||
static int pfnGetViewEntIndex( void )
|
||||
{
|
||||
return cl.viewentity;
|
||||
}
|
||||
|
||||
static ref_connstate_t pfnCL_GetConnState( void )
|
||||
{
|
||||
switch( cls.state )
|
||||
{
|
||||
case ca_disconnected: return ref_ca_disconnected;
|
||||
case ca_connecting: return ref_ca_connecting;
|
||||
case ca_connected: return ref_ca_connected;
|
||||
case ca_validate: return ref_ca_validate;
|
||||
case ca_active: return ref_ca_active;
|
||||
case ca_cinematic: return ref_ca_cinematic;
|
||||
default:
|
||||
ASSERT( 0 );
|
||||
}
|
||||
return ref_ca_disconnected;
|
||||
}
|
||||
|
||||
static int pfnGetWaterLevel( void )
|
||||
{
|
||||
return cl.local.waterlevel;
|
||||
}
|
||||
|
||||
static int pfnGetLocalHealth( void )
|
||||
{
|
||||
return cl.local.health;
|
||||
}
|
||||
|
||||
static void pfnCbuf_SetOpenGLConfigHack( qboolean set )
|
||||
{
|
||||
host.apply_opengl_config = set;
|
||||
@ -140,11 +99,6 @@ static void pfnMod_SetCurrentLoadingModel( model_t *m )
|
||||
loadmodel = m;
|
||||
}
|
||||
|
||||
static int pfnCL_NumModels( void )
|
||||
{
|
||||
return cl.nummodels;
|
||||
}
|
||||
|
||||
static void pfnGetPredictedOrigin( vec3_t v )
|
||||
{
|
||||
VectorCopy( cl.simorg, v );
|
||||
@ -207,7 +161,7 @@ static byte *pfnImage_GetPool( void )
|
||||
return host.imagepool;
|
||||
}
|
||||
|
||||
static struct bpc_desc_s *pfnImage_GetPFDesc( int idx )
|
||||
static const bpc_desc_t *pfnImage_GetPFDesc( int idx )
|
||||
{
|
||||
return &PFDesc[idx];
|
||||
}
|
||||
@ -222,20 +176,14 @@ static void pfnDrawTransparentTriangles( void )
|
||||
clgame.dllFuncs.pfnDrawTransparentTriangles();
|
||||
}
|
||||
|
||||
static screenfade_t *pfnRefGetScreenFade( void )
|
||||
{
|
||||
return &clgame.fade;
|
||||
}
|
||||
|
||||
static ref_api_t gEngfuncs =
|
||||
{
|
||||
CL_IsDevOverviewMode,
|
||||
CL_IsThirdPerson,
|
||||
Host_IsQuakeCompatible,
|
||||
pfnGetPlayerIndex,
|
||||
pfnGetViewEntIndex,
|
||||
pfnCL_GetConnState,
|
||||
Demo_IsPlayingback,
|
||||
pfnGetWaterLevel,
|
||||
pfnRefRenderGetParm,
|
||||
CL_GetMaxClients,
|
||||
pfnGetLocalHealth,
|
||||
Host_IsLocalGame,
|
||||
pfnEngineGetParm,
|
||||
|
||||
Cvar_Get,
|
||||
Cvar_FindVarExt,
|
||||
@ -271,7 +219,6 @@ static ref_api_t gEngfuncs =
|
||||
CL_GetLocalPlayer,
|
||||
CL_GetViewModel,
|
||||
CL_GetEntityByIndex,
|
||||
pfnNumberOfEntities,
|
||||
R_BeamGetEntity,
|
||||
CL_GetWaterEntity,
|
||||
CL_AddVisibleEntity,
|
||||
@ -301,7 +248,6 @@ static ref_api_t gEngfuncs =
|
||||
CL_ModelHandle,
|
||||
pfnMod_GetCurrentLoadingModel,
|
||||
pfnMod_SetCurrentLoadingModel,
|
||||
pfnCL_NumModels,
|
||||
|
||||
CL_GetRemapInfoForEntity,
|
||||
CL_AllocRemapInfo,
|
||||
@ -315,7 +261,7 @@ static ref_api_t gEngfuncs =
|
||||
COM_SetRandomSeed,
|
||||
COM_RandomFloat,
|
||||
COM_RandomLong,
|
||||
pfnGetScreenFade,
|
||||
pfnRefGetScreenFade,
|
||||
CL_TextMessageGet,
|
||||
pfnGetPredictedOrigin,
|
||||
pfnCL_GetPaletteColor,
|
||||
|
@ -33,7 +33,7 @@ extern ref_globals_t refState;
|
||||
|
||||
// handy API wrappers
|
||||
void R_GetTextureParms( int *w, int *h, int texnum );
|
||||
#define RENDER_GET_PARM( parm, arg ) ref.dllFuncs.RenderGetParm( (parm), (arg) )
|
||||
#define REF_GET_PARM( parm, arg ) ref.dllFuncs.RefGetParm( (parm), (arg) )
|
||||
#define GL_LoadTextureInternal( name, pic, flags ) ref.dllFuncs.GL_LoadTextureFromBuffer( name, pic, flags, false )
|
||||
#define GL_UpdateTextureInternal( name, pic, flags ) ref.dllFuncs.GL_LoadTextureFromBuffer( name, pic, flags, true )
|
||||
|
||||
|
@ -606,7 +606,7 @@ void VOX_ReadSentenceFile( const char *psentenceFileName )
|
||||
{
|
||||
char c, *pch, *pFileData;
|
||||
char *pchlast, *pSentenceData;
|
||||
size_t fileSize;
|
||||
fs_offset_t fileSize;
|
||||
|
||||
// load file
|
||||
pFileData = (char *)FS_LoadFile( psentenceFileName, &fileSize, false );
|
||||
|
@ -1924,7 +1924,7 @@ static void Mod_LoadTextures( dbspmodel_t *bmod )
|
||||
}
|
||||
|
||||
// check for luma texture
|
||||
if( FBitSet( RENDER_GET_PARM( PARM_TEX_FLAGS, tx->gl_texturenum ), TF_HAS_LUMA ))
|
||||
if( FBitSet( REF_GET_PARM( PARM_TEX_FLAGS, tx->gl_texturenum ), TF_HAS_LUMA ))
|
||||
{
|
||||
Q_snprintf( texname, sizeof( texname ), "#%s:%s_luma.mip", loadstat.name, mt->name );
|
||||
|
||||
|
@ -398,6 +398,7 @@ struct playermove_s;
|
||||
struct clientdata_s;
|
||||
struct usercmd_s;
|
||||
struct edict_s;
|
||||
struct netadr_s;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -82,7 +82,7 @@ typedef enum
|
||||
typedef struct vidmode_s vidmode_t;
|
||||
|
||||
// Window
|
||||
qboolean R_Init_Video( void );
|
||||
qboolean R_Init_Video( const int type );
|
||||
void R_Free_Video( void );
|
||||
qboolean VID_SetMode( void );
|
||||
rserr_t R_ChangeDisplaySettings( int width, int height, qboolean fullscreen );
|
||||
|
@ -518,7 +518,7 @@ int GL_GetAttribute( int attr, int *val )
|
||||
R_Init_Video
|
||||
==================
|
||||
*/
|
||||
qboolean R_Init_Video( void )
|
||||
qboolean R_Init_Video( const int type )
|
||||
{
|
||||
SDL_DisplayMode displayMode;
|
||||
string safe;
|
||||
@ -529,6 +529,11 @@ qboolean R_Init_Video( void )
|
||||
glw_state.desktopWidth = displayMode.w;
|
||||
glw_state.desktopHeight = displayMode.h;
|
||||
|
||||
if( type != REF_GL )
|
||||
{
|
||||
Host_Error( "Can't initialize unknown context type %d!\n", type );
|
||||
}
|
||||
|
||||
if( !glw_state.safe && Sys_GetParmFromCmdLine( "-safegl", safe ) )
|
||||
glw_state.safe = bound( SAFE_NO, Q_atoi( safe ), SAFE_DONTCARE );
|
||||
|
||||
|
@ -135,15 +135,15 @@ enum ref_shared_texture_e
|
||||
REF_ALPHASKY_TEXTURE,
|
||||
};
|
||||
|
||||
typedef enum ref_connstate_e
|
||||
typedef enum connstate_e
|
||||
{
|
||||
ref_ca_disconnected = 0,// not talking to a server
|
||||
ref_ca_connecting, // sending request packets to the server
|
||||
ref_ca_connected, // netchan_t established, waiting for svc_serverdata
|
||||
ref_ca_validate, // download resources, validating, auth on server
|
||||
ref_ca_active, // game views should be displayed
|
||||
ref_ca_cinematic, // playing a cinematic, not connected to a server
|
||||
} ref_connstate_t;
|
||||
ca_disconnected = 0,// not talking to a server
|
||||
ca_connecting, // sending request packets to the server
|
||||
ca_connected, // netchan_t established, waiting for svc_serverdata
|
||||
ca_validate, // download resources, validating, auth on server
|
||||
ca_active, // game views should be displayed
|
||||
ca_cinematic, // playing a cinematic, not connected to a server
|
||||
} connstate_t;
|
||||
|
||||
enum ref_defaultsprite_e
|
||||
{
|
||||
@ -216,9 +216,6 @@ enum
|
||||
REF_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008
|
||||
};
|
||||
|
||||
|
||||
struct con_nprint_s;
|
||||
struct engine_studio_api_s;
|
||||
typedef struct remap_info_s
|
||||
{
|
||||
unsigned short textures[MAX_SKINS];// alias textures
|
||||
@ -229,21 +226,30 @@ typedef struct remap_info_s
|
||||
model_t *model; // for catch model changes
|
||||
} remap_info_t;
|
||||
|
||||
struct con_nprint_s;
|
||||
struct engine_studio_api_s;
|
||||
struct r_studio_interface_s;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PARM_DEV_OVERVIEW = -1,
|
||||
PARM_THIRDPERSON = -2,
|
||||
PARM_QUAKE_COMPATIBLE = -3,
|
||||
PARM_PLAYER_INDEX = -4, // cl.playernum + 1
|
||||
PARM_VIEWENT_INDEX = -5, // cl.viewentity
|
||||
PARM_CONNSTATE = -6, // cls.state
|
||||
PARM_PLAYING_DEMO = -7, // cls.demoplayback
|
||||
PARM_WATER_LEVEL = -8, // cl.local.water_level
|
||||
PARM_MAX_CLIENTS = -9, // cl.maxclients
|
||||
PARM_LOCAL_HEALTH = -10, // cl.local.health
|
||||
PARM_LOCAL_GAME = -11,
|
||||
PARM_NUMENTITIES = -12, // local game only
|
||||
PARM_NUMMODELS = -13, // cl.nummodels
|
||||
} ref_parm_e;
|
||||
|
||||
typedef struct ref_api_s
|
||||
{
|
||||
qboolean (*CL_IsDevOverviewMode)( void );
|
||||
qboolean (*CL_IsThirdPersonMode)( void );
|
||||
qboolean (*Host_IsQuakeCompatible)( void );
|
||||
int (*GetPlayerIndex)( void ); // cl.playernum + 1
|
||||
int (*GetViewEntIndex)( void ); // cl.viewentity
|
||||
ref_connstate_t (*CL_GetConnState)( void ); // cls.state == ca_connected
|
||||
int (*IsDemoPlaying)( void ); // cls.demoplayback
|
||||
int (*GetWaterLevel)( void ); // cl.local.waterlevel
|
||||
int (*CL_GetRenderParm)( int parm, int arg ); // generic int (*GetMaxClients)( void );
|
||||
int (*GetMaxClients)( void ); // cl.maxclients
|
||||
int (*GetLocalHealth)( void ); // cl.local.health
|
||||
qboolean (*Host_IsLocalGame)( void );
|
||||
int (*EngineGetParm)( int parm, int arg ); // generic
|
||||
|
||||
// cvar handlers
|
||||
cvar_t *(*Cvar_Get)( const char *szName, const char *szValue, int flags, const char *description );
|
||||
@ -257,7 +263,7 @@ typedef struct ref_api_s
|
||||
|
||||
// command handlers
|
||||
int (*Cmd_AddCommand)( const char *cmd_name, void (*function)(void), const char *description );
|
||||
int (*Cmd_RemoveCommand)( const char *cmd_name );
|
||||
void (*Cmd_RemoveCommand)( const char *cmd_name );
|
||||
int (*Cmd_Argc)( void );
|
||||
const char *(*Cmd_Argv)( int arg );
|
||||
const char *(*Cmd_Args)( void );
|
||||
@ -276,7 +282,7 @@ typedef struct ref_api_s
|
||||
// debug print
|
||||
void (*Con_NPrintf)( int pos, const char *fmt, ... );
|
||||
void (*Con_NXPrintf)( struct con_nprint_s *info, const char *fmt, ... );
|
||||
void (*CL_CenterPrint)( const char *fmt, ... );
|
||||
void (*CL_CenterPrint)( const char *s, float y );
|
||||
void (*Con_DrawStringLen)( const char *pText, int *length, int *height );
|
||||
int (*Con_DrawString)( int x, int y, const char *string, rgba_t setColor );
|
||||
void (*CL_DrawCenterPrint)();
|
||||
@ -285,7 +291,6 @@ typedef struct ref_api_s
|
||||
struct cl_entity_s *(*GetLocalPlayer)( void );
|
||||
struct cl_entity_s *(*GetViewModel)( void );
|
||||
struct cl_entity_s *(*GetEntityByIndex)( int idx );
|
||||
int (*pfnNumberOfEntities)( void );
|
||||
struct cl_entity_s *(*R_BeamGetEntity)( int index );
|
||||
struct cl_entity_s *(*CL_GetWaterEntity)( vec3_t p );
|
||||
qboolean (*CL_AddVisibleEntity)( cl_entity_t *ent, int entityType );
|
||||
@ -319,7 +324,6 @@ typedef struct ref_api_s
|
||||
struct model_s *(*pfnGetModelByIndex)( int index ); // CL_ModelHandle
|
||||
struct model_s *(*Mod_GetCurrentLoadingModel)( void ); // loadmodel
|
||||
void (*Mod_SetCurrentLoadingModel)( struct model_s* ); // loadmodel
|
||||
int (*CL_NumModels)( void ); // cl.nummodels
|
||||
|
||||
// remap
|
||||
struct remap_info_s *(*CL_GetRemapInfoForEntity)( cl_entity_t *e );
|
||||
@ -415,7 +419,7 @@ typedef struct ref_api_s
|
||||
void (*FS_FreeImage)( rgbdata_t *pack );
|
||||
void (*Image_SetMDLPointer)( byte *p );
|
||||
byte *(*Image_GetPool)( void );
|
||||
struct bpc_desc_s *(*Image_GetPFDesc)( int idx );
|
||||
const struct bpc_desc_s *(*Image_GetPFDesc)( int idx );
|
||||
|
||||
// client exports
|
||||
void (*pfnDrawNormalTriangles)( void );
|
||||
@ -523,7 +527,7 @@ typedef struct ref_interface_s
|
||||
|
||||
// Xash3D Render Interface
|
||||
// Get renderer info (doesn't changes engine state at all)
|
||||
int (*RenderGetParm)( int parm, int arg ); // generic
|
||||
int (*RefGetParm)( int parm, int arg ); // generic
|
||||
void (*GetDetailScaleForTexture)( int texture, float *xScale, float *yScale );
|
||||
void (*GetExtraParmsForTexture)( int texture, byte *red, byte *green, byte *blue, byte *alpha );
|
||||
float (*GetFrameTime)( void );
|
||||
|
@ -19,7 +19,6 @@ GNU General Public License for more details.
|
||||
#include "triangleapi.h"
|
||||
#include "alias.h"
|
||||
#include "pm_local.h"
|
||||
#include "cl_tent.h"
|
||||
#include "pmtrace.h"
|
||||
|
||||
extern cvar_t r_shadows;
|
||||
@ -803,7 +802,7 @@ void R_AliasDynamicLight( cl_entity_t *ent, alight_t *plight )
|
||||
msurface_t *psurf = NULL;
|
||||
pmtrace_t trace;
|
||||
|
||||
if( FBitSet( gEngfuncs.CL_GetRenderParm( PARM_FEATURES, 0 ), ENGINE_WRITE_LARGE_COORD ))
|
||||
if( FBitSet( ENGINE_GET_PARM( PARM_FEATURES ), ENGINE_WRITE_LARGE_COORD ))
|
||||
{
|
||||
vecEnd[0] = origin[0] - mv->skyvec_x * 65536.0f;
|
||||
vecEnd[1] = origin[1] - mv->skyvec_y * 65536.0f;
|
||||
@ -1170,7 +1169,7 @@ void R_AliasLerpMovement( cl_entity_t *e )
|
||||
if( g_alias.interpolate && ( g_alias.time < e->curstate.animtime + 1.0f ) && ( e->curstate.animtime != e->latched.prevanimtime ))
|
||||
f = ( g_alias.time - e->curstate.animtime ) / ( e->curstate.animtime - e->latched.prevanimtime );
|
||||
|
||||
if( gEngfuncs.IsDemoPlaying() == DEMO_QUAKE1 )
|
||||
if( ENGINE_GET_PARM( PARM_PLAYING_DEMO ) == DEMO_QUAKE1 )
|
||||
f = f + 1.0f;
|
||||
|
||||
g_alias.lerpfrac = bound( 0.0f, f, 1.0f );
|
||||
@ -1388,7 +1387,7 @@ void R_DrawAliasModel( cl_entity_t *e )
|
||||
|
||||
R_AliasLerpMovement( e );
|
||||
|
||||
if( !FBitSet( gEngfuncs.CL_GetRenderParm( PARM_FEATURES, 0 ), ENGINE_COMPENSATE_QUAKE_BUG ))
|
||||
if( !FBitSet( ENGINE_GET_PARM( PARM_FEATURES ), ENGINE_COMPENSATE_QUAKE_BUG ))
|
||||
e->angles[PITCH] = -e->angles[PITCH]; // stupid quake bug
|
||||
|
||||
// don't rotate clients, only aim
|
||||
|
@ -105,7 +105,7 @@ void GL_BackendEndFrame( void )
|
||||
break;
|
||||
case 4:
|
||||
Q_snprintf( r_speeds_msg, sizeof( r_speeds_msg ), "%3i static entities\n%3i normal entities\n%3i server entities",
|
||||
r_numStatics, r_numEntities - r_numStatics, gEngfuncs.pfnNumberOfEntities( ));
|
||||
r_numStatics, r_numEntities - r_numStatics, ENGINE_GET_PARM( PARM_NUMENTITIES ));
|
||||
break;
|
||||
case 5:
|
||||
Q_snprintf( r_speeds_msg, sizeof( r_speeds_msg ), "%3i tempents\n%3i viewbeams\n%3i particles",
|
||||
@ -820,7 +820,7 @@ void SCR_TimeRefresh_f( void )
|
||||
double start, stop;
|
||||
double time;
|
||||
|
||||
if( gEngfuncs.CL_GetConnState() != ref_ca_active )
|
||||
if( ENGINE_GET_PARM( PARM_CONNSTATE ) != ca_active )
|
||||
return;
|
||||
|
||||
start = gEngfuncs.pfnTime();
|
||||
|
@ -869,7 +869,7 @@ static qboolean R_BeamComputePoint( int beamEnt, vec3_t pt )
|
||||
// get attachment
|
||||
if( attach > 0 )
|
||||
VectorCopy( ent->attachment[attach - 1], pt );
|
||||
else if( ent->index == gEngfuncs.GetPlayerIndex() )
|
||||
else if( ent->index == ENGINE_GET_PARM( PARM_PLAYER_INDEX ) )
|
||||
{
|
||||
vec3_t simorg;
|
||||
gEngfuncs.GetPredictedOrigin( simorg );
|
||||
|
@ -237,7 +237,7 @@ qboolean Mod_ProcessRenderData( model_t *mod, qboolean create, const byte *buf )
|
||||
return loaded;
|
||||
}
|
||||
|
||||
static int GL_RenderGetParm( int parm, int arg )
|
||||
static int GL_RefGetParm( int parm, int arg )
|
||||
{
|
||||
gl_texture_t *glt;
|
||||
|
||||
@ -312,9 +312,9 @@ static int GL_RenderGetParm( int parm, int arg )
|
||||
case PARM_STENCIL_ACTIVE:
|
||||
return glState.stencilEnabled;
|
||||
case PARM_SKY_SPHERE:
|
||||
return gEngfuncs.CL_GetRenderParm( parm, arg ) && !tr.fCustomSkybox;
|
||||
return ENGINE_GET_PARM_( parm, arg ) && !tr.fCustomSkybox;
|
||||
default:
|
||||
return gEngfuncs.CL_GetRenderParm( parm, arg );
|
||||
return ENGINE_GET_PARM_( parm, arg );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -462,7 +462,7 @@ ref_interface_t gReffuncs =
|
||||
CL_DrawBeams,
|
||||
R_BeamCull,
|
||||
|
||||
GL_RenderGetParm,
|
||||
GL_RefGetParm,
|
||||
R_GetDetailScaleForTexture,
|
||||
R_GetExtraParmsForTexture,
|
||||
R_GetFrameTime,
|
||||
|
@ -56,17 +56,17 @@ int R_CullModel( cl_entity_t *e, const vec3_t absmin, const vec3_t absmax )
|
||||
{
|
||||
if( e == gEngfuncs.GetViewModel() )
|
||||
{
|
||||
if( gEngfuncs.CL_IsDevOverviewMode( ))
|
||||
if( ENGINE_GET_PARM( PARM_DEV_OVERVIEW ))
|
||||
return 1;
|
||||
|
||||
if( RP_NORMALPASS() && !gEngfuncs.CL_IsThirdPersonMode() && CL_IsViewEntityLocalPlayer())
|
||||
if( RP_NORMALPASS() && !ENGINE_GET_PARM( PARM_THIRDPERSON ) && CL_IsViewEntityLocalPlayer())
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
// local client can't view himself if camera or thirdperson is not active
|
||||
if( RP_LOCALCLIENT( e ) && !gEngfuncs.CL_IsThirdPersonMode() && CL_IsViewEntityLocalPlayer())
|
||||
if( RP_LOCALCLIENT( e ) && !ENGINE_GET_PARM( PARM_THIRDPERSON ) && CL_IsViewEntityLocalPlayer())
|
||||
return 1;
|
||||
|
||||
if( R_CullBox( absmin, absmax ))
|
||||
|
@ -618,10 +618,10 @@ void R_DecalSurface( msurface_t *surf, decalinfo_t *decalinfo )
|
||||
decal_t *decal = surf->pdecals;
|
||||
vec4_t textureU, textureV;
|
||||
float s, t, w, h;
|
||||
ref_connstate_t state = gEngfuncs.CL_GetConnState();
|
||||
connstate_t state = ENGINE_GET_PARM( PARM_CONNSTATE );
|
||||
|
||||
// we in restore mode
|
||||
if( state == ref_ca_connected || state == ref_ca_validate )
|
||||
if( state == ca_connected || state == ca_validate )
|
||||
{
|
||||
// NOTE: we may have the decal on this surface that come from another level.
|
||||
// check duplicate with same position and texture
|
||||
|
@ -878,7 +878,7 @@ byte *GL_ApplyFilter( const byte *source, int width, int height )
|
||||
byte *out = (byte *)source;
|
||||
int i;
|
||||
|
||||
if( gEngfuncs.Host_IsQuakeCompatible() || glConfig.max_multisamples > 1 )
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ) || glConfig.max_multisamples > 1 )
|
||||
return in;
|
||||
|
||||
for( i = 0; source && i < width * height; i++, in += 4 )
|
||||
|
@ -81,10 +81,10 @@ extern byte *r_temppool;
|
||||
#define RP_NONVIEWERREF (RP_ENVVIEW)
|
||||
#define R_ModelOpaque( rm ) ( rm == kRenderNormal )
|
||||
#define R_StaticEntity( ent ) ( VectorIsNull( ent->origin ) && VectorIsNull( ent->angles ))
|
||||
#define RP_LOCALCLIENT( e ) ((e) != NULL && (e)->index == gEngfuncs.GetPlayerIndex() && e->player )
|
||||
#define RP_LOCALCLIENT( e ) ((e) != NULL && (e)->index == ENGINE_GET_PARM( PARM_PLAYER_INDEX ) && e->player )
|
||||
#define RP_NORMALPASS() ( FBitSet( RI.params, RP_NONVIEWERREF ) == 0 )
|
||||
|
||||
#define CL_IsViewEntityLocalPlayer() ( gEngfuncs.GetViewEntIndex() == gEngfuncs.GetPlayerIndex() )
|
||||
#define CL_IsViewEntityLocalPlayer() ( ENGINE_GET_PARM( PARM_VIEWENT_INDEX ) == ENGINE_GET_PARM( PARM_PLAYER_INDEX ) )
|
||||
|
||||
#define CULL_VISIBLE 0 // not culled
|
||||
#define CULL_BACKSIDE 1 // backside of transparent wall
|
||||
@ -577,8 +577,10 @@ void TriTexCoord2f( float u, float v );
|
||||
void TriVertex3fv( const float *v );
|
||||
void TriVertex3f( float x, float y, float z );
|
||||
void _TriColor4f( float r, float g, float b, float a );
|
||||
void TriColor4f( float r, float g, float b, float a );
|
||||
void TriColor4ub( byte r, byte g, byte b, byte a );
|
||||
int TriWorldToScreen( float *world, float *screen );
|
||||
void TriBrightness( float brightness );
|
||||
int TriWorldToScreen( const float *world, float *screen );
|
||||
int TriSpriteTexture( model_t *pSpriteModel, int frame );
|
||||
void TriFog( float flFogColor[3], float flStart, float flEnd, int bOn );
|
||||
void TriGetMatrix( const int pname, float *matrix );
|
||||
@ -709,6 +711,9 @@ extern glwstate_t glw_state;
|
||||
extern ref_api_t gEngfuncs;
|
||||
extern ref_globals_t *gpGlobals;
|
||||
|
||||
#define ENGINE_GET_PARM_ (*gEngfuncs.EngineGetParm)
|
||||
#define ENGINE_GET_PARM( parm ) ENGINE_GET_PARM_( ( parm ), 0 )
|
||||
|
||||
//
|
||||
// renderer cvars
|
||||
//
|
||||
|
@ -55,7 +55,7 @@ void CL_RunLightStyles( void )
|
||||
continue;
|
||||
}
|
||||
|
||||
if( !gEngfuncs.CL_GetRenderParm( PARAM_GAMEPAUSED, 0 ) && frametime <= 0.1f )
|
||||
if( !ENGINE_GET_PARM( PARAM_GAMEPAUSED ) && frametime <= 0.1f )
|
||||
ls->time += frametime; // evaluate local time
|
||||
|
||||
flight = (int)Q_floor( ls->time * 10 );
|
||||
|
@ -283,7 +283,7 @@ static void R_Clear( int bitMask )
|
||||
{
|
||||
int bits;
|
||||
|
||||
if( gEngfuncs.CL_IsDevOverviewMode( ))
|
||||
if( ENGINE_GET_PARM( PARM_DEV_OVERVIEW ))
|
||||
pglClearColor( 0.0f, 1.0f, 0.0f, 1.0f ); // green background (Valve rules)
|
||||
else pglClearColor( 0.5f, 0.5f, 0.5f, 1.0f );
|
||||
|
||||
@ -332,9 +332,9 @@ R_SetupFrustum
|
||||
*/
|
||||
void R_SetupFrustum( void )
|
||||
{
|
||||
ref_overview_t *ov = gEngfuncs.GetOverviewParms();
|
||||
const ref_overview_t *ov = gEngfuncs.GetOverviewParms();
|
||||
|
||||
if( RP_NORMALPASS() && ( gEngfuncs.GetWaterLevel() >= 3 ))
|
||||
if( RP_NORMALPASS() && ( ENGINE_GET_PARM( PARM_WATER_LEVEL ) >= 3 ))
|
||||
{
|
||||
RI.fov_x = atan( tan( DEG2RAD( RI.fov_x ) / 2 ) * ( 0.97 + sin( gpGlobals->time * 1.5 ) * 0.03 )) * 2 / (M_PI / 180.0);
|
||||
RI.fov_y = atan( tan( DEG2RAD( RI.fov_y ) / 2 ) * ( 1.03 - sin( gpGlobals->time * 1.5 ) * 0.03 )) * 2 / (M_PI / 180.0);
|
||||
@ -367,7 +367,7 @@ static void R_SetupProjectionMatrix( matrix4x4 m )
|
||||
|
||||
if( RI.drawOrtho )
|
||||
{
|
||||
ref_overview_t *ov = gEngfuncs.GetOverviewParms();
|
||||
const ref_overview_t *ov = gEngfuncs.GetOverviewParms();
|
||||
Matrix4x4_CreateOrtho( m, ov->xLeft, ov->xRight, ov->yTop, ov->yBottom, ov->zNear, ov->zFar );
|
||||
return;
|
||||
}
|
||||
@ -661,7 +661,7 @@ static void R_CheckFog( void )
|
||||
int i, cnt, count;
|
||||
|
||||
// quake global fog
|
||||
if( gEngfuncs.Host_IsQuakeCompatible( ))
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ))
|
||||
{
|
||||
if( !MOVEVARS->fog_settings )
|
||||
{
|
||||
@ -686,12 +686,12 @@ static void R_CheckFog( void )
|
||||
|
||||
RI.fogEnabled = false;
|
||||
|
||||
if( RI.onlyClientDraw || gEngfuncs.GetWaterLevel() < 3 || !RI.drawWorld || !RI.viewleaf )
|
||||
if( RI.onlyClientDraw || ENGINE_GET_PARM( PARM_WATER_LEVEL ) < 3 || !RI.drawWorld || !RI.viewleaf )
|
||||
{
|
||||
if( RI.cached_waterlevel == 3 )
|
||||
{
|
||||
{
|
||||
// in some cases waterlevel jumps from 3 to 1. Catch it
|
||||
RI.cached_waterlevel = gEngfuncs.GetWaterLevel();
|
||||
RI.cached_waterlevel = ENGINE_GET_PARM( PARM_WATER_LEVEL );
|
||||
RI.cached_contents = CONTENTS_EMPTY;
|
||||
if( !RI.fogCustom ) pglDisable( GL_FOG );
|
||||
}
|
||||
@ -703,7 +703,7 @@ static void R_CheckFog( void )
|
||||
cnt = ent->curstate.skin;
|
||||
else cnt = RI.viewleaf->contents;
|
||||
|
||||
RI.cached_waterlevel = gEngfuncs.GetWaterLevel();
|
||||
RI.cached_waterlevel = ENGINE_GET_PARM( PARM_WATER_LEVEL );
|
||||
|
||||
if( !IsLiquidContents( RI.cached_contents ) && IsLiquidContents( cnt ))
|
||||
{
|
||||
@ -784,7 +784,7 @@ void R_DrawFog( void )
|
||||
if( !RI.fogEnabled ) return;
|
||||
|
||||
pglEnable( GL_FOG );
|
||||
if( gEngfuncs.Host_IsQuakeCompatible( ))
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ))
|
||||
pglFogi( GL_FOG_MODE, GL_EXP2 );
|
||||
else pglFogi( GL_FOG_MODE, GL_EXP );
|
||||
pglFogf( GL_FOG_DENSITY, RI.fogDensity );
|
||||
@ -1017,7 +1017,8 @@ void R_BeginFrame( qboolean clearScene )
|
||||
{
|
||||
glConfig.softwareGammaUpdate = false; // in case of possible fails
|
||||
|
||||
if(( gl_clear->value || gEngfuncs.CL_IsDevOverviewMode( )) && clearScene && gEngfuncs.CL_GetConnState() != ref_ca_cinematic )
|
||||
if(( gl_clear->value || ENGINE_GET_PARM( PARM_DEV_OVERVIEW )) &&
|
||||
clearScene && ENGINE_GET_PARM( PARM_CONNSTATE ) != ca_cinematic )
|
||||
{
|
||||
pglClear( GL_COLOR_BUFFER_BIT );
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ void R_NewMap( void )
|
||||
client_textmessage_t *title;
|
||||
|
||||
title = gEngfuncs.pfnTextMessageGet( "GAMETITLE" );
|
||||
if( gEngfuncs.Host_IsQuakeCompatible( ))
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ))
|
||||
fadetime = 1.0f;
|
||||
|
||||
if( title )
|
||||
|
@ -793,7 +793,7 @@ void DrawGLPoly( glpoly_t *p, float xScale, float yScale )
|
||||
float flRate, flAngle;
|
||||
gl_texture_t *texture;
|
||||
|
||||
if( gEngfuncs.Host_IsQuakeCompatible() && RI.currententity == gEngfuncs.GetEntityByIndex( 0 ) )
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ) && RI.currententity == gEngfuncs.GetEntityByIndex( 0 ) )
|
||||
{
|
||||
// same as doom speed
|
||||
flConveyorSpeed = -35.0f;
|
||||
@ -1272,7 +1272,7 @@ void R_DrawTextureChains( void )
|
||||
RI.currententity = gEngfuncs.GetEntityByIndex( 0 );
|
||||
RI.currentmodel = RI.currententity->model;
|
||||
|
||||
if( gEngfuncs.CL_GetRenderParm( PARM_SKY_SPHERE, 0 ) )
|
||||
if( ENGINE_GET_PARM( PARM_SKY_SPHERE ) )
|
||||
{
|
||||
pglDisable( GL_TEXTURE_2D );
|
||||
pglColor3f( 1.0f, 1.0f, 1.0f );
|
||||
@ -1282,7 +1282,7 @@ void R_DrawTextureChains( void )
|
||||
for( s = skychain; s != NULL; s = s->texturechain )
|
||||
R_AddSkyBoxSurface( s );
|
||||
|
||||
if( gEngfuncs.CL_GetRenderParm( PARM_SKY_SPHERE, 0 ) )
|
||||
if( ENGINE_GET_PARM( PARM_SKY_SPHERE ) )
|
||||
{
|
||||
pglEnable( GL_TEXTURE_2D );
|
||||
if( skychain )
|
||||
@ -1303,7 +1303,7 @@ void R_DrawTextureChains( void )
|
||||
if(( s->flags & SURF_DRAWTURB ) && MOVEVARS->wateralpha < 1.0f )
|
||||
continue; // draw translucent water later
|
||||
|
||||
if( gEngfuncs.Host_IsQuakeCompatible() && FBitSet( s->flags, SURF_TRANSPARENT ))
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ) && FBitSet( s->flags, SURF_TRANSPARENT ))
|
||||
{
|
||||
draw_alpha_surfaces = true;
|
||||
continue; // draw transparent surfaces later
|
||||
@ -1483,7 +1483,7 @@ void R_SetRenderMode( cl_entity_t *e )
|
||||
case kRenderTransAlpha:
|
||||
pglEnable( GL_ALPHA_TEST );
|
||||
pglTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
|
||||
if( gEngfuncs.Host_IsQuakeCompatible( ))
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ))
|
||||
{
|
||||
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
|
||||
pglColor4f( 1.0f, 1.0f, 1.0f, tr.blend );
|
||||
@ -1558,7 +1558,7 @@ void R_DrawBrushModel( cl_entity_t *e )
|
||||
if( rotated ) R_RotateForEntity( e );
|
||||
else R_TranslateForEntity( e );
|
||||
|
||||
if( gEngfuncs.Host_IsQuakeCompatible() && FBitSet( clmodel->flags, MODEL_TRANSPARENT ))
|
||||
if( ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ) && FBitSet( clmodel->flags, MODEL_TRANSPARENT ))
|
||||
e->curstate.rendermode = kRenderTransAlpha;
|
||||
|
||||
e->visframe = tr.realframecount; // visible
|
||||
@ -1599,7 +1599,7 @@ void R_DrawBrushModel( cl_entity_t *e )
|
||||
|
||||
for( i = 0; i < clmodel->nummodelsurfaces; i++, psurf++ )
|
||||
{
|
||||
if( FBitSet( psurf->flags, SURF_DRAWTURB ) && !gEngfuncs.Host_IsQuakeCompatible( ))
|
||||
if( FBitSet( psurf->flags, SURF_DRAWTURB ) && !ENGINE_GET_PARM( PARM_QUAKE_COMPATIBLE ))
|
||||
{
|
||||
if( psurf->plane->type != PLANE_Z && !FBitSet( e->curstate.effects, EF_WATERSIDES ))
|
||||
continue;
|
||||
@ -3343,7 +3343,7 @@ void R_DrawWorld( void )
|
||||
|
||||
R_DrawTextureChains();
|
||||
|
||||
if( !gEngfuncs.CL_IsDevOverviewMode( ))
|
||||
if( !ENGINE_GET_PARM( PARM_DEV_OVERVIEW ))
|
||||
{
|
||||
DrawDecalsBatch();
|
||||
GL_ResetFogColor();
|
||||
@ -3498,7 +3498,7 @@ void GL_RebuildLightmaps( void )
|
||||
int i, j;
|
||||
model_t *m;
|
||||
|
||||
if( !gEngfuncs.CL_GetRenderParm( PARM_CLIENT_ACTIVE, 0 ) )
|
||||
if( !ENGINE_GET_PARM( PARM_CLIENT_ACTIVE ) )
|
||||
return; // wait for worldmodel
|
||||
|
||||
ClearBits( vid_brightness->flags, FCVAR_CHANGED );
|
||||
@ -3519,7 +3519,7 @@ void GL_RebuildLightmaps( void )
|
||||
|
||||
LM_InitBlock();
|
||||
|
||||
for( i = 0; i < gEngfuncs.CL_NumModels(); i++ )
|
||||
for( i = 0; i < ENGINE_GET_PARM( PARM_NUMMODELS ); i++ )
|
||||
{
|
||||
if(( m = gEngfuncs.pfnGetModelByIndex( i + 1 )) == NULL )
|
||||
continue;
|
||||
@ -3565,7 +3565,7 @@ void GL_BuildLightmaps( void )
|
||||
memset( &RI, 0, sizeof( RI ));
|
||||
|
||||
// update the lightmap blocksize
|
||||
if( FBitSet( gEngfuncs.CL_GetRenderParm( PARM_FEATURES, 0 ), ENGINE_LARGE_LIGHTMAPS ))
|
||||
if( FBitSet( ENGINE_GET_PARM( PARM_FEATURES ), ENGINE_LARGE_LIGHTMAPS ))
|
||||
tr.block_size = BLOCK_SIZE_MAX;
|
||||
else tr.block_size = BLOCK_SIZE_DEFAULT;
|
||||
|
||||
@ -3585,7 +3585,7 @@ void GL_BuildLightmaps( void )
|
||||
|
||||
LM_InitBlock();
|
||||
|
||||
for( i = 0; i < gEngfuncs.CL_NumModels(); i++ )
|
||||
for( i = 0; i < ENGINE_GET_PARM( PARM_NUMMODELS ); i++ )
|
||||
{
|
||||
if(( m = gEngfuncs.pfnGetModelByIndex( i + 1 )) == NULL )
|
||||
continue;
|
||||
|
@ -602,12 +602,12 @@ void R_StudioSetUpTransform( cl_entity_t *e )
|
||||
VectorCopy( e->angles, angles );
|
||||
|
||||
// interpolate monsters position (moved into UpdateEntityFields by user request)
|
||||
if( e->curstate.movetype == MOVETYPE_STEP && !FBitSet( gEngfuncs.CL_GetRenderParm( PARM_FEATURES, 0 ), ENGINE_COMPUTE_STUDIO_LERP ))
|
||||
if( e->curstate.movetype == MOVETYPE_STEP && !FBitSet( ENGINE_GET_PARM( PARM_FEATURES ), ENGINE_COMPUTE_STUDIO_LERP ))
|
||||
{
|
||||
R_StudioLerpMovement( e, g_studio.time, origin, angles );
|
||||
}
|
||||
|
||||
if( !FBitSet( gEngfuncs.CL_GetRenderParm( PARM_FEATURES, 0 ), ENGINE_COMPENSATE_QUAKE_BUG ))
|
||||
if( !FBitSet( ENGINE_GET_PARM( PARM_FEATURES ), ENGINE_COMPENSATE_QUAKE_BUG ))
|
||||
angles[PITCH] = -angles[PITCH]; // stupid quake bug
|
||||
|
||||
// don't rotate clients, only aim
|
||||
@ -1402,7 +1402,7 @@ void R_StudioDynamicLight( cl_entity_t *ent, alight_t *plight )
|
||||
msurface_t *psurf = NULL;
|
||||
pmtrace_t trace;
|
||||
|
||||
if( FBitSet( gEngfuncs.CL_GetRenderParm( PARM_FEATURES, 0 ), ENGINE_WRITE_LARGE_COORD ))
|
||||
if( FBitSet( ENGINE_GET_PARM( PARM_FEATURES ), ENGINE_WRITE_LARGE_COORD ))
|
||||
{
|
||||
vecEnd[0] = origin[0] - mv->skyvec_x * 65536.0f;
|
||||
vecEnd[1] = origin[1] - mv->skyvec_y * 65536.0f;
|
||||
@ -2703,7 +2703,7 @@ static model_t *R_StudioSetupPlayerModel( int index )
|
||||
state = &g_studio.player_models[index];
|
||||
|
||||
// g-cont: force for "dev-mode", non-local games and menu preview
|
||||
if(( gpGlobals->developer || !gEngfuncs.Host_IsLocalGame( ) || !RI.drawWorld ) && info->model[0] )
|
||||
if(( gpGlobals->developer || !ENGINE_GET_PARM( PARM_LOCAL_GAME ) || !RI.drawWorld ) && info->model[0] )
|
||||
{
|
||||
if( Q_strcmp( state->name, info->model ))
|
||||
{
|
||||
@ -3353,7 +3353,7 @@ static int R_StudioDrawPlayer( int flags, entity_state_t *pplayer )
|
||||
|
||||
m_nPlayerIndex = pplayer->number - 1;
|
||||
|
||||
if( m_nPlayerIndex < 0 || m_nPlayerIndex >= gEngfuncs.GetMaxClients() )
|
||||
if( m_nPlayerIndex < 0 || m_nPlayerIndex >= ENGINE_GET_PARM( PARM_MAX_CLIENTS ) )
|
||||
return 0;
|
||||
|
||||
RI.currentmodel = R_StudioSetupPlayerModel( m_nPlayerIndex );
|
||||
@ -3435,7 +3435,7 @@ static int R_StudioDrawPlayer( int flags, entity_state_t *pplayer )
|
||||
RI.currententity->curstate.body = 255;
|
||||
}
|
||||
|
||||
if( !( !gpGlobals->developer && gEngfuncs.GetMaxClients() == 1 ) && ( RI.currentmodel == RI.currententity->model ))
|
||||
if( !( !gpGlobals->developer && ENGINE_GET_PARM( PARM_MAX_CLIENTS ) == 1 ) && ( RI.currentmodel == RI.currententity->model ))
|
||||
RI.currententity->curstate.body = 1; // force helmet
|
||||
|
||||
lighting.plightvec = dir;
|
||||
@ -3497,7 +3497,8 @@ static int R_StudioDrawModel( int flags )
|
||||
entity_state_t deadplayer;
|
||||
int result;
|
||||
|
||||
if( RI.currententity->curstate.renderamt <= 0 || RI.currententity->curstate.renderamt > gEngfuncs.GetMaxClients() )
|
||||
if( RI.currententity->curstate.renderamt <= 0 ||
|
||||
RI.currententity->curstate.renderamt > ENGINE_GET_PARM( PARM_MAX_CLIENTS ) )
|
||||
return 0;
|
||||
|
||||
// get copy of player
|
||||
@ -3648,11 +3649,11 @@ void R_RunViewmodelEvents( void )
|
||||
if( r_drawviewmodel->value == 0 )
|
||||
return;
|
||||
|
||||
if( gEngfuncs.CL_IsThirdPersonMode( ))
|
||||
if( ENGINE_GET_PARM( PARM_THIRDPERSON ))
|
||||
return;
|
||||
|
||||
// ignore in thirdperson, camera view or client is died
|
||||
if( !RP_NORMALPASS() || gEngfuncs.GetLocalHealth() <= 0 || !CL_IsViewEntityLocalPlayer())
|
||||
if( !RP_NORMALPASS() || ENGINE_GET_PARM( PARM_LOCAL_HEALTH ) <= 0 || !CL_IsViewEntityLocalPlayer())
|
||||
return;
|
||||
|
||||
RI.currententity = gEngfuncs.GetViewModel();
|
||||
@ -3700,11 +3701,11 @@ void R_DrawViewModel( void )
|
||||
if( r_drawviewmodel->value == 0 )
|
||||
return;
|
||||
|
||||
if( gEngfuncs.CL_IsThirdPersonMode( ))
|
||||
if( ENGINE_GET_PARM( PARM_THIRDPERSON ))
|
||||
return;
|
||||
|
||||
// ignore in thirdperson, camera view or client is died
|
||||
if( !RP_NORMALPASS() || gEngfuncs.GetLocalHealth() <= 0 || !CL_IsViewEntityLocalPlayer())
|
||||
if( !RP_NORMALPASS() || ENGINE_GET_PARM( PARM_LOCAL_HEALTH ) <= 0 || !CL_IsViewEntityLocalPlayer())
|
||||
return;
|
||||
|
||||
tr.blend = gEngfuncs.CL_FxBlend( view ) / 255.0f;
|
||||
@ -3825,7 +3826,7 @@ static void R_StudioLoadTexture( model_t *mod, studiohdr_t *phdr, mstudiotexture
|
||||
gEngfuncs.Image_SetMDLPointer((byte *)phdr + ptexture->index);
|
||||
size = sizeof( mstudiotexture_t ) + ptexture->width * ptexture->height + 768;
|
||||
|
||||
if( FBitSet( gEngfuncs.CL_GetRenderParm( PARM_FEATURES, 0 ), ENGINE_LOAD_DELUXEDATA ) && FBitSet( ptexture->flags, STUDIO_NF_MASKED ))
|
||||
if( FBitSet( ENGINE_GET_PARM( PARM_FEATURES ), ENGINE_LOAD_DELUXEDATA ) && FBitSet( ptexture->flags, STUDIO_NF_MASKED ))
|
||||
flags |= TF_KEEP_SOURCE; // Paranoia2 texture alpha-tracing
|
||||
|
||||
// build the texname
|
||||
|
@ -204,7 +204,7 @@ TriWorldToScreen
|
||||
convert world coordinates (x,y,z) into screen (x, y)
|
||||
=============
|
||||
*/
|
||||
int TriWorldToScreen( float *world, float *screen )
|
||||
int TriWorldToScreen( const float *world, float *screen )
|
||||
{
|
||||
int retval;
|
||||
|
||||
|
@ -309,7 +309,7 @@ void R_AddSkyBoxSurface( msurface_t *fa )
|
||||
float *v;
|
||||
int i;
|
||||
|
||||
if( gEngfuncs.CL_GetRenderParm( PARM_SKY_SPHERE, 0 ) && fa->polys && !tr.fCustomSkybox )
|
||||
if( ENGINE_GET_PARM( PARM_SKY_SPHERE ) && fa->polys && !tr.fCustomSkybox )
|
||||
{
|
||||
glpoly_t *p = fa->polys;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user