private bool IsAdjacencyBlocked(uint x, uint y, uint width, uint height, Direction?direction) { /** Precondition: IsHittingEdge was already called to this point */ switch (direction) { case Direction.LEFT: return(blockMask.GetColumn(x - 1, y, y + height - 1, Bitmask.CheckType.ANY_BLOCKED)); case Direction.UP: return(blockMask.GetRow(x, x + width - 1, y - 1, Bitmask.CheckType.ANY_BLOCKED)); case Direction.RIGHT: return(blockMask.GetColumn(x + width, y, y + height - 1, Bitmask.CheckType.ANY_BLOCKED)); case Direction.DOWN: return(blockMask.GetRow(x, x + width - 1, y + height, Bitmask.CheckType.ANY_BLOCKED)); default: return(true); } }