mirror of
https://github.com/nzp-team/fteqw.git
synced 2025-02-22 03:21:08 +00:00
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:
parent
9721b3c21d
commit
c8438cbc3e
1 changed files with 47 additions and 10 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue