void GenCorridors(BinaryNode node) { if (node.IsLeaf()) { return; } if (!node.Children[0].IsLeaf()) { GenCorridors(node.Children[0]); } if (!node.Children[1].IsLeaf()) { GenCorridors(node.Children[1]); } BinaryNode leaf1 = node.Children[0]; BinaryNode leaf2 = node.Children[1]; var rooms1 = new List <Room>(); var rooms2 = new List <Room>(); leaf1.FillRoomsRecursively(rooms1); leaf2.FillRoomsRecursively(rooms2); Room[] roomsToConnect = FindRoomPairToConnect(rooms1, rooms2); Room room1 = roomsToConnect[0]; Room room2 = roomsToConnect[1]; //make a corridor if (leaf1.GlobalPos.Y == leaf2.GlobalPos.Y) { this.corridors.Add(DigCorridorRightTo(room1, room2)); } else { this.corridors.Add(DigCorridorUpTo(room1, room2)); } }