예제 #1
0
    public SavedData GetSavedData()
    {
        SavedData save = new SavedData(size, cubes.Count);

        uint i = 0u;

        foreach (Cube cube in cubes)
        {
            Vector3    pos = cube.transform.position;
            Quaternion rot = cube.transform.rotation;

            SavedData.PosRot posRotI = save.posRot[i++];

            posRotI.pos[0] = pos.x;
            posRotI.pos[1] = pos.y;
            posRotI.pos[2] = pos.z;
            posRotI.rot[0] = rot.x;
            posRotI.rot[1] = rot.y;
            posRotI.rot[2] = rot.z;
            posRotI.rot[3] = rot.w;
        }

        save.rubiksPosRot.pos[0] = transform.position.x;
        save.rubiksPosRot.pos[1] = transform.position.y;
        save.rubiksPosRot.pos[2] = transform.position.z;
        save.rubiksPosRot.rot[0] = transform.rotation.x;
        save.rubiksPosRot.rot[1] = transform.rotation.y;
        save.rubiksPosRot.rot[2] = transform.rotation.z;
        save.rubiksPosRot.rot[3] = transform.rotation.w;

        return(save);
    }
예제 #2
0
    void Start()
    {
        cubeRotator = FindObjectOfType(typeof(RotateCube)) as RotateCube;
        // SavedData is a serializable class defined in GameManager.cs
        SavedData save = GameManager.GetSave();

        if (save != null)
        {
            size = save.cubeSize;
            Vector3    pos = new Vector3(save.rubiksPosRot.pos[0], save.rubiksPosRot.pos[1], save.rubiksPosRot.pos[2]);
            Quaternion rot = new Quaternion(save.rubiksPosRot.rot[0], save.rubiksPosRot.rot[1], save.rubiksPosRot.rot[2], save.rubiksPosRot.rot[3]);

            transform.SetPositionAndRotation(pos, rot);
            GenerateCubes();

            uint i = 0u;

            foreach (Cube cube in cubes)
            {
                // PosRot is a subclass
                SavedData.PosRot posRotI = save.posRot[i++];

                pos = new Vector3(posRotI.pos[0], posRotI.pos[1], posRotI.pos[2]);
                rot = new Quaternion(posRotI.rot[0], posRotI.rot[1], posRotI.rot[2], posRotI.rot[3]);

                cube.transform.SetPositionAndRotation(pos, rot);
            }
        }

        else
        {
            GenerateCubes();
        }

        UpdateView();
    }