-static void Mod_Q1BSP_BuildLightmapUpdateChains(mempool_t *mempool, model_t *model)
-{
- int i, j, stylecounts[256], totalcount, remapstyles[256];
- msurface_t *surface;
- memset(stylecounts, 0, sizeof(stylecounts));
- for (i = 0;i < model->nummodelsurfaces;i++)
- {
- surface = model->data_surfaces + model->firstmodelsurface + i;
- for (j = 0;j < MAXLIGHTMAPS;j++)
- stylecounts[surface->lightmapinfo->styles[j]]++;
- }
- totalcount = 0;
- model->brushq1.light_styles = 0;
- for (i = 0;i < 255;i++)
- {
- if (stylecounts[i])
- {
- remapstyles[i] = model->brushq1.light_styles++;
- totalcount += stylecounts[i] + 1;
- }
- }
- if (!totalcount)
- return;
- model->brushq1.light_style = (unsigned char *)Mem_Alloc(mempool, model->brushq1.light_styles * sizeof(unsigned char));
- model->brushq1.light_stylevalue = (int *)Mem_Alloc(mempool, model->brushq1.light_styles * sizeof(int));
- model->brushq1.light_styleupdatechains = (msurface_t ***)Mem_Alloc(mempool, model->brushq1.light_styles * sizeof(msurface_t **));
- model->brushq1.light_styleupdatechainsbuffer = (msurface_t **)Mem_Alloc(mempool, totalcount * sizeof(msurface_t *));
- model->brushq1.light_styles = 0;
- for (i = 0;i < 255;i++)
- if (stylecounts[i])
- model->brushq1.light_style[model->brushq1.light_styles++] = i;
- j = 0;
- for (i = 0;i < model->brushq1.light_styles;i++)
- {
- model->brushq1.light_styleupdatechains[i] = model->brushq1.light_styleupdatechainsbuffer + j;
- j += stylecounts[model->brushq1.light_style[i]] + 1;
- }
- for (i = 0;i < model->nummodelsurfaces;i++)
- {
- surface = model->data_surfaces + model->firstmodelsurface + i;
- for (j = 0;j < MAXLIGHTMAPS;j++)
- if (surface->lightmapinfo->styles[j] != 255)
- *model->brushq1.light_styleupdatechains[remapstyles[surface->lightmapinfo->styles[j]]]++ = surface;
- }
- j = 0;
- for (i = 0;i < model->brushq1.light_styles;i++)
- {
- *model->brushq1.light_styleupdatechains[i] = NULL;
- model->brushq1.light_styleupdatechains[i] = model->brushq1.light_styleupdatechainsbuffer + j;
- j += stylecounts[model->brushq1.light_style[i]] + 1;
- }
-}
-