From 93f73ed26d437d36be6b6c84ad29595bc2384d81 Mon Sep 17 00:00:00 2001
From: divverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Date: Sat, 27 Sep 2008 09:17:19 +0000
Subject: [PATCH] prefer INTERNAL lightmaps

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8511 d7cf8633-e32d-0410-b094-e92efae38249
---
 model_brush.c | 38 ++++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 16 deletions(-)

diff --git a/model_brush.c b/model_brush.c
index 024f2a85..1868c7d6 100644
--- a/model_brush.c
+++ b/model_brush.c
@@ -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;
-- 
2.39.5