private void GetConnectedRoomsRecursive(RoomInfo startRoom, ref List <RoomInfo> rooms) { if (rooms.Contains(startRoom)) { return; } rooms.Add(startRoom); List <RoomInfo> connectedRooms = startRoom.GetConnectedRooms(this.rooms); foreach (RoomInfo room in connectedRooms) { GetConnectedRoomsRecursive(room, ref rooms); } }