Small tweek... The mins/max mismatching code was disabled. Hopefully q3 bsps should have a little better physics.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@488 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2004-11-20 01:03:57 +00:00
parent 9721b3c21d
commit c8438cbc3e

View file

@ -2296,6 +2296,10 @@ void CModQ3_LoadRFaces (lump_t *l)
int fv; int fv;
mesh_t *mesh; mesh_t *mesh;
extern cvar_t gl_shaders;
int shaders = 1;//0;//gl_shaders.value;
in = (void *)(mod_base + l->fileofs); in = (void *)(mod_base + l->fileofs);
@ -2344,7 +2348,7 @@ continue;
out->flags |= SURF_DRAWSKY; out->flags |= SURF_DRAWSKY;
#ifdef Q3SHADERS #ifdef Q3SHADERS
if (!out->texinfo->texture->shader) if (!out->texinfo->texture->shader && shaders)
{ {
extern cvar_t r_vertexlight; extern cvar_t r_vertexlight;
if (in->facetype == MST_FLARE) if (in->facetype == MST_FLARE)
@ -2370,9 +2374,13 @@ continue;
else if (in->facetype == MST_PATCH) else if (in->facetype == MST_PATCH)
{ {
out->mesh = GL_CreateMeshForPatch(loadmodel, in); out->mesh = GL_CreateMeshForPatch(loadmodel, in);
#ifndef Q3SHADERS
out->polys = GL_MeshToGLPoly(out->mesh); #ifdef Q3SHADERS
out->mesh = NULL; if (!out->texinfo->texture->shader)
{
out->polys = GL_MeshToGLPoly(out->mesh);
out->mesh = NULL;
}
#endif #endif
} }
else if (in->facetype == MST_PLANAR || in->facetype == MST_TRIANGLE_SOUP) else if (in->facetype == MST_PLANAR || in->facetype == MST_TRIANGLE_SOUP)
@ -2419,6 +2427,14 @@ continue;
p = (glpoly_t *)((char *)p + polysize); p = (glpoly_t *)((char *)p + polysize);
} }
#endif #endif
#ifdef Q3SHADERS
if (!out->texinfo->texture->shader)
{
out->polys = GL_MeshToGLPoly(out->mesh);
out->mesh = NULL;
}
#endif
} }
else else
{ {
@ -4428,7 +4444,9 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
int headnode, int brushmask) int headnode, int brushmask)
{ {
int i; int i;
#if ADJ
int moved; int moved;
#endif
vec3_t point; vec3_t point;
@ -4470,6 +4488,21 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
int i, numleafs; int i, numleafs;
vec3_t c1, c2; vec3_t c1, c2;
int topnode; int topnode;
#if ADJ
if (-mins[2] != maxs[2]) //be prepared to move the thing up to counter the different min/max
{
moved = (trace_maxs[2] - trace_mins[2])/2;
trace_mins[2] = -moved;
trace_maxs[2] = moved;
trace_extents[2] = -trace_mins[2] > trace_maxs[2] ? -trace_mins[2] : trace_maxs[2];
moved = (maxs[2] - trace_maxs[2]);
}
trace_start[2]+=moved;
trace_end[2]+=moved;
#endif
VectorAdd (start, mins, c1); VectorAdd (start, mins, c1);
VectorAdd (start, maxs, c2); VectorAdd (start, maxs, c2);
@ -4479,7 +4512,7 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
c2[i] += 1; c2[i] += 1;
} }
numleafs = CM_BoxLeafnums_headnode (c1, c2, leafs, 1024, headnode, &topnode); numleafs = CM_BoxLeafnums_headnode (c1, c2, leafs, sizeof(leafs)/sizeof(leafs[0]), headnode, &topnode);
for (i=0 ; i<numleafs ; i++) for (i=0 ; i<numleafs ; i++)
{ {
CM_TestInLeaf (leafs[i]); CM_TestInLeaf (leafs[i]);
@ -4487,12 +4520,14 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
break; break;
} }
VectorCopy (start, trace_trace.endpos); VectorCopy (start, trace_trace.endpos);
#if ADJ
trace_trace.endpos[2] -= moved;
#endif
return trace_trace; return trace_trace;
} }
#if ADJ
moved = 0; moved = 0;
#endif
// //
// check for point special case // check for point special case
// //
@ -4508,7 +4543,7 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
trace_extents[0] = -trace_mins[0] > trace_maxs[0] ? -trace_mins[0] : trace_maxs[0]; trace_extents[0] = -trace_mins[0] > trace_maxs[0] ? -trace_mins[0] : trace_maxs[0];
trace_extents[1] = -trace_mins[1] > trace_maxs[1] ? -trace_mins[1] : trace_maxs[1]; trace_extents[1] = -trace_mins[1] > trace_maxs[1] ? -trace_mins[1] : trace_maxs[1];
trace_extents[2] = -trace_mins[2] > trace_maxs[2] ? -trace_mins[2] : trace_maxs[2]; trace_extents[2] = -trace_mins[2] > trace_maxs[2] ? -trace_mins[2] : trace_maxs[2];
#if ADJ
if (-mins[2] != maxs[2]) //be prepared to move the thing up to counter the different min/max if (-mins[2] != maxs[2]) //be prepared to move the thing up to counter the different min/max
{ {
moved = (trace_maxs[2] - trace_mins[2])/2; moved = (trace_maxs[2] - trace_mins[2])/2;
@ -4520,6 +4555,7 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
trace_start[2]+=moved; trace_start[2]+=moved;
trace_end[2]+=moved; trace_end[2]+=moved;
#endif
} }
// //
@ -4536,8 +4572,9 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
for (i=0 ; i<3 ; i++) for (i=0 ; i<3 ; i++)
trace_trace.endpos[i] = trace_start[i] + trace_trace.fraction * (trace_end[i] - trace_start[i]); trace_trace.endpos[i] = trace_start[i] + trace_trace.fraction * (trace_end[i] - trace_start[i]);
} }
#if ADJ
trace_trace.endpos[2] -= moved; trace_trace.endpos[2] -= moved;
#endif
return trace_trace; return trace_trace;
} }