Merge remote-tracking branch 'origin/master' into asmjit

This commit is contained in:
Magnus Norddahl 2018-10-12 05:38:33 +02:00
commit c099b2d3c8
7 changed files with 110 additions and 28 deletions

View file

@ -16,7 +16,7 @@ matrix:
- CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Debug -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9"
- os: osx
osx_image: xcode9.4
osx_image: xcode10
env:
- CMAKE_OPTIONS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9"

View file

@ -523,18 +523,21 @@ bool EV_SilentLineTeleport (line_t *line, int side, AActor *thing, int id, INTBO
// Is this really still necessary with real math instead of imprecise trig tables?
#if 1
const double fudgeamount = 1. / 65536.;
int side = reverse || (player && stepdown);
int fudge = FUDGEFACTOR;
double dx = line->Delta().X;
double dy = line->Delta().Y;
// Make sure we are on correct side of exit linedef.
while (P_PointOnLineSidePrecise(p, l) != side && --fudge >= 0)
{
if (fabs(dx) > fabs(dy))
p.Y -= (dx < 0) != side ? -1 : 1;
p.Y -= (dx < 0) != side ? -fudgeamount : fudgeamount;
else
p.X += (dy < 0) != side ? -1 : 1;
p.X += (dy < 0) != side ? -fudgeamount : fudgeamount;
}
#endif

View file

@ -363,7 +363,10 @@ void FMD3Model::RenderFrame(FModelRenderer *renderer, FTexture * skin, int frame
surfaceSkin = TexMan(surf->skins[0]);
}
if (!surfaceSkin) return;
if (!surfaceSkin)
{
continue;
}
}
renderer->SetMaterial(surfaceSkin, false, translation);

View file

@ -48,16 +48,16 @@ const char *GetVersionString();
#ifdef GIT_DESCRIPTION
#define VERSIONSTR GIT_DESCRIPTION
#else
#define VERSIONSTR "3.6pre"
#define VERSIONSTR "3.7pre"
#endif
// The version as seen in the Windows resource
#define RC_FILEVERSION 3,5,9999,0
#define RC_PRODUCTVERSION 3,5,9999,0
#define RC_FILEVERSION 3,6,9999,0
#define RC_PRODUCTVERSION 3,6,9999,0
#define RC_PRODUCTVERSION2 VERSIONSTR
// These are for content versioning.
#define VER_MAJOR 3
#define VER_MINOR 6
#define VER_MINOR 7
#define VER_REVISION 0
// Version identifier for network games.

View file

@ -451,7 +451,7 @@ vec3 AmbientOcclusionColor()
//
if (uFogEnabled == -1)
{
fogdist = pixelpos.w;
fogdist = max(16.0, pixelpos.w);
}
else
{
@ -489,7 +489,7 @@ void main()
{
if (uFogEnabled == 1 || uFogEnabled == -1)
{
fogdist = pixelpos.w;
fogdist = max(16.0, pixelpos.w);
}
else
{

View file

@ -179,26 +179,29 @@ class ThrustFloor : Actor
while (it.Next())
{
let targ = it.thing;
double blockdist = radius + it.thing.radius;
if (abs(targ.pos.x - it.Position.X) >= blockdist || abs(targ.pos.y - it.Position.Y) >= blockdist)
continue;
// Q: Make this z-aware for everything? It never was before.
if (targ.pos.z + targ.height < pos.z || targ.pos.z > pos.z + height)
if (targ != null)
{
if (CurSector.PortalGroup != targ.CurSector.PortalGroup)
double blockdist = radius + targ.radius;
if (abs(targ.pos.x - it.Position.X) >= blockdist || abs(targ.pos.y - it.Position.Y) >= blockdist)
continue;
// Q: Make this z-aware for everything? It never was before.
if (targ.pos.z + targ.height < pos.z || targ.pos.z > pos.z + height)
{
if (CurSector.PortalGroup != targ.CurSector.PortalGroup)
continue;
}
if (!targ.bShootable)
continue;
if (targ == self)
continue; // don't clip against self
int newdam = targ.DamageMobj (self, self, 10001, 'Crush');
targ.TraceBleed (newdam > 0 ? newdam : 10001, null);
args[1] = 1; // Mark thrust thing as bloody
}
if (!targ.bShootable)
continue;
if (targ == self)
continue; // don't clip against self
int newdam = targ.DamageMobj (self, self, 10001, 'Crush');
targ.TraceBleed (newdam > 0 ? newdam : 10001, null);
args[1] = 1; // Mark thrust thing as bloody
}
}
}

View file

@ -606,6 +606,28 @@ class LevelCompatibility play
break;
}
case '57386AEF275684BA06756359B08F4391': // Perdition's Gate MAP03
{
// Stairs where one sector is too thin to score.
SetSectorSpecial(227, 0);
break;
}
case 'F1A9938C4FC3906A582AB7D5088B5F87': // Perdition's Gate MAP12
{
// Sector unintentionally left as a secret near switch
SetSectorSpecial(112, 0);
break;
}
case '5C419E581D9570F44A24163A83032086': // Perdition's Gate MAP27
{
// Sectors unintentionally left as secrets and cannot be scored
SetSectorSpecial(338, 0);
SetSectorSpecial(459, 0);
break;
}
case 'FCCA97FC851F6473EAA069F74247B317': // pg-raw.wad map31
{
SetLineSectorRef(331, Line.front, 74);
@ -621,8 +643,59 @@ class LevelCompatibility play
break;
}
case '712BB4CFBD0753178CA0C6814BE4C288': // beta version of map12 BTSX_E1 - patch some rendering glitches that are problematic to detect
case '5379C080299EB961792B50AD96821543': // Hell to Pay MAP14
{
// Two secrets are unreachable without jumping and crouching.
SetSectorSpecial(82, 0);
SetSectorSpecial(83, 0);
break;
}
case '7837B5334A277F107515D649BCEFB682': // Hell to Pay MAP22
{
// Four enemies (six if multiplayer) never spawn in the map,
// so the lines closest to them should teleport them instead.
SetLineSpecial(1835, Teleport, 0, 40);
SetLineActivation(1835, SPAC_MCross);
SetLineFlags(1835, Line.ML_REPEAT_SPECIAL);
SetLineSpecial(1847, Teleport, 0, 40);
SetLineActivation(1847, SPAC_MCross);
SetLineFlags(1847, Line.ML_REPEAT_SPECIAL);
break;
}
case '1A1AB6415851B9F17715A0C36412752E': // Hell to Pay MAP24
{
// Remove Chaingunner far below the map, making 100% kills
// impractical.
SetThingFlags(70, 0);
break;
}
case 'A7ACB57A2CAF17434D0DFE0FAC0E0480': // Hell to Pay MAP28
{
// Three Lost Souls placed outside the map for some reason.
for(int i=0; i<3; i++)
{
SetThingFlags(217+i, 0);
}
break;
}
case '2F1A18633C30E938B50B6D928C730CB6': // Hell to Pay MAP29
{
// Three Lost Souls placed outside the map, again...
for(int i=0; i<3; i++)
{
SetThingFlags(239+i, 0);
}
break;
}
case '712BB4CFBD0753178CA0C6814BE4C288': // beta version of map12 BTSX_E1
{
// patch some rendering glitches that are problematic to detect
AddSectorTag(545, 32000);
AddSectorTag(1618, 32000);
SetLineSpecial(2853, Sector_Set3DFloor, 32000, 4);