public Rubik Clone()
        {
            Rubik newRubik = new Rubik();

            newRubik.cubes         = new List <Cube3D>(cubes.Select(c => c.Clone()));
            newRubik.cubesRender   = new List <Cube3D>(cubesRender.Select(c => c.Clone()));
            newRubik.LayerRotation = new Dictionary <Cube3D.RubikPosition, double>(LayerRotation);
            newRubik.Rotation      = Rotation;
            return(newRubik);
        }
 public RubikManager(Color cfront, Color cback, Color ctop, Color cbottom, Color cright, Color cleft)
 {
     RubikCube = new Rubik();
     setFaceColor(Cube3D.RubikPosition.FrontSlice, Face3D.FacePosition.Front, cfront);
     setFaceColor(Cube3D.RubikPosition.BackSlice, Face3D.FacePosition.Back, cback);
     setFaceColor(Cube3D.RubikPosition.TopLayer, Face3D.FacePosition.Top, ctop);
     setFaceColor(Cube3D.RubikPosition.BottomLayer, Face3D.FacePosition.Bottom, cbottom);
     setFaceColor(Cube3D.RubikPosition.RightSlice, Face3D.FacePosition.Right, cright);
     setFaceColor(Cube3D.RubikPosition.LeftSlice, Face3D.FacePosition.Left, cleft);
     Rotating = false;
 }