private CutawayEdges GetCutEdges(int x, int y)
{
var result = new CutawayEdges();
if (!WallsDownAt(x + 1, y)) result |= CutawayEdges.PositiveX;
if (!WallsDownAt(x - 1, y)) result |= CutawayEdges.NegativeX;
if (!WallsDownAt(x, y + 1)) result |= CutawayEdges.PositiveY;
if (!WallsDownAt(x, y - 1)) result |= CutawayEdges.NegativeY;
if (!WallsDownAt(x - 1, y - 1)) result |= CutawayEdges.SpecialNegativeX | CutawayEdges.SpecialNegativeY;
if (!WallsDownAt(x - 1, y + 1)) result |= CutawayEdges.SpecialPositiveY;
if (!WallsDownAt(x + 1, y - 1)) result |= CutawayEdges.SpecialPositiveX;
return result;
}