updated .lit loader, forgot to commit this a while back

This commit is contained in:
Forest Hale 2000-12-07 08:59:56 +00:00
parent 3feecbde94
commit be6e940417

View file

@ -66,34 +66,45 @@ Mod_LoadLighting
*/ */
void Mod_LoadLighting (lump_t *l) void Mod_LoadLighting (lump_t *l)
{ {
int i; int i;
byte *in, *out; byte *in, *out, *data;
byte d; byte d;
char litfilename[1024]; char litfilename[1024];
loadmodel->lightdata = NULL;
if (!l->filelen) // LordHavoc: check for a .lit file to load
{
loadmodel->lightdata = NULL;
return;
}
strcpy(litfilename, loadmodel->name); strcpy(litfilename, loadmodel->name);
COM_StripExtension(litfilename, litfilename); COM_StripExtension(litfilename, litfilename);
strncat (litfilename, ".lit", sizeof(litfilename) - strlen (litfilename)); strncat (litfilename, ".lit", sizeof(litfilename) - strlen (litfilename));
data = (byte*) COM_LoadHunkFile (litfilename);
loadmodel->lightdata = (byte*) COM_LoadHunkFile (litfilename); if (data)
if (!loadmodel->lightdata) // expand the white lighting data
{ {
loadmodel->lightdata = Hunk_AllocName ( l->filelen*3, litfilename); if (data[0] == 'Q' && data[1] == 'L' && data[2] == 'I' && data[3] == 'T')
in = loadmodel->lightdata + l->filelen*2; // place the file at the end, so it will not be overwritten until the very last write
out = loadmodel->lightdata;
memcpy (in, mod_base + l->fileofs, l->filelen);
for (i = 0;i < l->filelen;i++)
{ {
d = *in++; i = LittleLong(((int *)data)[1]);
*out++ = d; if (i == 1)
*out++ = d; {
*out++ = d; Con_DPrintf("%s loaded", litfilename);
loadmodel->lightdata = data + 8;
return;
}
else
Con_Printf("Unknown .lit file version (%d)\n", i);
} }
else
Con_Printf("Corrupt .lit file (old version?), ignoring\n");
}
// LordHavoc: oh well, expand the white lighting data
if (!l->filelen)
return;
loadmodel->lightdata = Hunk_AllocName ( l->filelen*3, litfilename);
in = loadmodel->lightdata + l->filelen*2; // place the file at the end, so it will not be overwritten until the very last write
out = loadmodel->lightdata;
memcpy (in, mod_base + l->fileofs, l->filelen);
for (i = 0;i < l->filelen;i++)
{
d = *in++;
*out++ = d;
*out++ = d;
*out++ = d;
} }
} }