vec3_t center, v1, v2;
// if there is no model, it can not block visibility
- if (model == NULL)
+ if (model == NULL || !model->brushq1.PointInLeaf)
return true;
portal_markid++;
{
// 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]));
break;
}
}
- if (j == surface->mesh.num_triangles)
+ if (j == surface->num_triangles)
continue;
info->surfacemark[*mark] = true;
}