]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - portals.c
enabled portals on q3bsp for a small (occasionally huge) fps increase
[xonotic/darkplaces.git] / portals.c
index 89eac5171e40047b2306c1a857b4cf23fb6b2536..4f62b17e34d9ef72fe648f4091dc6d837b30ad01 100644 (file)
--- a/portals.c
+++ b/portals.c
@@ -187,7 +187,7 @@ int Portal_CheckPolygon(model_t *model, vec3_t eye, float *polypoints, int numpo
        vec3_t center, v1, v2;
 
        // if there is no model, it can not block visibility
-       if (model == NULL || !model->brushq1.PointInLeaf)
+       if (model == NULL || !model->brush.PointInLeaf)
                return true;
 
        portal_markid++;
@@ -195,7 +195,7 @@ int Portal_CheckPolygon(model_t *model, vec3_t eye, float *polypoints, int numpo
        Mod_CheckLoaded(model);
        Portal_PolygonRecursiveMarkLeafs(model->brush.data_nodes, polypoints, numpoints);
 
-       eyeleaf = model->brushq1.PointInLeaf(model, eye);
+       eyeleaf = model->brush.PointInLeaf(model, eye);
 
        // find the center by averaging
        VectorClear(center);
@@ -345,11 +345,11 @@ void Portal_RecursiveFlow_ExactLeafFaces(portalrecursioninfo_t *info, int *mark,
                {
                        // FIXME?  this assumes q1bsp polygon surfaces
                        surface = info->model->brush.data_surfaces + *mark;
-                       for (j = 0, elements = surface->mesh.data_element3i;j < surface->mesh.num_triangles;j++, elements += 3)
+                       for (j = 0, elements = (surface->groupmesh->data_element3i + 3 * surface->num_firsttriangle);j < surface->num_triangles;j++, elements += 3)
                        {
-                               VectorCopy((surface->mesh.data_vertex3f + elements[0] * 3), trianglepoints[0]);
-                               VectorCopy((surface->mesh.data_vertex3f + elements[1] * 3), trianglepoints[1]);
-                               VectorCopy((surface->mesh.data_vertex3f + elements[2] * 3), trianglepoints[2]);
+                               VectorCopy((surface->groupmesh->data_vertex3f + elements[0] * 3), trianglepoints[0]);
+                               VectorCopy((surface->groupmesh->data_vertex3f + elements[1] * 3), trianglepoints[1]);
+                               VectorCopy((surface->groupmesh->data_vertex3f + elements[2] * 3), trianglepoints[2]);
                                if (PointInfrontOfTriangle(info->eye, trianglepoints[0], trianglepoints[1], trianglepoints[2]))
                                {
                                        trimins[0] = min(trianglepoints[0][0], min(trianglepoints[1][0], trianglepoints[2][0]));
@@ -363,7 +363,7 @@ void Portal_RecursiveFlow_ExactLeafFaces(portalrecursioninfo_t *info, int *mark,
                                                        break;
                                }
                        }
-                       if (j == surface->mesh.num_triangles)
+                       if (j == surface->num_triangles)
                                continue;
                        info->surfacemark[*mark] = true;
                }