private bool getMatchingAspects(Block fromBlock, Block toBlock, Direction dir) { var aspectA = fromBlock.getAspect(dir); var aspectB = toBlock.getAspect(DirectionHelper.GetInverse(dir)); switch (aspectB) { case Aspect.WINDOW: return(false); case Aspect.ACCESS: return(aspectA == Aspect.OPEN || aspectA == Aspect.ACCESS && fromBlock.getAccess(dir) == toBlock.getAccess(DirectionHelper.GetInverse(dir))); case Aspect.OPEN: return(aspectA == Aspect.OPEN || aspectA == Aspect.CLOSED || aspectA == Aspect.ACCESS); case Aspect.CLOSED: return(aspectA == Aspect.OPEN || aspectA == Aspect.CLOSED); default: throw new ArgumentOutOfRangeException("Aspect " + aspectA); } }