public void RotatePiece() { CurrPiece.RotateCW(); if (!ValidBoard(PiecePos)) { //maybe rotation is valid if we shift either left... PiecePos += Vector2Int.left; if (!ValidBoard(PiecePos)) //...or right { PiecePos += 2 * Vector2Int.right; } if (!ValidBoard(PiecePos)) {//the rotation is invalid, so revert PiecePos += Vector2Int.left; CurrPiece.RotateCCW(); } } ComputeProjection(); }