[PATCH] qbsp: refactor leak trail printing
Consolidate identical code from MarkLeakTrail and SimplifyLeakLine into a separate function. Signed-off-by: Tyrann <tyrann@disenchant.net>
This commit is contained in:
parent
bdbae95003
commit
bffce8c99b
|
|
@ -116,6 +116,27 @@ WriteLeakNode(node_t *n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
===============
|
||||||
|
PrintLeakTrail
|
||||||
|
===============
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
PrintLeakTrail(vec3_t p1, vec3_t p2)
|
||||||
|
{
|
||||||
|
vec3_t dir;
|
||||||
|
vec_t len;
|
||||||
|
|
||||||
|
VectorSubtract(p1, p1, dir);
|
||||||
|
len = VectorNormalize(dir);
|
||||||
|
|
||||||
|
while (len > options.dxLeakDist) {
|
||||||
|
fprintf(LeakFile, "%f %f %f\n", p1[0], p1[1], p1[2]);
|
||||||
|
VectorMA(p1, options.dxLeakDist, dir, p1);
|
||||||
|
len -= options.dxLeakDist;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
==============
|
==============
|
||||||
MarkLeakTrail
|
MarkLeakTrail
|
||||||
|
|
@ -124,9 +145,8 @@ MarkLeakTrail
|
||||||
static void
|
static void
|
||||||
MarkLeakTrail(portal_t *n2)
|
MarkLeakTrail(portal_t *n2)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i;
|
||||||
vec3_t p1, p2, dir;
|
vec3_t p1, p2;
|
||||||
vec_t len;
|
|
||||||
portal_t *n1;
|
portal_t *n1;
|
||||||
vec_t *v;
|
vec_t *v;
|
||||||
|
|
||||||
|
|
@ -146,7 +166,6 @@ MarkLeakTrail(portal_t *n2)
|
||||||
firstone = false;
|
firstone = false;
|
||||||
v = map.rgEntities[hit_occupied].origin;
|
v = map.rgEntities[hit_occupied].origin;
|
||||||
fprintf(PorFile, "%f %f %f\n", v[0], v[1], v[2]);
|
fprintf(PorFile, "%f %f %f\n", v[0], v[1], v[2]);
|
||||||
|
|
||||||
WriteLeakNode(leakNode);
|
WriteLeakNode(leakNode);
|
||||||
}
|
}
|
||||||
numports++;
|
numports++;
|
||||||
|
|
@ -155,12 +174,9 @@ MarkLeakTrail(portal_t *n2)
|
||||||
fprintf(PorFile, "%f %f %f ", p1[0], p1[1], p1[2]);
|
fprintf(PorFile, "%f %f %f ", p1[0], p1[1], p1[2]);
|
||||||
fprintf(PorFile, "%i ", n2->winding->numpoints);
|
fprintf(PorFile, "%i ", n2->winding->numpoints);
|
||||||
|
|
||||||
j = n2->winding->numpoints - 1;
|
for (i = 0; i < n2->winding->numpoints; i++)
|
||||||
for (i = 0; i < n2->winding->numpoints; i++) {
|
|
||||||
fprintf(PorFile, "%f %f %f ", n2->winding->points[i][0],
|
fprintf(PorFile, "%f %f %f ", n2->winding->points[i][0],
|
||||||
n2->winding->points[i][1],
|
n2->winding->points[i][1], n2->winding->points[i][2]);
|
||||||
n2->winding->points[i][2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf(PorFile, "\n");
|
fprintf(PorFile, "\n");
|
||||||
}
|
}
|
||||||
|
|
@ -169,18 +185,8 @@ MarkLeakTrail(portal_t *n2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
n1 = pLeaks[numleaks - 2];
|
n1 = pLeaks[numleaks - 2];
|
||||||
|
|
||||||
MidpointWinding(n1->winding, p2);
|
MidpointWinding(n1->winding, p2);
|
||||||
VectorSubtract(p2, p1, dir);
|
PrintLeakTrail(p1, p2);
|
||||||
len = VectorLength(dir);
|
|
||||||
VectorNormalize(dir);
|
|
||||||
|
|
||||||
while (len > options.dxLeakDist) {
|
|
||||||
fprintf(LeakFile, "%f %f %f\n", p1[0], p1[1], p1[2]);
|
|
||||||
for (i = 0; i < 3; i++)
|
|
||||||
p1[i] += dir[i] * options.dxLeakDist;
|
|
||||||
len -= options.dxLeakDist;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static vec3_t v1, v2;
|
static vec3_t v1, v2;
|
||||||
|
|
@ -265,10 +271,8 @@ SimplifyLeakline
|
||||||
static void
|
static void
|
||||||
SimplifyLeakline(node_t *headnode)
|
SimplifyLeakline(node_t *headnode)
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j;
|
||||||
portal_t *p1, *p2;
|
portal_t *p1, *p2;
|
||||||
vec3_t dir;
|
|
||||||
vec_t len;
|
|
||||||
|
|
||||||
if (numleaks < 2)
|
if (numleaks < 2)
|
||||||
return;
|
return;
|
||||||
|
|
@ -291,18 +295,8 @@ SimplifyLeakline(node_t *headnode)
|
||||||
}
|
}
|
||||||
|
|
||||||
p2 = pLeaks[j];
|
p2 = pLeaks[j];
|
||||||
|
|
||||||
MidpointWinding(p2->winding, v2);
|
MidpointWinding(p2->winding, v2);
|
||||||
VectorSubtract(v2, v1, dir);
|
PrintLeakTrail(v1, v2);
|
||||||
len = VectorLength(dir);
|
|
||||||
VectorNormalize(dir);
|
|
||||||
|
|
||||||
while (len > options.dxLeakDist) {
|
|
||||||
fprintf(LeakFile, "%f %f %f\n", v1[0], v1[1], v1[2]);
|
|
||||||
for (k = 0; k < 3; k++)
|
|
||||||
v1[k] += dir[k] * options.dxLeakDist;
|
|
||||||
len -= options.dxLeakDist;
|
|
||||||
}
|
|
||||||
|
|
||||||
i = j;
|
i = j;
|
||||||
p1 = pLeaks[i];
|
p1 = pLeaks[i];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue