diff --git a/Barotrauma/BarotraumaShared/Source/Map/Levels/Ruins/RuinGenerator.cs b/Barotrauma/BarotraumaShared/Source/Map/Levels/Ruins/RuinGenerator.cs index 97674383f..bd4f5118e 100644 --- a/Barotrauma/BarotraumaShared/Source/Map/Levels/Ruins/RuinGenerator.cs +++ b/Barotrauma/BarotraumaShared/Source/Map/Levels/Ruins/RuinGenerator.cs @@ -60,9 +60,9 @@ namespace Barotrauma.RuinGeneration } /// - /// Goes through a list of line segments and "clips off" all parts of the lines that are inside the rectangle + /// Goes through all the walls of the ruin shape and clips off parts that are inside the rectangle /// - public void SplitLines(Rectangle rectangle) + public void SplitWalls(Rectangle rectangle) { List newLines = new List(); @@ -76,7 +76,8 @@ namespace Barotrauma.RuinGeneration { newLines.Add(line); } - else if (line.A.Y > rectangle.Y && line.B.Y < rectangle.Bottom) + //line completely inside the rectangle, no need to create a wall at all + else if (line.A.Y >= rectangle.Y && line.B.Y <= rectangle.Bottom) { continue; } @@ -106,7 +107,7 @@ namespace Barotrauma.RuinGeneration newLines.Add(line); } - else if (line.A.X > rectangle.X && line.B.X < rectangle.Right) + else if (line.A.X >= rectangle.X && line.B.X <= rectangle.Right) { continue; } @@ -256,7 +257,7 @@ namespace Barotrauma.RuinGeneration { foreach (Corridor corridor in corridors) { - leaf.SplitLines(corridor.Rect); + leaf.SplitWalls(corridor.Rect); } walls.AddRange(leaf.Walls); @@ -269,13 +270,13 @@ namespace Barotrauma.RuinGeneration foreach (BTRoom leaf in rooms) { - corridor.SplitLines(leaf.Rect); + corridor.SplitWalls(leaf.Rect); } foreach (Corridor corridor2 in corridors) { if (corridor == corridor2) continue; - corridor.SplitLines(corridor2.Rect); + corridor.SplitWalls(corridor2.Rect); }