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
@@ -756,7 +756,12 @@ 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)
{ {
dir += Vector2.Normalize(tunnelNodes[tunnelNodes.Count - 1] - tunnelNodes[tunnelNodes.Count - 2]) * 0.5f; //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;
}
} }
float avoidDist = 20000.0f; float avoidDist = 20000.0f;