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); }
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(); }