Compare commits
2 Commits
0870dfba2e
...
61fa56b316
Author | SHA1 | Date |
---|---|---|
an | 61fa56b316 | |
an | 7fcd77c295 |
|
@ -249,17 +249,10 @@ void CL_Record_f(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(c == 2 && cls.state == ca_connected)
|
if(c == 2 && cls.state == ca_connected && cls.signon < 2)
|
||||||
{
|
{
|
||||||
#if 0
|
Con_Printf("Can't record - try again when connected\n");
|
||||||
Con_Printf("Can not record - already connected to server\nClient demo recording must be started before connecting\n");
|
|
||||||
return;
|
return;
|
||||||
#endif
|
|
||||||
if(cls.signon < 2)
|
|
||||||
{
|
|
||||||
Con_Printf("Can't record - try again when connected\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// write the forced cd track number, or -1
|
// write the forced cd track number, or -1
|
||||||
|
|
|
@ -768,16 +768,6 @@ void CL_Viewpos_f(void)
|
||||||
{
|
{
|
||||||
if(cls.state != ca_connected)
|
if(cls.state != ca_connected)
|
||||||
return;
|
return;
|
||||||
#if 0
|
|
||||||
//camera position
|
|
||||||
Con_Printf("Viewpos: (%" PRIi32 " %" PRIi32 " %" PRIi32 ") %" PRIi32 " %" PRIi32 " %" PRIi32 "\n",
|
|
||||||
(int32_t)r_refdef.vieworg[0],
|
|
||||||
(int32_t)r_refdef.vieworg[1],
|
|
||||||
(int32_t)r_refdef.vieworg[2],
|
|
||||||
(int32_t)r_refdef.viewangles[PITCH],
|
|
||||||
(int32_t)r_refdef.viewangles[YAW],
|
|
||||||
(int32_t)r_refdef.viewangles[ROLL]);
|
|
||||||
#else
|
|
||||||
//player position
|
//player position
|
||||||
Con_Printf("Viewpos: (%" PRIi32 " %" PRIi32 " %" PRIi32 ") %" PRIi32 " %" PRIi32 " %" PRIi32 "\n",
|
Con_Printf("Viewpos: (%" PRIi32 " %" PRIi32 " %" PRIi32 ") %" PRIi32 " %" PRIi32 " %" PRIi32 "\n",
|
||||||
(int32_t)cl_entities[cl.viewentity].origin[0],
|
(int32_t)cl_entities[cl.viewentity].origin[0],
|
||||||
|
@ -786,7 +776,6 @@ void CL_Viewpos_f(void)
|
||||||
(int32_t)cl.viewangles[PITCH],
|
(int32_t)cl.viewangles[PITCH],
|
||||||
(int32_t)cl.viewangles[YAW],
|
(int32_t)cl.viewangles[YAW],
|
||||||
(int32_t)cl.viewangles[ROLL]);
|
(int32_t)cl.viewangles[ROLL]);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1125,32 +1125,6 @@ void COM_FileBase(const char *in, char *out, size_t outsize)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
==================
|
|
||||||
COM_DefaultExtension
|
|
||||||
if path doesn't have a .EXT, append extension
|
|
||||||
(extension should include the leading ".")
|
|
||||||
==================
|
|
||||||
*/
|
|
||||||
#if 0 /* can be dangerous */
|
|
||||||
void COM_DefaultExtension(char *path, const char *extension, size_t len)
|
|
||||||
{
|
|
||||||
char *src;
|
|
||||||
|
|
||||||
if(!*path) return;
|
|
||||||
src = path + strlen(path) - 1;
|
|
||||||
|
|
||||||
while(*src != '/' && *src != '\\' && src != path)
|
|
||||||
{
|
|
||||||
if(*src == '.')
|
|
||||||
return; // it has an extension
|
|
||||||
src--;
|
|
||||||
}
|
|
||||||
|
|
||||||
q_strlcat(path, extension, len);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==================
|
==================
|
||||||
COM_AddExtension
|
COM_AddExtension
|
||||||
|
@ -1884,7 +1858,7 @@ static pack_t *COM_LoadPackFile(const char *packfile)
|
||||||
if(Sys_FileOpenRead(packfile, &packhandle) == -1)
|
if(Sys_FileOpenRead(packfile, &packhandle) == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
Sys_FileRead(packhandle, (void *)&header, sizeof(header));
|
Sys_FileRead(packhandle, &header, sizeof(header));
|
||||||
if(header.id[0] != 'P' || header.id[1] != 'A' || header.id[2] != 'C' || header.id[3] != 'K')
|
if(header.id[0] != 'P' || header.id[1] != 'A' || header.id[2] != 'C' || header.id[3] != 'K')
|
||||||
Sys_Error("%s is not a packfile", packfile);
|
Sys_Error("%s is not a packfile", packfile);
|
||||||
|
|
||||||
|
@ -1910,7 +1884,7 @@ static pack_t *COM_LoadPackFile(const char *packfile)
|
||||||
newfiles = (packfile_t *) Z_Malloc(numpackfiles * sizeof(packfile_t));
|
newfiles = (packfile_t *) Z_Malloc(numpackfiles * sizeof(packfile_t));
|
||||||
|
|
||||||
Sys_FileSeek(packhandle, header.dirofs);
|
Sys_FileSeek(packhandle, header.dirofs);
|
||||||
Sys_FileRead(packhandle, (void *)info, header.dirlen);
|
Sys_FileRead(packhandle, info, header.dirlen);
|
||||||
|
|
||||||
// parse the directory
|
// parse the directory
|
||||||
for(i = 0; i < numpackfiles; i++)
|
for(i = 0; i < numpackfiles; i++)
|
||||||
|
|
|
@ -170,9 +170,6 @@ const char *COM_SkipPath(const char *pathname);
|
||||||
void COM_StripExtension(const char *in, char *out, size_t outsize);
|
void COM_StripExtension(const char *in, char *out, size_t outsize);
|
||||||
void COM_FileBase(const char *in, char *out, size_t outsize);
|
void COM_FileBase(const char *in, char *out, size_t outsize);
|
||||||
void COM_AddExtension(char *path, const char *extension, size_t len);
|
void COM_AddExtension(char *path, const char *extension, size_t len);
|
||||||
#if 0 /* COM_DefaultExtension can be dangerous */
|
|
||||||
void COM_DefaultExtension(char *path, const char *extension, size_t len);
|
|
||||||
#endif
|
|
||||||
const char *COM_FileGetExtension(const char *in); /* doesn't return NULL */
|
const char *COM_FileGetExtension(const char *in); /* doesn't return NULL */
|
||||||
void COM_ExtractExtension(const char *in, char *out, size_t outsize);
|
void COM_ExtractExtension(const char *in, char *out, size_t outsize);
|
||||||
void COM_CreatePath(char *path);
|
void COM_CreatePath(char *path);
|
||||||
|
|
|
@ -403,7 +403,7 @@ void Cvar_SetQuick(cvar_t *var, const char *value)
|
||||||
len = Q_strlen(value);
|
len = Q_strlen(value);
|
||||||
if(len != Q_strlen(var->string))
|
if(len != Q_strlen(var->string))
|
||||||
{
|
{
|
||||||
Z_Free((void *)var->string);
|
Z_Free(var->string);
|
||||||
var->string = (char *) Z_Malloc(len + 1);
|
var->string = (char *) Z_Malloc(len + 1);
|
||||||
}
|
}
|
||||||
memcpy((char *)var->string, value, len + 1);
|
memcpy((char *)var->string, value, len + 1);
|
||||||
|
@ -419,7 +419,7 @@ void Cvar_SetQuick(cvar_t *var, const char *value)
|
||||||
{
|
{
|
||||||
// Sys_Printf("changing default of %s: %s -> %s\n",
|
// Sys_Printf("changing default of %s: %s -> %s\n",
|
||||||
// var->name, var->default_string, var->string);
|
// var->name, var->default_string, var->string);
|
||||||
Z_Free((void *)var->default_string);
|
Z_Free(var->default_string);
|
||||||
var->default_string = Z_Strdup(var->string);
|
var->default_string = Z_Strdup(var->string);
|
||||||
}
|
}
|
||||||
//johnfitz
|
//johnfitz
|
||||||
|
|
|
@ -80,10 +80,10 @@ typedef void (*cvarcallback_t)(struct cvar_s *);
|
||||||
typedef struct cvar_s
|
typedef struct cvar_s
|
||||||
{
|
{
|
||||||
const char *name;
|
const char *name;
|
||||||
const char *string;
|
char *string;
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
float value;
|
float value;
|
||||||
const char *default_string; //johnfitz -- remember defaults for reset function
|
char *default_string; //johnfitz -- remember defaults for reset function
|
||||||
cvarcallback_t callback;
|
cvarcallback_t callback;
|
||||||
struct cvar_s *next;
|
struct cvar_s *next;
|
||||||
} cvar_t;
|
} cvar_t;
|
||||||
|
|
|
@ -951,12 +951,6 @@ void Mod_LoadTexinfo(lump_t *l)
|
||||||
out->mipadjust = 2;
|
out->mipadjust = 2;
|
||||||
else
|
else
|
||||||
out->mipadjust = 1;
|
out->mipadjust = 1;
|
||||||
#if 0
|
|
||||||
if(len1 + len2 < 0.001)
|
|
||||||
out->mipadjust = 1; // don't crash
|
|
||||||
else
|
|
||||||
out->mipadjust = 1 / floor((len1 + len2) / 2 + 0.1);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
miptex = LittleLong(in->miptex);
|
miptex = LittleLong(in->miptex);
|
||||||
out->flags = LittleLong(in->flags);
|
out->flags = LittleLong(in->flags);
|
||||||
|
@ -1596,7 +1590,7 @@ Mod_LoadLeafs
|
||||||
*/
|
*/
|
||||||
void Mod_LoadLeafs(lump_t *l, int32_t bsp2)
|
void Mod_LoadLeafs(lump_t *l, int32_t bsp2)
|
||||||
{
|
{
|
||||||
void *in = (void *)(mod_base + l->fileofs);
|
void *in = mod_base + l->fileofs;
|
||||||
|
|
||||||
if(bsp2 == 2)
|
if(bsp2 == 2)
|
||||||
Mod_ProcessLeafs_L2((dl2leaf_t *)in, l->filelen);
|
Mod_ProcessLeafs_L2((dl2leaf_t *)in, l->filelen);
|
||||||
|
@ -2162,7 +2156,7 @@ void * Mod_LoadAliasFrame(void * pin, maliasframedesc_t *frame)
|
||||||
|
|
||||||
pinframe += pheader->numverts;
|
pinframe += pheader->numverts;
|
||||||
|
|
||||||
return (void *)pinframe;
|
return pinframe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2199,7 +2193,7 @@ void *Mod_LoadAliasGroup(void * pin, maliasframedesc_t *frame)
|
||||||
|
|
||||||
pin_intervals += numframes;
|
pin_intervals += numframes;
|
||||||
|
|
||||||
ptemp = (void *)pin_intervals;
|
ptemp = pin_intervals;
|
||||||
|
|
||||||
for(i = 0 ; i < numframes ; i++)
|
for(i = 0 ; i < numframes ; i++)
|
||||||
{
|
{
|
||||||
|
@ -2397,7 +2391,7 @@ void *Mod_LoadAllSkins(int32_t numskins, daliasskintype_t *pskintype)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (void *)pskintype;
|
return pskintype;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
|
@ -2717,7 +2711,7 @@ void * Mod_LoadSpriteFrame(void * pin, mspriteframe_t **ppframe, int32_t framenu
|
||||||
(byte *)(pinframe + 1), loadmodel->name, offset,
|
(byte *)(pinframe + 1), loadmodel->name, offset,
|
||||||
TEXPREF_PAD | TEXPREF_ALPHA | TEXPREF_NOPICMIP); //johnfitz -- TexMgr
|
TEXPREF_PAD | TEXPREF_ALPHA | TEXPREF_NOPICMIP); //johnfitz -- TexMgr
|
||||||
|
|
||||||
return (void *)((byte *)pinframe + sizeof(dspriteframe_t) + size);
|
return (byte *)pinframe + sizeof(dspriteframe_t) + size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2762,7 +2756,7 @@ void * Mod_LoadSpriteGroup(void * pin, mspriteframe_t **ppframe, int32_t framenu
|
||||||
pin_intervals++;
|
pin_intervals++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptemp = (void *)pin_intervals;
|
ptemp = pin_intervals;
|
||||||
|
|
||||||
for(i = 0 ; i < numframes ; i++)
|
for(i = 0 ; i < numframes ; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -59,7 +59,7 @@ typedef struct
|
||||||
{
|
{
|
||||||
int32_t magfilter;
|
int32_t magfilter;
|
||||||
int32_t minfilter;
|
int32_t minfilter;
|
||||||
const char *name;
|
char name[32];
|
||||||
} glmode_t;
|
} glmode_t;
|
||||||
static glmode_t glmodes[] =
|
static glmode_t glmodes[] =
|
||||||
{
|
{
|
||||||
|
|
|
@ -92,12 +92,6 @@ void PerpendicularVector(vec3_t dst, const vec3_t src)
|
||||||
|
|
||||||
float anglemod(float a)
|
float anglemod(float a)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
if(a >= 0)
|
|
||||||
a -= 360 * (int32_t)(a / 360);
|
|
||||||
else
|
|
||||||
a += 360 * (1 + (int32_t)(-a / 360));
|
|
||||||
#endif
|
|
||||||
a = (360.0 / 65536) * ((int32_t)(a * (65536 / 360.0)) & 65535);
|
a = (360.0 / 65536) * ((int32_t)(a * (65536 / 360.0)) & 65535);
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -115,19 +109,6 @@ int32_t BoxOnPlaneSide(vec3_t emins, vec3_t emaxs, mplane_t *p)
|
||||||
float dist1, dist2;
|
float dist1, dist2;
|
||||||
int32_t sides;
|
int32_t sides;
|
||||||
|
|
||||||
#if 0 // this is done by the BOX_ON_PLANE_SIDE macro before calling this
|
|
||||||
// function
|
|
||||||
// fast axial cases
|
|
||||||
if(p->type < 3)
|
|
||||||
{
|
|
||||||
if(p->dist <= emins[p->type])
|
|
||||||
return 1;
|
|
||||||
if(p->dist >= emaxs[p->type])
|
|
||||||
return 2;
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// general case
|
// general case
|
||||||
switch(p->signbits)
|
switch(p->signbits)
|
||||||
{
|
{
|
||||||
|
@ -169,32 +150,6 @@ int32_t BoxOnPlaneSide(vec3_t emins, vec3_t emaxs, mplane_t *p)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
int32_t i;
|
|
||||||
vec3_t corners[2];
|
|
||||||
|
|
||||||
for(i = 0 ; i < 3 ; i++)
|
|
||||||
{
|
|
||||||
if(plane->normal[i] < 0)
|
|
||||||
{
|
|
||||||
corners[0][i] = emins[i];
|
|
||||||
corners[1][i] = emaxs[i];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
corners[1][i] = emins[i];
|
|
||||||
corners[0][i] = emaxs[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
dist = DotProduct(plane->normal, corners[0]) - plane->dist;
|
|
||||||
dist2 = DotProduct(plane->normal, corners[1]) - plane->dist;
|
|
||||||
sides = 0;
|
|
||||||
if(dist1 >= 0)
|
|
||||||
sides = 1;
|
|
||||||
if(dist2 < 0)
|
|
||||||
sides |= 2;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
sides = 0;
|
sides = 0;
|
||||||
if(dist1 >= p->dist)
|
if(dist1 >= p->dist)
|
||||||
sides = 1;
|
sides = 1;
|
||||||
|
|
|
@ -1146,12 +1146,6 @@ void M_DrawSlider(int32_t x, int32_t y, float range)
|
||||||
|
|
||||||
void M_DrawCheckbox(int32_t x, int32_t y, int32_t on)
|
void M_DrawCheckbox(int32_t x, int32_t y, int32_t on)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
if(on)
|
|
||||||
M_DrawCharacter(x, y, 131);
|
|
||||||
else
|
|
||||||
M_DrawCharacter(x, y, 129);
|
|
||||||
#endif
|
|
||||||
if(on)
|
if(on)
|
||||||
M_Print(x, y, "on");
|
M_Print(x, y, "on");
|
||||||
else
|
else
|
||||||
|
|
|
@ -248,10 +248,10 @@ extern hostcache_t hostcache[HOSTCACHESIZE];
|
||||||
|
|
||||||
typedef struct _PollProcedure
|
typedef struct _PollProcedure
|
||||||
{
|
{
|
||||||
struct _PollProcedure *next;
|
struct _PollProcedure *next;
|
||||||
double nextTime;
|
double nextTime;
|
||||||
void (*procedure)(void *);
|
void (*procedure)(void *arg);
|
||||||
void *arg;
|
void *arg;
|
||||||
} PollProcedure;
|
} PollProcedure;
|
||||||
|
|
||||||
void SchedulePollProcedure(PollProcedure *pp, double timeOffset);
|
void SchedulePollProcedure(PollProcedure *pp, double timeOffset);
|
||||||
|
|
|
@ -519,7 +519,7 @@ static int32_t testPollCount;
|
||||||
static int32_t testDriver;
|
static int32_t testDriver;
|
||||||
static sys_socket_t testSocket;
|
static sys_socket_t testSocket;
|
||||||
|
|
||||||
static void Test_Poll(void *);
|
static void Test_Poll(void *unused);
|
||||||
static PollProcedure testPollProcedure = {NULL, 0.0, Test_Poll};
|
static PollProcedure testPollProcedure = {NULL, 0.0, Test_Poll};
|
||||||
|
|
||||||
static void Test_Poll(void *unused)
|
static void Test_Poll(void *unused)
|
||||||
|
@ -654,7 +654,7 @@ static bool test2InProgress = false;
|
||||||
static int32_t test2Driver;
|
static int32_t test2Driver;
|
||||||
static sys_socket_t test2Socket;
|
static sys_socket_t test2Socket;
|
||||||
|
|
||||||
static void Test2_Poll(void *);
|
static void Test2_Poll(void *unused);
|
||||||
static PollProcedure test2PollProcedure = {NULL, 0.0, Test2_Poll};
|
static PollProcedure test2PollProcedure = {NULL, 0.0, Test2_Poll};
|
||||||
|
|
||||||
static void Test2_Poll(void *unused)
|
static void Test2_Poll(void *unused)
|
||||||
|
|
|
@ -101,8 +101,8 @@ qsocket_t *Loop_Connect(const char *host)
|
||||||
loop_server->sendMessageLength = 0;
|
loop_server->sendMessageLength = 0;
|
||||||
loop_server->canSend = true;
|
loop_server->canSend = true;
|
||||||
|
|
||||||
loop_client->driverdata = (void *)loop_server;
|
loop_client->driverdata = loop_server;
|
||||||
loop_server->driverdata = (void *)loop_client;
|
loop_server->driverdata = loop_client;
|
||||||
|
|
||||||
return loop_client;
|
return loop_client;
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,8 +45,8 @@ bool slistLocal = true;
|
||||||
static double slistStartTime;
|
static double slistStartTime;
|
||||||
static int32_t slistLastShown;
|
static int32_t slistLastShown;
|
||||||
|
|
||||||
static void Slist_Send(void *);
|
static void Slist_Send(void *unused);
|
||||||
static void Slist_Poll(void *);
|
static void Slist_Poll(void *unused);
|
||||||
static PollProcedure slistSendProcedure = {NULL, 0.0, Slist_Send};
|
static PollProcedure slistSendProcedure = {NULL, 0.0, Slist_Send};
|
||||||
static PollProcedure slistPollProcedure = {NULL, 0.0, Slist_Poll};
|
static PollProcedure slistPollProcedure = {NULL, 0.0, Slist_Poll};
|
||||||
|
|
||||||
|
|
|
@ -719,22 +719,6 @@ static void PF_traceline(void)
|
||||||
pr_global_struct->trace_ent = EDICT_TO_PROG(sv.edicts);
|
pr_global_struct->trace_ent = EDICT_TO_PROG(sv.edicts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
=================
|
|
||||||
PF_checkpos
|
|
||||||
|
|
||||||
Returns true if the given entity can move to the given position from it's
|
|
||||||
current position by walking or rolling.
|
|
||||||
FIXME: make work...
|
|
||||||
scalar checkpos (entity, vector)
|
|
||||||
=================
|
|
||||||
*/
|
|
||||||
#if 0
|
|
||||||
static void PF_checkpos(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
static byte *checkpvs; //ericw -- changed to malloc
|
static byte *checkpvs; //ericw -- changed to malloc
|
||||||
|
|
|
@ -418,7 +418,7 @@ const char *PR_GlobalString(int32_t ofs)
|
||||||
ddef_t *def;
|
ddef_t *def;
|
||||||
void *val;
|
void *val;
|
||||||
|
|
||||||
val = (void *)&pr_globals[ofs];
|
val = &pr_globals[ofs];
|
||||||
def = ED_GlobalAtOfs(ofs);
|
def = ED_GlobalAtOfs(ofs);
|
||||||
if(!def)
|
if(!def)
|
||||||
sprintf(line, "%" PRIi32 "(?)", ofs);
|
sprintf(line, "%" PRIi32 "(?)", ofs);
|
||||||
|
@ -724,7 +724,7 @@ const char *ED_ParseGlobals(const char *data)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ED_ParseEpair((void *)pr_globals, key, com_token))
|
if(!ED_ParseEpair(pr_globals, key, com_token))
|
||||||
Host_Error("ED_ParseGlobals: parse error");
|
Host_Error("ED_ParseGlobals: parse error");
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
|
@ -783,7 +783,7 @@ static bool ED_ParseEpair(void *base, ddef_t *key, const char *s)
|
||||||
void *d;
|
void *d;
|
||||||
dfunction_t *func;
|
dfunction_t *func;
|
||||||
|
|
||||||
d = (void *)((int32_t *)base + key->ofs);
|
d = (int32_t *)base + key->ofs;
|
||||||
|
|
||||||
switch(key->type & ~DEF_SAVEGLOBAL)
|
switch(key->type & ~DEF_SAVEGLOBAL)
|
||||||
{
|
{
|
||||||
|
@ -944,7 +944,7 @@ const char *ED_ParseEdict(const char *data, edict_t *ent)
|
||||||
sprintf(com_token, "0 %s 0", temp);
|
sprintf(com_token, "0 %s 0", temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!ED_ParseEpair((void *)&ent->v, key, com_token))
|
if(!ED_ParseEpair(&ent->v, key, com_token))
|
||||||
Host_Error("ED_ParseEdict: parse error");
|
Host_Error("ED_ParseEdict: parse error");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1042,32 +1042,8 @@ void ED_LoadFromFile(const char *data)
|
||||||
Con_DPrintf("%" PRIi32 " entities inhibited\n", inhibit);
|
Con_DPrintf("%" PRIi32 " entities inhibited\n", inhibit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void PR_LoadProgHeader(byte *prog_data)
|
||||||
/*
|
|
||||||
===============
|
|
||||||
PR_LoadProgs
|
|
||||||
===============
|
|
||||||
*/
|
|
||||||
void PR_LoadProgs(void)
|
|
||||||
{
|
{
|
||||||
byte *prog_data;
|
|
||||||
int32_t i;
|
|
||||||
|
|
||||||
// flush the non-C variable lookup cache
|
|
||||||
for(i = 0; i < GEFV_CACHESIZE; i++)
|
|
||||||
gefvCache[i].field[0] = 0;
|
|
||||||
|
|
||||||
CRC_Init(&pr_crc);
|
|
||||||
|
|
||||||
prog_data = COM_LoadHunkFile("progs.dat", NULL);
|
|
||||||
if(!prog_data)
|
|
||||||
Host_Error("PR_LoadProgs: couldn't load progs.dat");
|
|
||||||
Con_DPrintf("Programs occupy %" PRIi32 "K.\n", com_filesize / 1024);
|
|
||||||
|
|
||||||
for(i = 0; i < com_filesize; i++)
|
|
||||||
CRC_ProcessByte(&pr_crc, prog_data[i]);
|
|
||||||
|
|
||||||
// byte swap the header
|
|
||||||
progs.version = ReadLittleLong(&prog_data[4 * 0]);
|
progs.version = ReadLittleLong(&prog_data[4 * 0]);
|
||||||
progs.crc = ReadLittleLong(&prog_data[4 * 1]);
|
progs.crc = ReadLittleLong(&prog_data[4 * 1]);
|
||||||
|
|
||||||
|
@ -1093,11 +1069,39 @@ void PR_LoadProgs(void)
|
||||||
|
|
||||||
if(progs.version != PROG_VERSION)
|
if(progs.version != PROG_VERSION)
|
||||||
Host_Error("progs.dat has wrong version number (%" PRIi32 " should be %" PRIi32 ")", progs.version, PROG_VERSION);
|
Host_Error("progs.dat has wrong version number (%" PRIi32 " should be %" PRIi32 ")", progs.version, PROG_VERSION);
|
||||||
|
|
||||||
if(progs.crc != PROGHEADER_CRC)
|
if(progs.crc != PROGHEADER_CRC)
|
||||||
Host_Error("progs.dat system vars have been modified, progdefs.h is out of date");
|
Host_Error("progs.dat system vars have been modified, progdefs.h is out of date");
|
||||||
|
}
|
||||||
|
|
||||||
pr_functions = (dfunction_t *)(prog_data + progs.ofs_functions);
|
/*
|
||||||
pr_strings = (char *)prog_data + progs.ofs_strings;
|
===============
|
||||||
|
PR_LoadProgs
|
||||||
|
===============
|
||||||
|
*/
|
||||||
|
void PR_LoadProgs(void)
|
||||||
|
{
|
||||||
|
byte *prog_data;
|
||||||
|
int32_t i;
|
||||||
|
|
||||||
|
// flush the non-C variable lookup cache
|
||||||
|
for(i = 0; i < GEFV_CACHESIZE; i++)
|
||||||
|
gefvCache[i].field[0] = 0;
|
||||||
|
|
||||||
|
CRC_Init(&pr_crc);
|
||||||
|
|
||||||
|
prog_data = COM_LoadHunkFile("progs.dat", NULL);
|
||||||
|
if(!prog_data)
|
||||||
|
Host_Error("PR_LoadProgs: couldn't load progs.dat");
|
||||||
|
Con_DPrintf("Programs occupy %" PRIi32 "K.\n", com_filesize / 1024);
|
||||||
|
|
||||||
|
for(i = 0; i < com_filesize; i++)
|
||||||
|
CRC_ProcessByte(&pr_crc, prog_data[i]);
|
||||||
|
|
||||||
|
PR_LoadProgHeader(prog_data);
|
||||||
|
|
||||||
|
pr_functions = (dfunction_t *)&prog_data[progs.ofs_functions];
|
||||||
|
pr_strings = (char *)&prog_data[progs.ofs_strings];
|
||||||
if(progs.ofs_strings + progs.numstrings >= com_filesize)
|
if(progs.ofs_strings + progs.numstrings >= com_filesize)
|
||||||
Host_Error("progs.dat strings go past end of file\n");
|
Host_Error("progs.dat strings go past end of file\n");
|
||||||
|
|
||||||
|
@ -1106,15 +1110,15 @@ void PR_LoadProgs(void)
|
||||||
pr_maxknownstrings = 0;
|
pr_maxknownstrings = 0;
|
||||||
pr_stringssize = progs.numstrings;
|
pr_stringssize = progs.numstrings;
|
||||||
if(pr_knownstrings)
|
if(pr_knownstrings)
|
||||||
Z_Free((void *)pr_knownstrings);
|
Z_Free(pr_knownstrings);
|
||||||
pr_knownstrings = NULL;
|
pr_knownstrings = NULL;
|
||||||
PR_SetEngineString("");
|
PR_SetEngineString("");
|
||||||
|
|
||||||
pr_globaldefs = (ddef_t *)(prog_data + progs.ofs_globaldefs);
|
pr_globaldefs = (ddef_t *)&prog_data[progs.ofs_globaldefs];
|
||||||
pr_fielddefs = (ddef_t *)(prog_data + progs.ofs_fielddefs);
|
pr_fielddefs = (ddef_t *)&prog_data[progs.ofs_fielddefs];
|
||||||
pr_statements = (dstatement_t *)(prog_data + progs.ofs_statements);
|
pr_statements = (dstatement_t *)&prog_data[progs.ofs_statements];
|
||||||
|
|
||||||
pr_global_struct = (globalvars_t *)(prog_data + progs.ofs_globals);
|
pr_global_struct = (globalvars_t *)&prog_data[progs.ofs_globals];
|
||||||
pr_globals = (float *)pr_global_struct;
|
pr_globals = (float *)pr_global_struct;
|
||||||
|
|
||||||
// byte swap the lumps
|
// byte swap the lumps
|
||||||
|
@ -1224,7 +1228,7 @@ static void PR_AllocStringSlots(void)
|
||||||
{
|
{
|
||||||
pr_maxknownstrings += PR_STRING_ALLOCSLOTS;
|
pr_maxknownstrings += PR_STRING_ALLOCSLOTS;
|
||||||
Con_DPrintf2("PR_AllocStringSlots: realloc'ing for %" PRIi32 " slots\n", pr_maxknownstrings);
|
Con_DPrintf2("PR_AllocStringSlots: realloc'ing for %" PRIi32 " slots\n", pr_maxknownstrings);
|
||||||
pr_knownstrings = (const char **) Z_Realloc((void *)pr_knownstrings, pr_maxknownstrings * sizeof(char *));
|
pr_knownstrings = (const char **) Z_Realloc(pr_knownstrings, pr_maxknownstrings * sizeof(char *));
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *PR_GetString(int32_t num)
|
const char *PR_GetString(int32_t num)
|
||||||
|
@ -1253,33 +1257,16 @@ int32_t PR_SetEngineString(const char *s)
|
||||||
|
|
||||||
if(!s)
|
if(!s)
|
||||||
return 0;
|
return 0;
|
||||||
#if 0 /* can't: sv.model_precache & sv.sound_precache points to pr_strings */
|
|
||||||
if(s >= pr_strings && s <= pr_strings + pr_stringssize)
|
|
||||||
Host_Error("PR_SetEngineString: \"%s\" in pr_strings area\n", s);
|
|
||||||
#else
|
|
||||||
if(s >= pr_strings && s <= pr_strings + pr_stringssize - 2)
|
if(s >= pr_strings && s <= pr_strings + pr_stringssize - 2)
|
||||||
return (int32_t)(s - pr_strings);
|
return (int32_t)(s - pr_strings);
|
||||||
#endif
|
|
||||||
for(i = 0; i < pr_numknownstrings; i++)
|
for(i = 0; i < pr_numknownstrings; i++)
|
||||||
{
|
{
|
||||||
if(pr_knownstrings[i] == s)
|
if(pr_knownstrings[i] == s)
|
||||||
return -1 - i;
|
return -1 - i;
|
||||||
}
|
}
|
||||||
// new unknown engine string
|
|
||||||
//Con_DPrintf ("PR_SetEngineString: new engine string %p\n", s);
|
|
||||||
#if 0
|
|
||||||
for(i = 0; i < pr_numknownstrings; i++)
|
|
||||||
{
|
|
||||||
if(!pr_knownstrings[i])
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
// if (i >= pr_numknownstrings)
|
|
||||||
// {
|
|
||||||
if(i >= pr_maxknownstrings)
|
if(i >= pr_maxknownstrings)
|
||||||
PR_AllocStringSlots();
|
PR_AllocStringSlots();
|
||||||
pr_numknownstrings++;
|
pr_numknownstrings++;
|
||||||
// }
|
|
||||||
pr_knownstrings[i] = s;
|
pr_knownstrings[i] = s;
|
||||||
return -1 - i;
|
return -1 - i;
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@ model and pose.
|
||||||
static void *GLARB_GetXYZOffset(aliashdr_t *hdr, int32_t pose)
|
static void *GLARB_GetXYZOffset(aliashdr_t *hdr, int32_t pose)
|
||||||
{
|
{
|
||||||
const int32_t xyzoffs = offsetof(meshxyz_t, xyz);
|
const int32_t xyzoffs = offsetof(meshxyz_t, xyz);
|
||||||
return (void *)(currententity->model->vboxyzofs + (hdr->numverts_vbo * pose * sizeof(meshxyz_t)) + xyzoffs);
|
return &((byte *)NULL)[currententity->model->vboxyzofs + hdr->numverts_vbo * pose * sizeof(meshxyz_t) + xyzoffs];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -112,7 +112,7 @@ given model and pose.
|
||||||
static void *GLARB_GetNormalOffset(aliashdr_t *hdr, int32_t pose)
|
static void *GLARB_GetNormalOffset(aliashdr_t *hdr, int32_t pose)
|
||||||
{
|
{
|
||||||
const int32_t normaloffs = offsetof(meshxyz_t, normal);
|
const int32_t normaloffs = offsetof(meshxyz_t, normal);
|
||||||
return (void *)(currententity->model->vboxyzofs + (hdr->numverts_vbo * pose * sizeof(meshxyz_t)) + normaloffs);
|
return &((byte *)NULL)[currententity->model->vboxyzofs + hdr->numverts_vbo * pose * sizeof(meshxyz_t) + normaloffs];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
372
source/r_brush.c
372
source/r_brush.c
|
@ -135,378 +135,6 @@ void DrawGLTriangleFan(glpoly_t *p)
|
||||||
=============================================================
|
=============================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if 0
|
|
||||||
/*
|
|
||||||
================
|
|
||||||
R_DrawSequentialPoly -- johnfitz -- rewritten
|
|
||||||
================
|
|
||||||
*/
|
|
||||||
void R_DrawSequentialPoly(msurface_t *s)
|
|
||||||
{
|
|
||||||
glpoly_t *p;
|
|
||||||
texture_t *t;
|
|
||||||
float *v;
|
|
||||||
float entalpha;
|
|
||||||
int32_t i;
|
|
||||||
|
|
||||||
t = R_TextureAnimation(s->texinfo->texture, currententity->frame);
|
|
||||||
entalpha = ENTALPHA_DECODE(currententity->alpha);
|
|
||||||
|
|
||||||
// drawflat
|
|
||||||
if(r_drawflat_cheatsafe)
|
|
||||||
{
|
|
||||||
if((s->flags & SURF_DRAWTURB) && r_oldwater.value)
|
|
||||||
{
|
|
||||||
for(p = s->polys->next; p; p = p->next)
|
|
||||||
{
|
|
||||||
srand((uint32_t)(uintptr_t) p);
|
|
||||||
glColor3f(rand() % 256 / 255.0, rand() % 256 / 255.0, rand() % 256 / 255.0);
|
|
||||||
DrawGLPoly(p);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
srand((uint32_t)(uintptr_t) s->polys);
|
|
||||||
glColor3f(rand() % 256 / 255.0, rand() % 256 / 255.0, rand() % 256 / 255.0);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
rs_brushpasses++;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// fullbright
|
|
||||||
if((r_fullbright_cheatsafe) && !(s->flags & SURF_DRAWTILED))
|
|
||||||
{
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor4f(1, 1, 1, entalpha);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s->flags & SURF_DRAWFENCE)
|
|
||||||
glEnable(GL_ALPHA_TEST); // Flip on alpha test
|
|
||||||
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
rs_brushpasses++;
|
|
||||||
|
|
||||||
if(s->flags & SURF_DRAWFENCE)
|
|
||||||
glDisable(GL_ALPHA_TEST); // Flip alpha test back off
|
|
||||||
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
}
|
|
||||||
goto fullbrights;
|
|
||||||
}
|
|
||||||
|
|
||||||
// r_lightmap
|
|
||||||
if(r_lightmap_cheatsafe)
|
|
||||||
{
|
|
||||||
if(s->flags & SURF_DRAWTILED)
|
|
||||||
{
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
glEnable(GL_TEXTURE_2D);
|
|
||||||
rs_brushpasses++;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
R_RenderDynamicLightmaps(s);
|
|
||||||
GL_Bind(lightmap_textures[s->lightmaptexturenum]);
|
|
||||||
if(!gl_overbright.value)
|
|
||||||
{
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor3f(0.5, 0.5, 0.5);
|
|
||||||
}
|
|
||||||
glBegin(GL_POLYGON);
|
|
||||||
v = s->polys->verts[0];
|
|
||||||
for(i = 0 ; i < s->polys->numverts ; i++, v += VERTEXSIZE)
|
|
||||||
{
|
|
||||||
glTexCoord2f(v[5], v[6]);
|
|
||||||
glVertex3fv(v);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
if(!gl_overbright.value)
|
|
||||||
{
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
}
|
|
||||||
rs_brushpasses++;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// sky poly -- skip it, already handled in gl_sky.c
|
|
||||||
if(s->flags & SURF_DRAWSKY)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// water poly
|
|
||||||
if(s->flags & SURF_DRAWTURB)
|
|
||||||
{
|
|
||||||
if(currententity->alpha == ENTALPHA_DEFAULT)
|
|
||||||
entalpha = CLAMP(0.0, GL_WaterAlphaForSurface(s), 1.0);
|
|
||||||
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor4f(1, 1, 1, entalpha);
|
|
||||||
}
|
|
||||||
if(r_oldwater.value)
|
|
||||||
{
|
|
||||||
GL_Bind(s->texinfo->texture->gltexture);
|
|
||||||
for(p = s->polys->next; p; p = p->next)
|
|
||||||
{
|
|
||||||
DrawWaterPoly(p);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GL_Bind(s->texinfo->texture->warpimage);
|
|
||||||
s->texinfo->texture->update_warp = true; // FIXME: one frame too late!
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// missing texture
|
|
||||||
if(s->flags & SURF_NOTEXTURE)
|
|
||||||
{
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor4f(1, 1, 1, entalpha);
|
|
||||||
}
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
rs_brushpasses++;
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// lightmapped poly
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor4f(1, 1, 1, entalpha);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
|
|
||||||
if(s->flags & SURF_DRAWFENCE)
|
|
||||||
glEnable(GL_ALPHA_TEST); // Flip on alpha test
|
|
||||||
|
|
||||||
if(gl_overbright.value)
|
|
||||||
{
|
|
||||||
if(gl_texture_env_combine && gl_mtexable) //case 1: texture and lightmap in one pass, overbright using texture combiners
|
|
||||||
{
|
|
||||||
GL_DisableMultitexture(); // selects TEXTURE0
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
GL_EnableMultitexture(); // selects TEXTURE1
|
|
||||||
GL_Bind(lightmap_textures[s->lightmaptexturenum]);
|
|
||||||
R_RenderDynamicLightmaps(s);
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE);
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_PREVIOUS_EXT);
|
|
||||||
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_TEXTURE);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 2.0f);
|
|
||||||
glBegin(GL_POLYGON);
|
|
||||||
v = s->polys->verts[0];
|
|
||||||
for(i = 0 ; i < s->polys->numverts ; i++, v += VERTEXSIZE)
|
|
||||||
{
|
|
||||||
GL_MTexCoord2fFunc(GL_TEXTURE0_ARB, v[3], v[4]);
|
|
||||||
GL_MTexCoord2fFunc(GL_TEXTURE1_ARB, v[5], v[6]);
|
|
||||||
glVertex3fv(v);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, 1.0f);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
GL_DisableMultitexture();
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
else if(entalpha < 1 || (s->flags & SURF_DRAWFENCE)) //case 2: can't do multipass if entity has alpha, so just draw the texture
|
|
||||||
{
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
else //case 3: texture in one pass, lightmap in second pass using 2x modulation blend func, fog in third pass
|
|
||||||
{
|
|
||||||
//first pass -- texture with no fog
|
|
||||||
Fog_DisableGFog();
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
Fog_EnableGFog();
|
|
||||||
rs_brushpasses++;
|
|
||||||
|
|
||||||
//second pass -- lightmap with black fog, modulate blended
|
|
||||||
R_RenderDynamicLightmaps(s);
|
|
||||||
GL_Bind(lightmap_textures[s->lightmaptexturenum]);
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR); //2x modulate
|
|
||||||
Fog_StartAdditive();
|
|
||||||
glBegin(GL_POLYGON);
|
|
||||||
v = s->polys->verts[0];
|
|
||||||
for(i = 0 ; i < s->polys->numverts ; i++, v += VERTEXSIZE)
|
|
||||||
{
|
|
||||||
glTexCoord2f(v[5], v[6]);
|
|
||||||
glVertex3fv(v);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
Fog_StopAdditive();
|
|
||||||
rs_brushpasses++;
|
|
||||||
|
|
||||||
//third pass -- black geo with normal fog, additive blended
|
|
||||||
if(Fog_GetDensity() > 0)
|
|
||||||
{
|
|
||||||
glBlendFunc(GL_ONE, GL_ONE); //add
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor3f(0, 0, 0);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(gl_mtexable) //case 4: texture and lightmap in one pass, regular modulation
|
|
||||||
{
|
|
||||||
GL_DisableMultitexture(); // selects TEXTURE0
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
GL_EnableMultitexture(); // selects TEXTURE1
|
|
||||||
GL_Bind(lightmap_textures[s->lightmaptexturenum]);
|
|
||||||
R_RenderDynamicLightmaps(s);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glBegin(GL_POLYGON);
|
|
||||||
v = s->polys->verts[0];
|
|
||||||
for(i = 0 ; i < s->polys->numverts ; i++, v += VERTEXSIZE)
|
|
||||||
{
|
|
||||||
GL_MTexCoord2fFunc(GL_TEXTURE0_ARB, v[3], v[4]);
|
|
||||||
GL_MTexCoord2fFunc(GL_TEXTURE1_ARB, v[5], v[6]);
|
|
||||||
glVertex3fv(v);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
GL_DisableMultitexture();
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
else if(entalpha < 1 || (s->flags & SURF_DRAWFENCE)) //case 5: can't do multipass if entity has alpha, so just draw the texture
|
|
||||||
{
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
else //case 6: texture in one pass, lightmap in a second pass, fog in third pass
|
|
||||||
{
|
|
||||||
//first pass -- texture with no fog
|
|
||||||
Fog_DisableGFog();
|
|
||||||
GL_Bind(t->gltexture);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
Fog_EnableGFog();
|
|
||||||
rs_brushpasses++;
|
|
||||||
|
|
||||||
//second pass -- lightmap with black fog, modulate blended
|
|
||||||
R_RenderDynamicLightmaps(s);
|
|
||||||
GL_Bind(lightmap_textures[s->lightmaptexturenum]);
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glBlendFunc(GL_ZERO, GL_SRC_COLOR); //modulate
|
|
||||||
Fog_StartAdditive();
|
|
||||||
glBegin(GL_POLYGON);
|
|
||||||
v = s->polys->verts[0];
|
|
||||||
for(i = 0 ; i < s->polys->numverts ; i++, v += VERTEXSIZE)
|
|
||||||
{
|
|
||||||
glTexCoord2f(v[5], v[6]);
|
|
||||||
glVertex3fv(v);
|
|
||||||
}
|
|
||||||
glEnd();
|
|
||||||
Fog_StopAdditive();
|
|
||||||
rs_brushpasses++;
|
|
||||||
|
|
||||||
//third pass -- black geo with normal fog, additive blended
|
|
||||||
if(Fog_GetDensity() > 0)
|
|
||||||
{
|
|
||||||
glBlendFunc(GL_ONE, GL_ONE); //add
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor3f(0, 0, 0);
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(entalpha < 1)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(s->flags & SURF_DRAWFENCE)
|
|
||||||
glDisable(GL_ALPHA_TEST); // Flip alpha test back off
|
|
||||||
|
|
||||||
fullbrights:
|
|
||||||
if(gl_fullbrights.value && t->fullbright)
|
|
||||||
{
|
|
||||||
glDepthMask(GL_FALSE);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
glBlendFunc(GL_ONE, GL_ONE);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
|
||||||
glColor3f(entalpha, entalpha, entalpha);
|
|
||||||
GL_Bind(t->fullbright);
|
|
||||||
Fog_StartAdditive();
|
|
||||||
DrawGLPoly(s->polys);
|
|
||||||
Fog_StopAdditive();
|
|
||||||
glColor3f(1, 1, 1);
|
|
||||||
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
|
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
glDepthMask(GL_TRUE);
|
|
||||||
rs_brushpasses++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
=================
|
=================
|
||||||
R_DrawBrushModel
|
R_DrawBrushModel
|
||||||
|
|
|
@ -228,25 +228,6 @@ static void FindChunk(const char *name)
|
||||||
FindNextChunk(name);
|
FindNextChunk(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void DumpChunks(void)
|
|
||||||
{
|
|
||||||
char str[5];
|
|
||||||
|
|
||||||
str[4] = 0;
|
|
||||||
data_p = iff_data;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
memcpy(str, data_p, 4);
|
|
||||||
data_p += 4;
|
|
||||||
iff_chunk_len = GetLittleLong();
|
|
||||||
Con_Printf("0x%x : %s (%" PRIi32 ")\n", (int32_t)(data_p - 4), str, iff_chunk_len);
|
|
||||||
data_p += (iff_chunk_len + 1) & ~1;
|
|
||||||
}
|
|
||||||
while(data_p < iff_end);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
============
|
============
|
||||||
GetWavinfo
|
GetWavinfo
|
||||||
|
@ -277,9 +258,6 @@ wavinfo_t GetWavinfo(const char *name, byte *wav, int32_t wavlength)
|
||||||
|
|
||||||
// get "fmt " chunk
|
// get "fmt " chunk
|
||||||
iff_data = data_p + 12;
|
iff_data = data_p + 12;
|
||||||
#if 0
|
|
||||||
DumpChunks();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
FindChunk("fmt ");
|
FindChunk("fmt ");
|
||||||
if(!data_p)
|
if(!data_p)
|
||||||
|
|
|
@ -31,16 +31,8 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <opusfile.h>
|
#include <opusfile.h>
|
||||||
|
|
||||||
|
|
||||||
/* CALLBACK FUNCTIONS: */
|
/* CALLBACK FUNCTIONS: */
|
||||||
|
static int opc_fread(void *f, unsigned char *buf, int size)
|
||||||
static int32_t opc_fclose(void *f)
|
|
||||||
{
|
|
||||||
(void)f;
|
|
||||||
return 0; /* we fclose() elsewhere. */
|
|
||||||
}
|
|
||||||
|
|
||||||
static int32_t opc_fread(void *f, uint8_t *buf, int32_t size)
|
|
||||||
{
|
{
|
||||||
int32_t ret;
|
int32_t ret;
|
||||||
|
|
||||||
|
@ -56,23 +48,29 @@ static int32_t opc_fread(void *f, uint8_t *buf, int32_t size)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t opc_fseek(void *f, opus_int64 off, int32_t whence)
|
static int opc_fseek(void *f, opus_int64 off, int whence)
|
||||||
{
|
{
|
||||||
if(f == NULL) return (-1);
|
if(f == NULL) return -1;
|
||||||
return FS_fseek((fshandle_t *)f, (long) off, whence);
|
return FS_fseek((fshandle_t *)f, (long)off, whence);
|
||||||
}
|
}
|
||||||
|
|
||||||
static opus_int64 opc_ftell(void *f)
|
static opus_int64 opc_ftell(void *f)
|
||||||
{
|
{
|
||||||
return (opus_int64) FS_ftell((fshandle_t *)f);
|
return (opus_int64)FS_ftell(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int opc_fclose(void *f)
|
||||||
|
{
|
||||||
|
(void)f;
|
||||||
|
return 0; /* we fclose() elsewhere. */
|
||||||
}
|
}
|
||||||
|
|
||||||
static const OpusFileCallbacks opc_qfs =
|
static const OpusFileCallbacks opc_qfs =
|
||||||
{
|
{
|
||||||
(int32_t (*)(void *, uint8_t *, int32_t)) opc_fread,
|
.read = opc_fread,
|
||||||
(int32_t (*)(void *, opus_int64, int32_t)) opc_fseek,
|
.seek = opc_fseek,
|
||||||
(opus_int64(*)(void *)) opc_ftell,
|
.tell = opc_ftell,
|
||||||
(int32_t (*)(void *)) opc_fclose
|
.close = opc_fclose,
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool S_OPUS_CodecInitialize(void)
|
static bool S_OPUS_CodecInitialize(void)
|
||||||
|
|
|
@ -126,7 +126,7 @@ bool SNDDMA_Init(dma_t *dma)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset((void *) dma, 0, sizeof(dma_t));
|
memset(dma, 0, sizeof(dma_t));
|
||||||
shm = dma;
|
shm = dma;
|
||||||
|
|
||||||
/* Fill the audio DMA information block */
|
/* Fill the audio DMA information block */
|
||||||
|
|
|
@ -44,25 +44,34 @@
|
||||||
#define VORBIS_SIGNED_DATA 1
|
#define VORBIS_SIGNED_DATA 1
|
||||||
|
|
||||||
/* CALLBACK FUNCTIONS: */
|
/* CALLBACK FUNCTIONS: */
|
||||||
|
static size_t ovc_fread(void *ptr, size_t size, size_t nmemb, void *fh)
|
||||||
static int32_t ovc_fclose(void *f)
|
|
||||||
{
|
{
|
||||||
(void)f;
|
return FS_fread(ptr, size, nmemb, fh);
|
||||||
return 0; /* we fclose() elsewhere. */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t ovc_fseek(void *f, ogg_int64_t off, int32_t whence)
|
static int32_t ovc_fseek(void *f, ogg_int64_t off, int32_t whence)
|
||||||
{
|
{
|
||||||
if(f == NULL) return (-1);
|
if(f == NULL) return -1;
|
||||||
return FS_fseek((fshandle_t *)f, (long) off, whence);
|
return FS_fseek(f, (long)off, whence);
|
||||||
|
}
|
||||||
|
|
||||||
|
static long ovc_ftell(void *f)
|
||||||
|
{
|
||||||
|
return (long)FS_ftell(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t ovc_fclose(void *f)
|
||||||
|
{
|
||||||
|
(void)f;
|
||||||
|
return 0; /* we fclose() elsewhere. */
|
||||||
}
|
}
|
||||||
|
|
||||||
static ov_callbacks ovc_qfs =
|
static ov_callbacks ovc_qfs =
|
||||||
{
|
{
|
||||||
(size_t (*)(void *, size_t, size_t, void *)) FS_fread,
|
.read_func = ovc_fread,
|
||||||
(int32_t (*)(void *, ogg_int64_t, int32_t)) ovc_fseek,
|
.seek_func = ovc_fseek,
|
||||||
(int32_t (*)(void *)) ovc_fclose,
|
.tell_func = ovc_ftell,
|
||||||
(long (*)(void *)) FS_ftell
|
.close_func = ovc_fclose,
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool S_VORBIS_CodecInitialize(void)
|
static bool S_VORBIS_CodecInitialize(void)
|
||||||
|
|
|
@ -138,10 +138,6 @@ STBIWDEF int32_t stbi_write_jpg(char const *filename, int32_t x, int32_t y, int3
|
||||||
|
|
||||||
typedef void stbi_write_func(void *context, void *data, int32_t size);
|
typedef void stbi_write_func(void *context, void *data, int32_t size);
|
||||||
|
|
||||||
#if 0 /* not used in QuakeSpasm */
|
|
||||||
STBIWDEF int32_t stbi_write_jpg_to_func(stbi_write_func *func, void *context, int32_t x, int32_t y, int32_t comp, const void *data, int32_t quality);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STB_IMAGE_WRITE_IMPLEMENTATION)
|
#if defined(STB_IMAGE_WRITE_IMPLEMENTATION)
|
||||||
|
@ -218,7 +214,7 @@ static void stbi__stdio_write(void *context, void *data, int32_t size)
|
||||||
static int32_t stbi__start_write_file(stbi__write_context *s, const char *filename)
|
static int32_t stbi__start_write_file(stbi__write_context *s, const char *filename)
|
||||||
{
|
{
|
||||||
FILE *f = fopen(filename, "wb");
|
FILE *f = fopen(filename, "wb");
|
||||||
stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f);
|
stbi__start_write_callbacks(s, stbi__stdio_write, f);
|
||||||
return f != NULL;
|
return f != NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,16 +607,6 @@ static int32_t stbi_write_jpg_core(stbi__write_context *s, int32_t width, int32_
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 /* not used in QuakeSpasm */
|
|
||||||
STBIWDEF int32_t stbi_write_jpg_to_func(stbi_write_func *func, void *context, int32_t x, int32_t y, int32_t comp, const void *data, int32_t quality)
|
|
||||||
{
|
|
||||||
stbi__write_context s;
|
|
||||||
stbi__start_write_callbacks(&s, func, context);
|
|
||||||
return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if !defined(STBI_WRITE_NO_STDIO)
|
#if !defined(STBI_WRITE_NO_STDIO)
|
||||||
STBIWDEF int32_t stbi_write_jpg(char const *filename, int32_t x, int32_t y, int32_t comp, const void *data, int32_t quality)
|
STBIWDEF int32_t stbi_write_jpg(char const *filename, int32_t x, int32_t y, int32_t comp, const void *data, int32_t quality)
|
||||||
{
|
{
|
||||||
|
|
|
@ -137,7 +137,7 @@ void *W_GetLumpName(const char *name)
|
||||||
|
|
||||||
if(!lump) return NULL; //johnfitz
|
if(!lump) return NULL; //johnfitz
|
||||||
|
|
||||||
return (void *)(wad_base + lump->filepos);
|
return wad_base + lump->filepos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *W_GetLumpNum(int32_t num)
|
void *W_GetLumpNum(int32_t num)
|
||||||
|
@ -149,7 +149,7 @@ void *W_GetLumpNum(int32_t num)
|
||||||
|
|
||||||
lump = wad_lumps + num;
|
lump = wad_lumps + num;
|
||||||
|
|
||||||
return (void *)(wad_base + lump->filepos);
|
return wad_base + lump->filepos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -864,11 +864,6 @@ SV_MoveBounds
|
||||||
*/
|
*/
|
||||||
void SV_MoveBounds(vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, vec3_t boxmins, vec3_t boxmaxs)
|
void SV_MoveBounds(vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, vec3_t boxmins, vec3_t boxmaxs)
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
// debug to test against everything
|
|
||||||
boxmins[0] = boxmins[1] = boxmins[2] = -9999;
|
|
||||||
boxmaxs[0] = boxmaxs[1] = boxmaxs[2] = 9999;
|
|
||||||
#else
|
|
||||||
int32_t i;
|
int32_t i;
|
||||||
|
|
||||||
for(i = 0 ; i < 3 ; i++)
|
for(i = 0 ; i < 3 ; i++)
|
||||||
|
@ -884,7 +879,6 @@ void SV_MoveBounds(vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, vec3_t bo
|
||||||
boxmaxs[i] = start[i] + maxs[i] + 1;
|
boxmaxs[i] = start[i] + maxs[i] + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -168,7 +168,7 @@ static void *Z_TagMalloc(int32_t size, int32_t tag)
|
||||||
// marker for memory trash testing
|
// marker for memory trash testing
|
||||||
*(int32_t *)((byte *)base + base->size - 4) = ZONEID;
|
*(int32_t *)((byte *)base + base->size - 4) = ZONEID;
|
||||||
|
|
||||||
return (void *)((byte *)base + sizeof(memblock_t));
|
return (byte *)base + sizeof(memblock_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -456,7 +456,7 @@ void *Hunk_AllocName(int32_t size, const char *name)
|
||||||
h->sentinel = HUNK_SENTINEL;
|
h->sentinel = HUNK_SENTINEL;
|
||||||
q_strlcpy(h->name, name, HUNKNAME_LEN);
|
q_strlcpy(h->name, name, HUNKNAME_LEN);
|
||||||
|
|
||||||
return (void *)(h + 1);
|
return h + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -547,7 +547,7 @@ void *Hunk_HighAllocName(int32_t size, const char *name)
|
||||||
h->sentinel = HUNK_SENTINEL;
|
h->sentinel = HUNK_SENTINEL;
|
||||||
q_strlcpy(h->name, name, HUNKNAME_LEN);
|
q_strlcpy(h->name, name, HUNKNAME_LEN);
|
||||||
|
|
||||||
return (void *)(h + 1);
|
return h + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -628,7 +628,7 @@ void Cache_Move(cache_system_t *c)
|
||||||
new_cs->user = c->user;
|
new_cs->user = c->user;
|
||||||
Q_memcpy(new_cs->name, c->name, sizeof(new_cs->name));
|
Q_memcpy(new_cs->name, c->name, sizeof(new_cs->name));
|
||||||
Cache_Free(c->user, false); //johnfitz -- added second argument
|
Cache_Free(c->user, false); //johnfitz -- added second argument
|
||||||
new_cs->user->data = (void *)(new_cs + 1);
|
new_cs->user->data = new_cs + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -926,7 +926,7 @@ void *Cache_Alloc(cache_user_t *c, int32_t size, const char *name)
|
||||||
if(cs)
|
if(cs)
|
||||||
{
|
{
|
||||||
q_strlcpy(cs->name, name, CACHENAME_LEN);
|
q_strlcpy(cs->name, name, CACHENAME_LEN);
|
||||||
c->data = (void *)(cs + 1);
|
c->data = cs + 1;
|
||||||
cs->user = c;
|
cs->user = c;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue