Fixed exceptions during level generation if two tunnel nodes happen to be placed at the same position
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user