- CPortals portals;
- strcpy(portals.fn, filename);
- portals.Load();
-
- if(portals.node_count == 0)
- return FALSE;
-
- ClearBrushes();
- ClearEPairs();
-
- bool build = false;
- for(unsigned int i = 0; i < portals.node_count; i++)
- {
- build = false;
- DBrush* brush = NewBrush();
-
- for(unsigned int j = 0; j < portals.node[i].portal_count; j++)
- {
- for(unsigned int k = 0; k < portals.node[i].portal[j].point_count-2; k++)
- {
- vec3_t v1, v2, normal, n;
- VectorSubtract(portals.node[i].portal[j].point[k+2].p, portals.node[i].portal[j].point[k+1].p, v1);
- VectorSubtract(portals.node[i].portal[j].point[k].p, portals.node[i].portal[j].point[k+1].p, v2);
- CrossProduct(v1, v2, n);
- VectorNormalize(n, v2);
-
- if(k == 0)
- {
- VectorCopy(v2, normal);
+ CPortals portals;
+ strcpy(portals.fn, filename);
+ portals.Load();
+
+ if (portals.node_count == 0) {
+ return false;
+ }
+
+ ClearBrushes();
+ ClearEPairs();
+
+ bool build = false;
+ for (unsigned int i = 0; i < portals.node_count; i++) {
+ build = false;
+ DBrush *brush = NewBrush();
+
+ for (unsigned int j = 0; j < portals.node[i].portal_count; j++) {
+ for (unsigned int k = 0; k < portals.node[i].portal[j].point_count - 2; k++) {
+ vec3_t v1, v2, normal, n;
+ VectorSubtract(portals.node[i].portal[j].point[k + 2].p, portals.node[i].portal[j].point[k + 1].p, v1);
+ VectorSubtract(portals.node[i].portal[j].point[k].p, portals.node[i].portal[j].point[k + 1].p, v2);
+ CrossProduct(v1, v2, n);
+ VectorNormalize(n, v2);
+
+ if (k == 0) {
+ VectorCopy(v2, normal);
+ } else {
+ VectorSubtract(v2, normal, v1);
+ if (VectorLength(v1) > 0.01) {
+ build = true;
+ break;
+ }
+ }
+ }
+
+ if (!build) {
+ brush->AddFace(portals.node[i].portal[j].point[2].p, portals.node[i].portal[j].point[1].p,
+ portals.node[i].portal[j].point[0].p, "textures/common/caulk", false);
+ } else {
+ brush->AddFace(portals.node[i].portal[j].point[0].p, portals.node[i].portal[j].point[1].p,
+ portals.node[i].portal[j].point[2].p, "textures/common/caulk", false);
+ }