]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - sv_light.c
major speed gain in cavetest2 by checking if the portal is facing the wrong way
[xonotic/darkplaces.git] / sv_light.c
index 87d15fa61870fd5dcc37e99d7b4f327b71b8e6bc..41b4475f730824758e119638012c62aa67f449e0 100644 (file)
@@ -8,7 +8,7 @@ of the License, or (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 See the GNU General Public License for more details.
 
@@ -17,7 +17,6 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 */
-// r_light.c
 
 #include "quakedef.h"
 
@@ -47,11 +46,6 @@ loc0:
                        goto loc0;
                }
                // found an intersection
-//             mid = startz + (endz - startz) * (startz - node->plane->dist) / (startz - endz);
-//             mid = startz + distz * (startz - node->plane->dist) / (-distz);
-//             mid = startz + (-(startz - node->plane->dist));
-//             mid = startz - (startz - node->plane->dist);
-//             mid = startz + node->plane->dist - startz;
                mid = node->plane->dist;
                break;
        default:
@@ -65,8 +59,6 @@ loc0:
                        goto loc0;
                }
                // found an intersection
-//             mid = startz + (endz - startz) * ((front - node->plane->dist) / ((front - node->plane->dist) - (back - node->plane->dist)));
-//             mid = startz + (endz - startz) * ((front - node->plane->dist) / (front - back));
                mid = startz + distz * (front - node->plane->dist) / (front - back);
                break;
        }
@@ -85,8 +77,8 @@ loc0:
                        surf = sv.worldmodel->surfaces + node->firstsurface;
                        for (i = 0;i < node->numsurfaces;i++, surf++)
                        {
-                               if (surf->flags & SURF_DRAWTILED)
-                                       continue;       // no lightmaps
+                               if (!(surf->flags & SURF_LIGHTMAP))
+                                       continue;
 
                                ds = (int) (x * surf->texinfo->vecs[0][0] + y * surf->texinfo->vecs[0][1] + mid * surf->texinfo->vecs[0][2] + surf->texinfo->vecs[0][3]);
                                dt = (int) (x * surf->texinfo->vecs[1][0] + y * surf->texinfo->vecs[1][1] + mid * surf->texinfo->vecs[1][2] + surf->texinfo->vecs[1][3]);
@@ -102,7 +94,7 @@ loc0:
 
                                if (surf->samples)
                                {
-                                       byte *lightmap;
+                                       qbyte *lightmap;
                                        int maps, line3, size3, dsfrac = ds & 15, dtfrac = dt & 15, scale = 0, r00 = 0, g00 = 0, b00 = 0, r01 = 0, g01 = 0, b01 = 0, r10 = 0, g10 = 0, b10 = 0, r11 = 0, g11 = 0, b11 = 0;
                                        line3 = ((surf->extents[0]>>4)+1)*3;
                                        size3 = ((surf->extents[0]>>4)+1) * ((surf->extents[1]>>4)+1)*3; // LordHavoc: *3 for colored lighting
@@ -132,19 +124,20 @@ loc0:
                startz = mid;
                distz = endz - startz;
                goto loc0;
-//             return RecursiveLightPoint (color, node->children[side ^ 1], x, y, mid, endz);
        }
 }
 
 // LordHavoc: added light checking to the server
 void SV_LightPoint (vec3_t color, vec3_t p)
 {
+       Mod_CheckLoaded(sv.worldmodel);
        if (!sv.worldmodel->lightdata)
        {
                color[0] = color[1] = color[2] = 255;
                return;
        }
-       
+
        color[0] = color[1] = color[2] = 0;
        SV_RecursiveLightPoint (color, sv.worldmodel->nodes, p[0], p[1], p[2], p[2] - 65536);
 }
+