]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
prefer INTERNAL lightmaps
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 27 Sep 2008 09:17:19 +0000 (09:17 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Sat, 27 Sep 2008 09:17:19 +0000 (09:17 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8511 d7cf8633-e32d-0410-b094-e92efae38249

model_brush.c

index 024f2a85c8c33219a6cb6ec40dcd91a0410af750..1868c7d6726667cd11acccb89cf43fc3a2486cdc 100644 (file)
@@ -4477,10 +4477,29 @@ static void Mod_Q3BSP_LoadLightmaps(lump_t *l, lump_t *faceslump)
        if (cls.state == ca_dedicated)
                return;
 
-       FS_StripExtension(loadmodel->name, mapname, sizeof(mapname));
-       inpixels[0] = loadimagepixelsbgra(va("%s/lm_%04d", mapname, 0), false, false);
-       if(inpixels[0])
+       if(l->filelen)
        {
+               // prefer internal LMs for compatibility (a BSP contains no info on whether external LMs exist)
+               if (developer_loading.integer)
+                       Con_Printf("Using internal lightmaps\n");
+               input_pointer = (q3dlightmap_t *)(mod_base + l->fileofs);
+               if (l->filelen % sizeof(*input_pointer))
+                       Host_Error("Mod_Q3BSP_LoadLightmaps: funny lump size in %s",loadmodel->name);
+               count = l->filelen / sizeof(*input_pointer);
+               for(i = 0; i < count; ++i)
+                       inpixels[i] = input_pointer[i].rgb;
+       }
+       else
+       {
+               // no internal lightmaps
+               // try external lightmaps
+               if (developer_loading.integer)
+                       Con_Printf("Using external lightmaps\n");
+               FS_StripExtension(loadmodel->name, mapname, sizeof(mapname));
+               inpixels[0] = loadimagepixelsbgra(va("%s/lm_%04d", mapname, 0), false, false);
+               if(!inpixels[0])
+                       return;
+
                // using EXTERNAL lightmaps instead
                if(image_width != (int) CeilPowerOf2(image_width) || image_width != image_height)
                {
@@ -4508,19 +4527,6 @@ static void Mod_Q3BSP_LoadLightmaps(lump_t *l, lump_t *faceslump)
                        }
                }
        }
-       else
-       {
-               if (!l->filelen)
-               {
-                       return;
-               }
-               input_pointer = (q3dlightmap_t *)(mod_base + l->fileofs);
-               if (l->filelen % sizeof(*input_pointer))
-                       Host_Error("Mod_Q3BSP_LoadLightmaps: funny lump size in %s",loadmodel->name);
-               count = l->filelen / sizeof(*input_pointer);
-               for(i = 0; i < count; ++i)
-                       inpixels[i] = input_pointer[i].rgb;
-       }
 
        convertedpixels = Mem_Alloc(tempmempool, size*size*4); // TODO free this
        loadmodel->brushq3.lightmapsize = size;