From 4f96fead3a0f8025c5a926257a7eb7e8665db6ed Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 15 Feb 2021 01:46:29 -0800 Subject: [PATCH] Search entire map, not just waypoint's sector, for finish line --- src/p_mobj.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index ac48b953d..286c99742 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11332,22 +11332,19 @@ static fixed_t dist2vert(const vertex_t *v, const mobj_t *o) static void P_SnapToFinishLine(mobj_t *mobj) { - const sector_t *sector = mobj->subsector->sector; - size_t i; + INT32 i = -1; fixed_t d; fixed_t nearest = INT32_MAX; line_t *nearest_line = NULL; - for (i = 0; i < sector->linecount; ++i) + // case 2001: Finish Line + while ((i = P_FindSpecialLineFromTag(2001, -1, i)) != -1) { if ( - sector->lines[i]->special == 2001 && // case 2001: Finish Line - ( - (d = dist2vert(sector->lines[i]->v1, mobj)) < nearest || - (d = dist2vert(sector->lines[i]->v2, mobj)) < nearest - ) + (d = dist2vert(lines[i].v1, mobj)) < nearest || + (d = dist2vert(lines[i].v2, mobj)) < nearest ){ nearest = d; - nearest_line = sector->lines[i]; + nearest_line = &lines[i]; } } if (nearest < INT32_MAX)