- int i;
- glpoly_t *p;
- float wvert[64*6], *wv, *v;
- // check for lightmap modification
- if (r_dynamic.value)
- {
- if (r_ambient.value != s->cached_ambient || lighthalf != s->cached_lighthalf
- || (s->styles[0] != 255 && d_lightstylevalue[s->styles[0]] != s->cached_light[0])
- || (s->styles[1] != 255 && d_lightstylevalue[s->styles[1]] != s->cached_light[1])
- || (s->styles[2] != 255 && d_lightstylevalue[s->styles[2]] != s->cached_light[2])
- || (s->styles[3] != 255 && d_lightstylevalue[s->styles[3]] != s->cached_light[3]))
- R_UpdateLightmap(s, s->lightmaptexturenum);
- }
- wv = wvert;
- for (p = s->polys;p;p = p->next)
- {
- for (i = 0, v = p->verts[0];i < p->numverts;i++, v += VERTEXSIZE)
- {
- if (transform)
- softwaretransform(v, wv);
- else
- VectorCopy(v, wv);
- wv[3] = wv[4] = wv[5] = 0.0f;
- wv += 6;
- }
- }
- if (s->dlightframe == r_dlightframecount && r_dynamic.value)
- R_LightSurface(s->dlightbits, s->polys, wvert);
- wv = wvert;
- for (p = s->polys;p;p = p->next)
- {
- if (currentwallpoly >= MAX_WALLPOLYS)
- break;
- v = p->verts[0];
- wallpoly[currentwallpoly].texnum = (unsigned short) t->gl_texturenum;
- wallpoly[currentwallpoly].lighttexnum = (unsigned short) lightmap_textures + s->lightmaptexturenum;
- wallpoly[currentwallpoly].glowtexnum = (unsigned short) t->gl_glowtexturenum;
- wallpoly[currentwallpoly].firstvert = currentwallvert;
- wallpoly[currentwallpoly].numverts = p->numverts;
- wallpoly[currentwallpoly++].lit = true;
- for (i = 0;i<p->numverts;i++, v += VERTEXSIZE)
- {
- if (lighthalf)
- {
- wallvert[currentwallvert].r = (byte) (bound(0, (int) wv[3] >> 1, 255));
- wallvert[currentwallvert].g = (byte) (bound(0, (int) wv[4] >> 1, 255));
- wallvert[currentwallvert].b = (byte) (bound(0, (int) wv[5] >> 1, 255));
- wallvert[currentwallvert].a = 255;
- }
- else
- {
- wallvert[currentwallvert].r = (byte) (bound(0, (int) wv[3], 255));
- wallvert[currentwallvert].g = (byte) (bound(0, (int) wv[4], 255));
- wallvert[currentwallvert].b = (byte) (bound(0, (int) wv[5], 255));
- wallvert[currentwallvert].a = 255;
- }
- wallvert[currentwallvert].vert[0] = wv[0];
- wallvert[currentwallvert].vert[1] = wv[1];
- wallvert[currentwallvert].vert[2] = wv[2];
- wallvert[currentwallvert].s = v[3];
- wallvert[currentwallvert].t = v[4];
- wallvert[currentwallvert].u = v[5];
- wallvert[currentwallvert++].v = v[6];
- wv += 6;
- }