private IEnumerator TakeSnapShotOfSide(int sideIndex, PiecePivot piecePivot)
    {
        subPuzzle.SetBackgroundColor(sideIndex);
        HideAllPiecePivots();
        // Take picture of background Quad
        Texture2D sideNoPiecesTexture = null;

        yield return(TakeSnapShotOfBackgroundQuad((picture) => sideNoPiecesTexture = picture));

        // Take picture of a side
        HideAllPiecePivots();
        piecePivots [sideIndex].pivot.SetActive(true);
        yield return(null);

        var sidePicture = subPuzzle.TakeSnapShot();

        piecePivot.picture         = sidePicture;
        piecePivot.pictureNoPieces = sideNoPiecesTexture;
    }
    private List <PiecePivot> CreatePiecePivotList()
    {
        var piecePivots    = new List <PiecePivot> ();
        var nPiecesInPivot = internalPuzzlePivot.pieces.Count / 2;

        for (int i = 0; i < 2; i++)
        {
            var piecePivot           = new PiecePivot();
            var piecePivotGameObject = new GameObject();
            piecePivot.pivot = piecePivotGameObject;

            piecePivotGameObject.transform.parent        = TopPivot().pivot.transform;
            piecePivotGameObject.transform.localPosition = new Vector3(0, 0, -2);
            for (int j = 0; j < nPiecesInPivot; j++)
            {
                var piece = internalPuzzlePivot.pieces[i * nPiecesInPivot + j];
                piece.transform.parent        = piecePivotGameObject.transform;
                piece.transform.localPosition = new Vector3(piece.transform.localPosition.x, piece.transform.localPosition.y, j * -0.01f);
            }
            piecePivots.Add(piecePivot);
        }
        return(piecePivots);
    }