fix tjunc using w instead of output_vertices

This commit is contained in:
Jonathan 2022-07-11 02:43:37 -04:00
parent 1aa2a9b250
commit 1e84284977
1 changed files with 11 additions and 13 deletions

View File

@ -137,7 +137,7 @@ inline void FaceFromSuperverts(node_t *node, face_t *f, size_t base, const std::
}
// copy the vertexes back to the face
f->w.resize(remaining);
f->output_vertices.resize(remaining);
for (size_t i = 0; i < remaining; i++) {
f->output_vertices[i] = superface[(i + base) % superface.size()];
@ -160,12 +160,12 @@ static void FixFaceEdges (node_t *node, face_t *f)
//if (f->merged || f->split[0] || f->split[1])
// return;
for (size_t i = 0; i < f->w.size(); i++) {
auto &p1 = f->w[i];
auto &p2 = f->w[(i + 1) % f->w.size()];
for (size_t i = 0; i < f->output_vertices.size(); i++) {
auto v1 = f->output_vertices[i];
auto v2 = f->output_vertices[(i + 1) % f->output_vertices.size()];
qvec3d edge_start = p1;
qvec3d e2 = p2;
qvec3d edge_start = map.bsp.dvertexes[v1];
qvec3d e2 = map.bsp.dvertexes[v2];
FindEdgeVerts (edge_start, e2, edge_verts);
@ -173,14 +173,14 @@ static void FixFaceEdges (node_t *node, face_t *f)
qvec3d edge_dir = qv::normalize(e2 - edge_start, len);
start.push_back(superface.size());
TestEdge(0, len, f->output_vertices[i], f->output_vertices[(i + 1) % f->w.size()], 0, edge_verts, edge_start, edge_dir, superface);
TestEdge(0, len, v1, v2, 0, edge_verts, edge_start, edge_dir, superface);
count.push_back(superface.size() - start[i]);
}
if (superface.size() < 3) {
// entire face collapsed
f->w.clear();
f->output_vertices.clear();
c_facecollapse++;
return;
}
@ -190,15 +190,15 @@ static void FixFaceEdges (node_t *node, face_t *f)
// especially underwater
size_t i = 0;
for (; i < f->w.size(); i++) {
if (count[i] == 1 && count[(i + f->w.size() - 1) % f->w.size()] == 1) {
for (; i < f->output_vertices.size(); i++) {
if (count[i] == 1 && count[(i + f->output_vertices.size() - 1) % f->output_vertices.size()] == 1) {
break;
}
}
size_t base;
if (i == f->w.size()) {
if (i == f->output_vertices.size()) {
c_badstartverts++;
base = 0;
} else {
@ -239,8 +239,6 @@ tjunc
*/
void TJunc(node_t *headnode)
{
// fixme-brushbsp: restore
return;
logging::print(logging::flag::PROGRESS, "---- {} ----\n", __func__);
// break edges on tjunctions