void createBlock(PointTrigger point)
 {
     if (point.child == null)
     {
         point.child = Instantiate(BlocksContainer.instanse.blocks [currentId], new Vector3(startPos.x + point.X, startPos.y - point.Y, zPos), BlocksContainer.instanse.blocks [currentId].transform.rotation, blankInBuild.transform);
         point.child.GetComponent <BlockObject> ().canDestroyInBuildMode = true;
     }
 }
 void destroyBlock(PointTrigger point)
 {
     if (point.child != null)
     {
         if (point.child.GetComponent <BlockObject> ().canDestroyInBuildMode)
         {
             Destroy(point.child);
         }
     }
 }
 void rotateBlock(PointTrigger point, int direction)
 {
     if (point.child.GetComponent <BlockObject> ().canRotate)
     {
         if (touchPhase == TouchPahaseConstr.Касание)
         {
             if (point.child.GetComponent <BlockObject> ().rotType == RotType.Z)
             {
                 point.child.transform.Rotate(Vector3.forward, 90 * direction, Space.Self);
             }
             else
             {
                 point.child.transform.Rotate(Vector3.right, 90 * direction, Space.Self);
             }
         }
     }
 }
    public void touch(PointTrigger point)
    {
        if (blankInBuild == null)
        {
            blankInBuild = Instantiate(emptyPrefab, Vector3.zero, Quaternion.identity);
        }



        if (phase == BuildPhase.Строительство)
        {
            if (point.child != null)
            {
                rotateBlock(point, 1);
                point.child.GetComponent <BlockObject> ().resetAfterRotate();

                /*if (mirrorPhase == MirrorPhase.X) {
                 *      int x = point.X;
                 *      PointTrigger mirrorPoint = gridBlocks [blank.xSize - x-1, point.Y].GetComponent<PointTrigger>();
                 *      rotateBlock (mirrorPoint,-1);
                 * }else if (mirrorPhase == MirrorPhase.Y) {
                 *      int y = point.Y;
                 *
                 *      PointTrigger mirrorPoint = gridBlocks [point.X,blank.ySize - y-1].GetComponent<PointTrigger>();
                 *      rotateBlock (mirrorPoint,1);
                 * }else if (mirrorPhase == MirrorPhase.XAndY) {
                 *
                 *      int x = point.X;
                 *      int y = point.Y;
                 *
                 *      PointTrigger mirrorPoint = gridBlocks [point.X,blank.ySize - y-1].GetComponent<PointTrigger>();
                 *      rotateBlock (mirrorPoint,-1);
                 *
                 *      mirrorPoint = gridBlocks [blank.xSize - x-1,blank.ySize - y-1].GetComponent<PointTrigger>();
                 *      rotateBlock (mirrorPoint,-1);
                 *
                 *      mirrorPoint = gridBlocks [blank.xSize - x-1,point.Y].GetComponent<PointTrigger>();
                 *      rotateBlock (mirrorPoint,-1);
                 * }*/
            }
            else
            {
                createBlock(point);
                if (mirrorPhase == MirrorPhase.X)
                {
                    int          x           = point.X;
                    PointTrigger mirrorPoint = gridBlocks [blank.xSize - x - 1, point.Y].GetComponent <PointTrigger>();
                    createBlock(mirrorPoint);
                }
                else if (mirrorPhase == MirrorPhase.Y)
                {
                    int y = point.Y;

                    PointTrigger mirrorPoint = gridBlocks [point.X, blank.ySize - y - 1].GetComponent <PointTrigger>();
                    createBlock(mirrorPoint);
                }
                else if (mirrorPhase == MirrorPhase.XAndY)
                {
                    int x = point.X;
                    int y = point.Y;

                    PointTrigger mirrorPoint = gridBlocks [point.X, blank.ySize - y - 1].GetComponent <PointTrigger>();
                    createBlock(mirrorPoint);

                    mirrorPoint = gridBlocks [blank.xSize - x - 1, blank.ySize - y - 1].GetComponent <PointTrigger>();
                    createBlock(mirrorPoint);

                    mirrorPoint = gridBlocks [blank.xSize - x - 1, point.Y].GetComponent <PointTrigger>();
                    createBlock(mirrorPoint);
                }
            }
        }
        else
        {
            if (mirrorPhase == MirrorPhase.X)
            {
                int          x           = point.X;
                PointTrigger mirrorPoint = gridBlocks [blank.xSize - x - 1, point.Y].GetComponent <PointTrigger>();
                destroyBlock(mirrorPoint);
            }
            else if (mirrorPhase == MirrorPhase.Y)
            {
                int y = point.Y;

                PointTrigger mirrorPoint = gridBlocks [point.X, blank.ySize - y - 1].GetComponent <PointTrigger>();
                destroyBlock(mirrorPoint);
            }
            else if (mirrorPhase == MirrorPhase.XAndY)
            {
                int x = point.X;
                int y = point.Y;

                PointTrigger mirrorPoint = gridBlocks [point.X, blank.ySize - y - 1].GetComponent <PointTrigger>();
                destroyBlock(mirrorPoint);

                mirrorPoint = gridBlocks [blank.xSize - x - 1, blank.ySize - y - 1].GetComponent <PointTrigger>();
                destroyBlock(mirrorPoint);

                mirrorPoint = gridBlocks [blank.xSize - x - 1, point.Y].GetComponent <PointTrigger>();
                destroyBlock(mirrorPoint);
            }

            destroyBlock(point);
        }
    }