What I actually did in one of my experiments with this was put sockets at the edge of meshes that count as connection points. I also had a struct that would contain a list of connection points and if they had been connected to or not yet. I would then spawn rooms at only the sockets. This required a little monkeying with the rooms to get the offset correct for the actor, but after I got that working it was super simple to connect them to each other without overlaps.