From f4ff4ad1d5507b351d3443f25cd25e945b81f4d4 Mon Sep 17 00:00:00 2001 From: sphere Date: Sun, 29 Aug 2021 23:42:19 +0200 Subject: [PATCH] Take inaccessible waypoints into account when drawing waypoint sequences. --- Source/Core/Rendering/Renderer2D.cs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Source/Core/Rendering/Renderer2D.cs b/Source/Core/Rendering/Renderer2D.cs index 494711c..e92ce23 100644 --- a/Source/Core/Rendering/Renderer2D.cs +++ b/Source/Core/Rendering/Renderer2D.cs @@ -1479,15 +1479,27 @@ namespace CodeImp.DoomBuilder.Rendering Rectangle = new RectangleF(waypoints[i].Position.x, waypoints[i].Position.y, 0.0f, 0.0f) }; } - if (iNext < size && waypoints[iNext].AngleDoom == waypoints[i].AngleDoom + 1) // next waypoint of this sequence? - RenderLine(waypoints[i].Position, waypoints[iNext].Position, 1.5f, General.Colors.WaypointColor, true); - else if (iNext < size && waypoints[iNext].AngleDoom == waypoints[i].AngleDoom) // mark duplicate waypoints + if (iNext < size && waypoints[iNext].AngleDoom == waypoints[i].AngleDoom + 1) { + // draw line between this waypoint and the next + RenderLine(waypoints[i].Position, waypoints[iNext].Position, 1.5f, General.Colors.WaypointColor, true); + } + else if (iNext < size && waypoints[iNext].AngleDoom == waypoints[i].AngleDoom) + { + // mark duplicate waypoints RenderCircle(waypoints[i].Position, 32f, 1f, PixelColor.FromColor(Color.Red), true); RenderCircle(waypoints[iNext].Position, 32f, 1f, PixelColor.FromColor(Color.Red), true); } - else // draw different line between last and first waypoint of this sequence + else if (iNext < size && i > 0 && waypoints[i].AngleDoom - waypoints[i - 1].AngleDoom > 1 && waypoints[iNext].AngleDoom > waypoints[seqStart].AngleDoom + 255) + { + // mark inaccessible waypoints + RenderCircle(waypoints[i].Position, 32f, 1f, PixelColor.FromColor(Color.Red), true); + } + else + { + // draw different line between last and first waypoint of this sequence RenderLine(waypoints[i].Position, waypoints[seqStart].Position, 0.75f, General.Colors.WaypointLoopColor, true); + } i = iNext; }