- memset(surf->stainsamples, 255, ssize * tsize * 3);
- }
- }
-
- // TODO: split up into multiple meshes as needed to avoid exceeding 65536
- // vertex limit
- loadmodel->nummeshes = 1;
- loadmodel->meshlist = Mem_Alloc(loadmodel->mempool, sizeof(surfmesh_t *));
- loadmodel->meshlist[0] = Mod_AllocSurfMesh(loadmodel->mempool, totalverts, totaltris, 0, 0, true, true, false);
-
- for (surfnum = 0, surf = loadmodel->brushq1.surfaces, totalverts = 0, totaltris = 0, totalmeshes = 0;surfnum < count;surfnum++, totalverts += surf->poly_numverts, totaltris += surf->poly_numverts - 2, totalmeshes++, surf++)
- {
- mesh = &surf->mesh;
- mesh->num_vertices = surf->poly_numverts;
- mesh->num_triangles = surf->poly_numverts - 2;
- mesh->data_vertex3f = loadmodel->meshlist[0]->data_vertex3f + totalverts * 3;
- mesh->data_texcoordtexture2f = loadmodel->meshlist[0]->data_texcoordtexture2f + totalverts * 2;
- mesh->data_texcoordlightmap2f = loadmodel->meshlist[0]->data_texcoordlightmap2f + totalverts * 2;
- mesh->data_texcoorddetail2f = loadmodel->meshlist[0]->data_texcoorddetail2f + totalverts * 2;
- mesh->data_svector3f = loadmodel->meshlist[0]->data_svector3f + totalverts * 3;
- mesh->data_tvector3f = loadmodel->meshlist[0]->data_tvector3f + totalverts * 3;
- mesh->data_normal3f = loadmodel->meshlist[0]->data_normal3f + totalverts * 3;
- mesh->data_lightmapoffsets = loadmodel->meshlist[0]->data_lightmapoffsets + totalverts;
- mesh->data_element3i = loadmodel->meshlist[0]->data_element3i + totaltris * 3;
- mesh->data_neighbor3i = loadmodel->meshlist[0]->data_neighbor3i + totaltris * 3;
-
- surf->lightmaptexturestride = 0;
- surf->lightmaptexture = NULL;
-
- for (i = 0;i < mesh->num_vertices;i++)
- {
- mesh->data_vertex3f[i * 3 + 0] = surf->poly_verts[i * 3 + 0];
- mesh->data_vertex3f[i * 3 + 1] = surf->poly_verts[i * 3 + 1];
- mesh->data_vertex3f[i * 3 + 2] = surf->poly_verts[i * 3 + 2];
- s = DotProduct((mesh->data_vertex3f + i * 3), surf->texinfo->vecs[0]) + surf->texinfo->vecs[0][3];
- t = DotProduct((mesh->data_vertex3f + i * 3), surf->texinfo->vecs[1]) + surf->texinfo->vecs[1][3];
- mesh->data_texcoordtexture2f[i * 2 + 0] = s / surf->texinfo->texture->width;
- mesh->data_texcoordtexture2f[i * 2 + 1] = t / surf->texinfo->texture->height;
- mesh->data_texcoorddetail2f[i * 2 + 0] = s * (1.0f / 16.0f);
- mesh->data_texcoorddetail2f[i * 2 + 1] = t * (1.0f / 16.0f);
- mesh->data_texcoordlightmap2f[i * 2 + 0] = 0;
- mesh->data_texcoordlightmap2f[i * 2 + 1] = 0;
- mesh->data_lightmapoffsets[i] = 0;
- }
-
- for (i = 0;i < mesh->num_triangles;i++)
- {
- mesh->data_element3i[i * 3 + 0] = 0;
- mesh->data_element3i[i * 3 + 1] = i + 1;
- mesh->data_element3i[i * 3 + 2] = i + 2;