From 0181f3195cdf9561781a7d8662b7246aba5aa08b Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 28 Jan 2018 14:23:50 +0100 Subject: [PATCH 1/2] Fix incorrect HitTexture reassignment in LineTrace. --- src/p_map.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index 8e445862a..96b72c342 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4898,17 +4898,8 @@ bool P_LineTrace(AActor *t1, DAngle angle, double distance, outdata->HitLine = trace.Line; outdata->HitSector = trace.Sector; outdata->Hit3DFloor = trace.ffloor; - switch ( trace.HitType ) + if ( trace.HitType == TRACE_HitWall ) { - case TRACE_HitFloor: - outdata->SectorPlane = 0; - outdata->HitTexture = trace.Sector->planes[0].Texture; - break; - case TRACE_HitCeiling: - outdata->SectorPlane = 1; - outdata->HitTexture = trace.Sector->planes[1].Texture; - break; - case TRACE_HitWall: outdata->LineSide = trace.Side; int txpart; switch ( trace.Tier ) @@ -4930,9 +4921,8 @@ bool P_LineTrace(AActor *t1, DAngle angle, double distance, outdata->HitTexture = trace.ffloor->master->sidedef[0]->textures[txpart].texture; break; } - default: - break; } + else outdata->HitTexture = trace.HitTexture; outdata->HitLocation = trace.HitPos; outdata->Distance = trace.Distance; outdata->NumPortals = TData.NumPortals; From f88dced8f8685dc6cb3a2694293d7cb7a7681946 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 28 Jan 2018 17:45:36 +0100 Subject: [PATCH 2/2] Fix accidentally removed SectorPlane assignment. Added missing HitVector support. --- src/p_linetracedata.h | 1 + src/p_map.cpp | 2 ++ wadsrc/static/zscript/actor.txt | 1 + 3 files changed, 4 insertions(+) diff --git a/src/p_linetracedata.h b/src/p_linetracedata.h index f6191b5d1..b05b694d5 100644 --- a/src/p_linetracedata.h +++ b/src/p_linetracedata.h @@ -14,6 +14,7 @@ struct FLineTraceData F3DFloor *Hit3DFloor; FTextureID HitTexture; DVector3 HitLocation; + DVector3 HitDir; double Distance; int NumPortals; int LineSide; diff --git a/src/p_map.cpp b/src/p_map.cpp index 96b72c342..8fb25acfa 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4898,6 +4898,7 @@ bool P_LineTrace(AActor *t1, DAngle angle, double distance, outdata->HitLine = trace.Line; outdata->HitSector = trace.Sector; outdata->Hit3DFloor = trace.ffloor; + outdata->SectorPlane = (trace.HitType == TRACE_HitCeiling) ? 1 : 0; if ( trace.HitType == TRACE_HitWall ) { outdata->LineSide = trace.Side; @@ -4924,6 +4925,7 @@ bool P_LineTrace(AActor *t1, DAngle angle, double distance, } else outdata->HitTexture = trace.HitTexture; outdata->HitLocation = trace.HitPos; + outdata->HitDir = trace.HitVector; outdata->Distance = trace.Distance; outdata->NumPortals = TData.NumPortals; outdata->HitType = trace.HitType; diff --git a/wadsrc/static/zscript/actor.txt b/wadsrc/static/zscript/actor.txt index dbea3fd47..261017ddf 100644 --- a/wadsrc/static/zscript/actor.txt +++ b/wadsrc/static/zscript/actor.txt @@ -47,6 +47,7 @@ struct FLineTraceData F3DFloor Hit3DFloor; TextureID HitTexture; Vector3 HitLocation; + Vector3 HitDir; double Distance; int NumPortals; int LineSide;