some more random fixes.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4673 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2014-05-30 16:37:20 +00:00
parent 3c8ece88ed
commit 68599df1f7
6 changed files with 48 additions and 32 deletions

View file

@ -718,7 +718,7 @@ static qboolean CopyCSQCEdictToEntity(csqcedict_t *in, entity_t *out)
out->forcedshader = NULL; out->forcedshader = NULL;
out->customskin = (in->skinobject<0)?-in->skinobject:in->skinobject; out->customskin = (in->skinobject<0)?-in->skinobject:in->skinobject;
if (in->xv->entnum) if (in->xv->entnum && !in->xv->camera_transform) //yes, camera_transform is this hacky
out->keynum = in->xv->entnum; out->keynum = in->xv->entnum;
else else
out->keynum = -in->entnum; out->keynum = -in->entnum;

View file

@ -1996,9 +1996,6 @@ void Surf_SetupFrame(void)
r_viewleaf->contents = Q1CONTENTS_EMPTY; r_viewleaf->contents = Q1CONTENTS_EMPTY;
r_viewleaf2 = NULL; r_viewleaf2 = NULL;
r_oldviewcluster = r_viewcluster;
r_oldviewcluster2 = r_viewcluster2;
leaf = Mod_PointInLeaf (cl.worldmodel, pvsorg); leaf = Mod_PointInLeaf (cl.worldmodel, pvsorg);
r_viewcontents = cl.worldmodel->funcs.PointContents(cl.worldmodel, NULL, pvsorg); r_viewcontents = cl.worldmodel->funcs.PointContents(cl.worldmodel, NULL, pvsorg);
r_viewcluster = r_viewcluster2 = leaf->cluster; r_viewcluster = r_viewcluster2 = leaf->cluster;

View file

@ -1847,7 +1847,7 @@ mleaf_t *r_viewleaf2, *r_oldviewleaf2;
int r_viewcluster, r_viewcluster2, r_oldviewcluster, r_oldviewcluster2; int r_viewcluster, r_viewcluster2, r_oldviewcluster, r_oldviewcluster2;
int r_visframecount; int r_visframecount;
mleaf_t *r_vischain; // linked list of visible leafs mleaf_t *r_vischain; // linked list of visible leafs
static qbyte curframevis[MAX_MAP_LEAFS/8]; static qbyte curframevis[R_MAX_RECURSE][MAX_MAP_LEAFS/8];
/* /*
=============== ===============
@ -1857,15 +1857,17 @@ R_MarkLeaves
#ifdef Q3BSPS #ifdef Q3BSPS
qbyte *R_MarkLeaves_Q3 (void) qbyte *R_MarkLeaves_Q3 (void)
{ {
static qbyte *vis; static qbyte *cvis[R_MAX_RECURSE];
qbyte *vis;
int i; int i;
int cluster; int cluster;
mleaf_t *leaf; mleaf_t *leaf;
mnode_t *node; mnode_t *node;
int portal = r_refdef.recurse;
if (r_oldviewcluster == r_viewcluster && !r_novis.value && r_viewcluster != -1) if (r_oldviewcluster == r_viewcluster && !r_novis.value && r_viewcluster != -1)
return vis; return cvis[portal];
// development aid to let you run around and see exactly where // development aid to let you run around and see exactly where
// the pvs ends // the pvs ends
@ -1903,7 +1905,7 @@ qbyte *R_MarkLeaves_Q3 (void)
} }
else else
{ {
vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster, curframevis, sizeof(curframevis)); vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster, curframevis[portal], sizeof(curframevis));
for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numleafs ; i++, leaf++) for (i=0,leaf=cl.worldmodel->leafs ; i<cl.worldmodel->numleafs ; i++, leaf++)
{ {
cluster = leaf->cluster; cluster = leaf->cluster;
@ -1927,6 +1929,7 @@ qbyte *R_MarkLeaves_Q3 (void)
#endif #endif
} }
} }
cvis[portal] = vis;
} }
return vis; return vis;
} }
@ -1935,29 +1938,40 @@ qbyte *R_MarkLeaves_Q3 (void)
#ifdef Q2BSPS #ifdef Q2BSPS
qbyte *R_MarkLeaves_Q2 (void) qbyte *R_MarkLeaves_Q2 (void)
{ {
static qbyte *vis; static qbyte *cvis[R_MAX_RECURSE];
mnode_t *node; mnode_t *node;
int i; int i;
int cluster; int cluster;
mleaf_t *leaf; mleaf_t *leaf;
qbyte *vis;
int c; int c;
int portal = r_refdef.recurse;
if (r_refdef.forcevis) if (r_refdef.forcevis)
{ {
vis = r_refdef.forcedvis; vis = cvis[portal] = r_refdef.forcedvis;
r_oldviewcluster = 0; r_oldviewcluster = -1;
r_oldviewcluster2 = 0; r_oldviewcluster2 = -1;
} }
else else
{ {
if (r_oldviewcluster == r_viewcluster && r_oldviewcluster2 == r_viewcluster2) vis = cvis[portal];
return vis; if (!portal)
{
if (r_oldviewcluster == r_viewcluster && r_oldviewcluster2 == r_viewcluster2)
return vis;
r_oldviewcluster = r_viewcluster; r_oldviewcluster = r_viewcluster;
r_oldviewcluster2 = r_viewcluster2; r_oldviewcluster2 = r_viewcluster2;
}
else
{
r_oldviewcluster = -1;
r_oldviewcluster2 = -1;
}
if (r_novis.ival == 2) if (r_novis.ival == 2)
return vis; return vis;
@ -1972,16 +1986,17 @@ qbyte *R_MarkLeaves_Q2 (void)
return vis; return vis;
} }
vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster, curframevis, sizeof(curframevis)); vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster, curframevis[portal], sizeof(curframevis));
// may have to combine two clusters because of solid water boundaries // may have to combine two clusters because of solid water boundaries
if (r_viewcluster2 != r_viewcluster) if (r_viewcluster2 != r_viewcluster)
{ {
vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster2, NULL, sizeof(curframevis)); vis = CM_ClusterPVS (cl.worldmodel, r_viewcluster2, NULL, sizeof(curframevis));
c = (cl.worldmodel->numleafs+31)/32; c = (cl.worldmodel->numleafs+31)/32;
for (i=0 ; i<c ; i++) for (i=0 ; i<c ; i++)
((int *)curframevis)[i] |= ((int *)vis)[i]; ((int *)curframevis[portal])[i] |= ((int *)vis)[i];
vis = curframevis; vis = curframevis[portal];
} }
cvis[portal] = vis;
} }
r_visframecount++; r_visframecount++;
@ -2007,6 +2022,7 @@ qbyte *R_MarkLeaves_Q2 (void)
} }
#endif #endif
#if 0
qbyte *R_CalcVis_Q1 (void) qbyte *R_CalcVis_Q1 (void)
{ {
unsigned int i; unsigned int i;
@ -2040,10 +2056,10 @@ qbyte *R_CalcVis_Q1 (void)
} }
return vis; return vis;
} }
#endif
qbyte *R_MarkLeaves_Q1 (void) qbyte *R_MarkLeaves_Q1 (void)
{ {
static qbyte fatvis[R_MAX_RECURSE][MAX_MAP_LEAFS/8];
static qbyte *cvis[R_MAX_RECURSE]; static qbyte *cvis[R_MAX_RECURSE];
qbyte *vis; qbyte *vis;
mnode_t *node; mnode_t *node;
@ -2079,8 +2095,8 @@ qbyte *R_MarkLeaves_Q1 (void)
if (r_novis.ival) if (r_novis.ival)
{ {
vis = cvis[portal] = fatvis[portal]; vis = cvis[portal] = curframevis[portal];
memset (fatvis[portal], 0xff, (cl.worldmodel->numclusters+7)>>3); memset (curframevis[portal], 0xff, (cl.worldmodel->numclusters+7)>>3);
r_oldviewleaf = NULL; r_oldviewleaf = NULL;
r_oldviewleaf2 = NULL; r_oldviewleaf2 = NULL;
@ -2088,17 +2104,17 @@ qbyte *R_MarkLeaves_Q1 (void)
else if (r_viewleaf2 && r_viewleaf2 != r_viewleaf) else if (r_viewleaf2 && r_viewleaf2 != r_viewleaf)
{ {
int c; int c;
Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf2, fatvis[portal], sizeof(fatvis[portal])); Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf2, curframevis[portal], sizeof(curframevis[portal]));
vis = cvis[portal] = Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf, NULL, 0); vis = cvis[portal] = Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf, NULL, 0);
c = (cl.worldmodel->numclusters+31)/32; c = (cl.worldmodel->numclusters+31)/32;
for (i=0 ; i<c ; i++) for (i=0 ; i<c ; i++)
((int *)fatvis[portal])[i] |= ((int *)vis)[i]; ((int *)curframevis[portal])[i] |= ((int *)vis)[i];
vis = cvis[portal] = fatvis[portal]; vis = cvis[portal] = curframevis[portal];
} }
else else
{ {
vis = cvis[portal] = Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf, fatvis[portal], sizeof(fatvis[portal])); vis = cvis[portal] = Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf, curframevis[portal], sizeof(curframevis[portal]));
} }
} }

View file

@ -1989,6 +1989,7 @@ qboolean CModQ2_LoadVisibility (lump_t *l)
map_q2vis->bitofs[i][0] = LittleLong (map_q2vis->bitofs[i][0]); map_q2vis->bitofs[i][0] = LittleLong (map_q2vis->bitofs[i][0]);
map_q2vis->bitofs[i][1] = LittleLong (map_q2vis->bitofs[i][1]); map_q2vis->bitofs[i][1] = LittleLong (map_q2vis->bitofs[i][1]);
} }
loadmodel->numclusters = map_q2vis->numclusters;
return true; return true;
} }
@ -3435,6 +3436,7 @@ qboolean CModQ3_LoadVisibility (lump_t *l)
numclusters = map_q3pvs->numclusters = LittleLong (map_q3pvs->numclusters); numclusters = map_q3pvs->numclusters = LittleLong (map_q3pvs->numclusters);
map_q3pvs->rowsize = LittleLong (map_q3pvs->rowsize); map_q3pvs->rowsize = LittleLong (map_q3pvs->rowsize);
} }
loadmodel->numclusters = numclusters;
return true; return true;
} }

View file

@ -4447,9 +4447,10 @@ void QCBUILTIN PF_WriteChar (pubprogfuncs_t *prinst, struct globalvars_s *pr_glo
void QCBUILTIN PF_WriteShort (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals) void QCBUILTIN PF_WriteShort (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
{ {
int dest = G_FLOAT(OFS_PARM0); int dest = G_FLOAT(OFS_PARM0);
short val = (((int)G_FLOAT(OFS_PARM1))&0xffff);
if (dest == MSG_CSQC) if (dest == MSG_CSQC)
{ //csqc buffers are always written. { //csqc buffers are always written.
MSG_WriteShort(&csqcmsgbuffer, G_FLOAT(OFS_PARM1)); MSG_WriteShort(&csqcmsgbuffer, val);
return; return;
} }
@ -4462,13 +4463,13 @@ void QCBUILTIN PF_WriteShort (pubprogfuncs_t *prinst, struct globalvars_s *pr_gl
if (progstype == PROG_NQ || progstype == PROG_H2) if (progstype == PROG_NQ || progstype == PROG_H2)
{ {
NPP_NQWriteShort(dest, (short)(int)G_FLOAT(OFS_PARM1)); NPP_NQWriteShort(dest, val);
return; return;
} }
#ifdef NQPROT #ifdef NQPROT
else else
{ {
NPP_QWWriteShort(dest, (short)(int)G_FLOAT(OFS_PARM1)); NPP_QWWriteShort(dest, val);
return; return;
} }
#else #else
@ -4478,10 +4479,10 @@ void QCBUILTIN PF_WriteShort (pubprogfuncs_t *prinst, struct globalvars_s *pr_gl
if (!cl) if (!cl)
return; return;
ClientReliableCheckBlock(cl, 2); ClientReliableCheckBlock(cl, 2);
ClientReliableWrite_Short(cl, G_FLOAT(OFS_PARM1)); ClientReliableWrite_Short(cl, val);
} }
else else
MSG_WriteShort (QWWriteDest(dest), G_FLOAT(OFS_PARM1)); MSG_WriteShort (QWWriteDest(dest), val);
#endif #endif
} }

View file

@ -2852,7 +2852,7 @@ client_t *SVC_DirectConnect(void)
} }
{ {
char *banreason = SV_BannedReason(&adr); char *banreason = SV_BannedReason(&net_from);
if (banreason) if (banreason)
{ {
if (*banreason) if (*banreason)