From 81b634a798a1ef49963b921e9373e0ed2c293851 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Thu, 3 Mar 2016 16:33:42 +0100 Subject: [PATCH] - preparation for making Trace portal aware: Added a new flag Trace_PortalRestrict, so that I could disable portals without static offset for P_LinePickActor and A_CheckLOF, because both depend on the target info being retainable which requires a static offset. --- src/p_map.cpp | 2 +- src/p_trace.h | 1 + src/thingdef/thingdef_codeptr.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index e36cb9316..4d30246f3 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -4460,7 +4460,7 @@ AActor *P_LinePickActor(AActor *t1, angle_t angle, fixed_t distance, int pitch, TData.hitGhosts = true; if (Trace(t1->X(), t1->Y(), shootz, t1->Sector, vx, vy, vz, distance, - actorMask, wallMask, t1, trace, TRACE_NoSky, CheckForActor, &TData)) + actorMask, wallMask, t1, trace, TRACE_NoSky | TRACE_PortalRestrict, CheckForActor, &TData)) { if (trace.HitType == TRACE_HitActor) { diff --git a/src/p_trace.h b/src/p_trace.h index 55447e021..ef082f788 100644 --- a/src/p_trace.h +++ b/src/p_trace.h @@ -84,6 +84,7 @@ enum TRACE_NoSky = 1, // Hitting the sky returns TRACE_HitNone TRACE_PCross = 2, // Trigger SPAC_PCROSS lines TRACE_Impact = 4, // Trigger SPAC_IMPACT lines + TRACE_PortalRestrict= 8, // Cannot go through portals without a static link offset. }; // return values from callback diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index 5f518fab0..98dd60f2d 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -3870,7 +3870,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_CheckLOF) lof_data.Flags = flags; lof_data.BadActor = false; - Trace(pos.x, pos.y, pos.z, sec, vx, vy, vz, range, ActorFlags::FromInt(0xFFFFFFFF), ML_BLOCKEVERYTHING, self, trace, 0, + Trace(pos.x, pos.y, pos.z, sec, vx, vy, vz, range, ActorFlags::FromInt(0xFFFFFFFF), ML_BLOCKEVERYTHING, self, trace, TRACE_PortalRestrict, CheckLOFTraceFunc, &lof_data); if (trace.HitType == TRACE_HitActor ||