Fixed exceptions during level generation if two tunnel nodes happen to be placed at the same position

This commit is contained in:
Joonas Rikkonen
2017-09-03 13:11:53 +03:00
parent 3feee93c53
commit 7625d04807
@@ -755,9 +755,14 @@ namespace Barotrauma
dir.Y += Math.Sign(tunnelNodes[tunnelNodes.Count - 1].Y - Size.Y / 2) * 0.5f; dir.Y += Math.Sign(tunnelNodes[tunnelNodes.Count - 1].Y - Size.Y / 2) * 0.5f;
if (tunnelNodes.Count > 1) if (tunnelNodes.Count > 1)
{
//keep heading roughly in the same direction as the previous nodes
Vector2 prevNodeDiff = tunnelNodes[tunnelNodes.Count - 1] - tunnelNodes[tunnelNodes.Count - 2];
if (prevNodeDiff != Vector2.Zero)
{ {
dir += Vector2.Normalize(tunnelNodes[tunnelNodes.Count - 1] - tunnelNodes[tunnelNodes.Count - 2]) * 0.5f; dir += Vector2.Normalize(tunnelNodes[tunnelNodes.Count - 1] - tunnelNodes[tunnelNodes.Count - 2]) * 0.5f;
} }
}
float avoidDist = 20000.0f; float avoidDist = 20000.0f;
foreach (Vector2 pathNode in avoidNodes) foreach (Vector2 pathNode in avoidNodes)