mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-24 04:51:41 +00:00
Merge branch 'master' into Glew_Version_For_Real
This commit is contained in:
commit
4ad1e0b4cb
5 changed files with 65 additions and 27 deletions
|
@ -1307,7 +1307,7 @@ void G_PlayerFinishLevel (int player, EFinishLevelType mode, int flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clears the entire inventory and gives back the defaults for starting a game
|
// Clears the entire inventory and gives back the defaults for starting a game
|
||||||
if (flags & CHANGELEVEL_RESETINVENTORY)
|
if ((flags & CHANGELEVEL_RESETINVENTORY) && p->playerstate != PST_DEAD)
|
||||||
{
|
{
|
||||||
p->mo->ClearInventory();
|
p->mo->ClearInventory();
|
||||||
p->mo->GiveDefaultInventory();
|
p->mo->GiveDefaultInventory();
|
||||||
|
|
|
@ -335,7 +335,7 @@ FString M_GetCachePath(bool create)
|
||||||
char pathstr[PATH_MAX];
|
char pathstr[PATH_MAX];
|
||||||
FSRef folder;
|
FSRef folder;
|
||||||
|
|
||||||
if (noErr == FSFindFolder(kLocalDomain, kApplicationSupportFolderType, create ? kCreateFolder : 0, &folder) &&
|
if (noErr == FSFindFolder(kUserDomain, kApplicationSupportFolderType, create ? kCreateFolder : 0, &folder) &&
|
||||||
noErr == FSRefMakePath(&folder, (UInt8*)pathstr, PATH_MAX))
|
noErr == FSRefMakePath(&folder, (UInt8*)pathstr, PATH_MAX))
|
||||||
{
|
{
|
||||||
path = pathstr;
|
path = pathstr;
|
||||||
|
|
|
@ -959,6 +959,7 @@ bool P_LoadGLNodes(MapData * map)
|
||||||
bool P_CheckNodes(MapData * map, bool rebuilt, int buildtime)
|
bool P_CheckNodes(MapData * map, bool rebuilt, int buildtime)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
bool loaded = false;
|
||||||
|
|
||||||
// If the map loading code has performed a node rebuild we don't need to check for it again.
|
// If the map loading code has performed a node rebuild we don't need to check for it again.
|
||||||
if (!rebuilt && !P_CheckForGLNodes())
|
if (!rebuilt && !P_CheckForGLNodes())
|
||||||
|
@ -978,7 +979,8 @@ bool P_CheckNodes(MapData * map, bool rebuilt, int buildtime)
|
||||||
numsegs = 0;
|
numsegs = 0;
|
||||||
|
|
||||||
// Try to load GL nodes (cached or GWA)
|
// Try to load GL nodes (cached or GWA)
|
||||||
if (!P_LoadGLNodes(map))
|
loaded = P_LoadGLNodes(map);
|
||||||
|
if (!loaded)
|
||||||
{
|
{
|
||||||
// none found - we have to build new ones!
|
// none found - we have to build new ones!
|
||||||
unsigned int startTime, endTime;
|
unsigned int startTime, endTime;
|
||||||
|
@ -1006,20 +1008,22 @@ bool P_CheckNodes(MapData * map, bool rebuilt, int buildtime)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!loaded)
|
||||||
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
// Building nodes in debug is much slower so let's cache them only if cachetime is 0
|
// Building nodes in debug is much slower so let's cache them only if cachetime is 0
|
||||||
buildtime = 0;
|
buildtime = 0;
|
||||||
#endif
|
#endif
|
||||||
if (gl_cachenodes && buildtime/1000.f >= gl_cachetime)
|
if (gl_cachenodes && buildtime/1000.f >= gl_cachetime)
|
||||||
{
|
{
|
||||||
DPrintf("Caching nodes\n");
|
DPrintf("Caching nodes\n");
|
||||||
CreateCachedNodes(map);
|
CreateCachedNodes(map);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DPrintf("Not caching nodes (time = %f)\n", buildtime/1000.f);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
DPrintf("Not caching nodes (time = %f)\n", buildtime/1000.f);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (!gamenodes)
|
if (!gamenodes)
|
||||||
{
|
{
|
||||||
|
@ -1168,8 +1172,21 @@ static void CreateCachedNodes(MapData *map)
|
||||||
|
|
||||||
FString path = CreateCacheName(map, true);
|
FString path = CreateCacheName(map, true);
|
||||||
FILE *f = fopen(path, "wb");
|
FILE *f = fopen(path, "wb");
|
||||||
fwrite(compressed, 1, outlen+offset, f);
|
|
||||||
fclose(f);
|
if (f != NULL)
|
||||||
|
{
|
||||||
|
if (fwrite(compressed, outlen+offset, 1, f) != 1)
|
||||||
|
{
|
||||||
|
Printf("Error saving nodes to file %s\n", path.GetChars());
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Printf("Cannot open nodes file %s for writing\n", path.GetChars());
|
||||||
|
}
|
||||||
|
|
||||||
delete [] compressed;
|
delete [] compressed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1246,6 +1246,7 @@ public:
|
||||||
int fadecolor = -1;
|
int fadecolor = -1;
|
||||||
int desaturation = -1;
|
int desaturation = -1;
|
||||||
int fplaneflags = 0, cplaneflags = 0;
|
int fplaneflags = 0, cplaneflags = 0;
|
||||||
|
double fp[4] = { 0 }, cp[4] = { 0 };
|
||||||
|
|
||||||
memset(sec, 0, sizeof(*sec));
|
memset(sec, 0, sizeof(*sec));
|
||||||
sec->lightlevel = 160;
|
sec->lightlevel = 160;
|
||||||
|
@ -1449,44 +1450,42 @@ public:
|
||||||
|
|
||||||
case NAME_floorplane_a:
|
case NAME_floorplane_a:
|
||||||
fplaneflags |= 1;
|
fplaneflags |= 1;
|
||||||
sec->floorplane.a = CheckFixed(key);
|
fp[0] = CheckFloat(key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NAME_floorplane_b:
|
case NAME_floorplane_b:
|
||||||
fplaneflags |= 2;
|
fplaneflags |= 2;
|
||||||
sec->floorplane.b = CheckFixed(key);
|
fp[1] = CheckFloat(key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NAME_floorplane_c:
|
case NAME_floorplane_c:
|
||||||
fplaneflags |= 4;
|
fplaneflags |= 4;
|
||||||
sec->floorplane.c = CheckFixed(key);
|
fp[2] = CheckFloat(key);
|
||||||
sec->floorplane.ic = FixedDiv(FRACUNIT, sec->floorplane.c);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NAME_floorplane_d:
|
case NAME_floorplane_d:
|
||||||
fplaneflags |= 8;
|
fplaneflags |= 8;
|
||||||
sec->floorplane.d = CheckFixed(key);
|
fp[3] = CheckFloat(key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NAME_ceilingplane_a:
|
case NAME_ceilingplane_a:
|
||||||
cplaneflags |= 1;
|
cplaneflags |= 1;
|
||||||
sec->ceilingplane.a = CheckFixed(key);
|
cp[0] = CheckFloat(key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NAME_ceilingplane_b:
|
case NAME_ceilingplane_b:
|
||||||
cplaneflags |= 2;
|
cplaneflags |= 2;
|
||||||
sec->ceilingplane.b = CheckFixed(key);
|
cp[1] = CheckFloat(key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NAME_ceilingplane_c:
|
case NAME_ceilingplane_c:
|
||||||
cplaneflags |= 4;
|
cplaneflags |= 4;
|
||||||
sec->ceilingplane.c = CheckFixed(key);
|
cp[2] = CheckFloat(key);
|
||||||
sec->ceilingplane.ic = FixedDiv(FRACUNIT, sec->ceilingplane.c);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NAME_ceilingplane_d:
|
case NAME_ceilingplane_d:
|
||||||
cplaneflags |= 8;
|
cplaneflags |= 8;
|
||||||
sec->ceilingplane.d = CheckFixed(key);
|
cp[3] = CheckFloat(key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1509,6 +1508,17 @@ public:
|
||||||
sec->floorplane.c = FRACUNIT;
|
sec->floorplane.c = FRACUNIT;
|
||||||
sec->floorplane.ic = FRACUNIT;
|
sec->floorplane.ic = FRACUNIT;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double ulen = TVector3<double>(fp[0], fp[1], fp[2]).Length();
|
||||||
|
|
||||||
|
// normalize the vector, it must have a length of 1
|
||||||
|
sec->floorplane.a = FLOAT2FIXED(fp[0] / ulen);
|
||||||
|
sec->floorplane.b = FLOAT2FIXED(fp[1] / ulen);
|
||||||
|
sec->floorplane.c = FLOAT2FIXED(fp[2] / ulen);
|
||||||
|
sec->floorplane.d = FLOAT2FIXED(fp[3] / ulen);
|
||||||
|
sec->floorplane.ic = FLOAT2FIXED(ulen / fp[2]);
|
||||||
|
}
|
||||||
if (cplaneflags != 15)
|
if (cplaneflags != 15)
|
||||||
{
|
{
|
||||||
sec->ceilingplane.a = sec->ceilingplane.b = 0;
|
sec->ceilingplane.a = sec->ceilingplane.b = 0;
|
||||||
|
@ -1516,6 +1526,17 @@ public:
|
||||||
sec->ceilingplane.c = -FRACUNIT;
|
sec->ceilingplane.c = -FRACUNIT;
|
||||||
sec->ceilingplane.ic = -FRACUNIT;
|
sec->ceilingplane.ic = -FRACUNIT;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double ulen = TVector3<double>(cp[0], cp[1], cp[2]).Length();
|
||||||
|
|
||||||
|
// normalize the vector, it must have a length of 1
|
||||||
|
sec->floorplane.a = FLOAT2FIXED(cp[0] / ulen);
|
||||||
|
sec->floorplane.b = FLOAT2FIXED(cp[1] / ulen);
|
||||||
|
sec->floorplane.c = FLOAT2FIXED(cp[2] / ulen);
|
||||||
|
sec->floorplane.d = FLOAT2FIXED(cp[3] / ulen);
|
||||||
|
sec->floorplane.ic = FLOAT2FIXED(ulen / cp[2]);
|
||||||
|
}
|
||||||
|
|
||||||
if (lightcolor == -1 && fadecolor == -1 && desaturation == -1)
|
if (lightcolor == -1 && fadecolor == -1 && desaturation == -1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1324,7 +1324,7 @@ flickerlight2 BCANDLE
|
||||||
|
|
||||||
object ZBlueCandle
|
object ZBlueCandle
|
||||||
{
|
{
|
||||||
frame CAND { light BCANDLE }
|
frame BCAN { light BCANDLE }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Small flame
|
// Small flame
|
||||||
|
|
Loading…
Reference in a new issue