We flood-fill model skins for compat with vanilla glquake. Turns out glquake had a bug that causes it to only floodfill skin 0, rather than all (non-group) skins, and our behaviour was making hexen2 compat noticably worse.

This commit is contained in:
Shpoike 2023-05-27 18:03:33 +01:00
parent e292e1bbfb
commit 603eb89ca2
1 changed files with 3 additions and 2 deletions

View File

@ -3782,7 +3782,7 @@ static void Mod_FloodFillSkin( qbyte *skin, int skinwidth, int skinheight )
int filledcolor = -1; int filledcolor = -1;
int i; int i;
if (dpcompat_nofloodfill.ival) if (dpcompat_nofloodfill.ival || skinwidth > 0x7fffu || skinheight > 0x7fffu)
return; return;
if (filledcolor == -1) if (filledcolor == -1)
@ -3856,7 +3856,8 @@ static void *Q1MDL_LoadSkins_GL (galiasinfo_t *galias, dmdl_t *pq1inmodel, model
saved = (qbyte*)(frames+1); saved = (qbyte*)(frames+1);
frames[0].texels = saved; frames[0].texels = saved;
memcpy(saved, pskintype+1, s); memcpy(saved, pskintype+1, s);
Mod_FloodFillSkin(saved, outskin->skinwidth, outskin->skinheight); if (i == 0) //Vanilla bug: ONLY skin 0 is flood-filled (the vanilla code operates on a cached 'skin' variable that does NOT get updated between skins reflooding skin 0). We still don't like flood fills either. Hexen2 has the same issue.
Mod_FloodFillSkin(saved, outskin->skinwidth, outskin->skinheight);
} }
else else
{ {