public void Solve() { if (cubemover.isAvailable()) { string status = cubeStatus.GetStatus(); // Lock the mover, and unlock when finished string stage = findCurrentStage(status); //print(stage); switch (stage) { case "Cross": current_moves = solverCross.Solve(status); stepsLeft = current_moves.Count; break; case "F1L": current_moves = solverF1L.Solve(status); stepsLeft = current_moves.Count; break; case "F2L": current_moves = solverF2L.Solve(status); stepsLeft = current_moves.Count; break; case "OLL": current_moves = solverOLL.Solve(status); stepsLeft = current_moves.Count; break; case "PLL": current_moves = solverPLL.Solve(status); stepsLeft = current_moves.Count; break; case "Finished": toggleAuto(); break; } } }
// Update is called once per frame void Update() { if (root != null) { if (shouldDestroy) { if (root.childCount > 0) { for (int i = 0; i < root.childCount; i++) { root.GetChild(i).SetParent(rootCube); } } else { Destroy(root.gameObject); root = null; shouldDestroy = false; } } else { root.Rotate(rotation); rotation_sum += rotation.magnitude; if (rotation_sum >= 90) { rotation_sum = 0; if (rotation.x != 0) { if (rotation.x < 0) { root.eulerAngles = new Vector3(-90, root.eulerAngles.y, root.eulerAngles.z); } else { root.eulerAngles = new Vector3(90, root.eulerAngles.y, root.eulerAngles.z); } } else if (rotation.y != 0) { if (rotation.y < 0) { root.eulerAngles = new Vector3(root.eulerAngles.x, -90, root.eulerAngles.z); } else { root.eulerAngles = new Vector3(root.eulerAngles.x, 90, root.eulerAngles.z); } } else { if (rotation.z < 0) { root.eulerAngles = new Vector3(root.eulerAngles.x, root.eulerAngles.y, -90); } else { root.eulerAngles = new Vector3(root.eulerAngles.x, root.eulerAngles.y, 90); } } cleanRoot(); string status = cubeStatus.GetStatus(); //print(status); if (cubeStatus.isFinished(status)) { if (!controlTimer.readyToggle.isOn) { controlTimer.readyToggle.isOn = true; controlTimer.stopTimer(); audioSource.clip = audioFinished; audioSource.volume = 1.0f; audioSource.Play(); } } } } } }