private IEnumerator ApplySequence(List <RubiksColor> colors, List <FaceRotation> directions) { yield return(new WaitForEndOfFrame()); for (int i = 0; i < colors.Count; i++) { yield return(new WaitUntil(() => RubiksCubeRotation.CurrentRotationState == RubiksCubeRotation.RotationState.IDLE)); RubiksFaceRotation.RubiksFace faceToRotate = RubiksFaceRotation.RubiksFace.NONE; GameObject faceGO = null; if (colors[i] == UpFaceColor) { faceToRotate = RubiksFaceRotation.RubiksFace.UP; faceGO = GameObject.FindGameObjectWithTag("UP"); } else if (colors[i] == LeftFaceColor) { faceToRotate = RubiksFaceRotation.RubiksFace.LEFT; faceGO = GameObject.FindGameObjectWithTag("LEFT"); } else if (colors[i] == RightFaceColor) { faceToRotate = RubiksFaceRotation.RubiksFace.RIGHT; faceGO = GameObject.FindGameObjectWithTag("RIGHT"); } else if (colors[i] == m_rubiksLogic.RubiksOppositeColor[UpFaceColor]) { m_rubiksVertical.RotateVerticalUp(m_shuffleRotationDuration); faceToRotate = RubiksFaceRotation.RubiksFace.LEFT; faceGO = GameObject.FindGameObjectWithTag("LEFT"); } else if (colors[i] == m_rubiksLogic.RubiksOppositeColor[LeftFaceColor]) { m_rubiksHorizontal.RotateHorizontalLeft(m_shuffleRotationDuration); faceToRotate = RubiksFaceRotation.RubiksFace.RIGHT; faceGO = GameObject.FindGameObjectWithTag("RIGHT"); } else if (colors[i] == m_rubiksLogic.RubiksOppositeColor[RightFaceColor]) { m_rubiksHorizontal.RotateHorizontalRight(m_shuffleRotationDuration); faceToRotate = RubiksFaceRotation.RubiksFace.LEFT; faceGO = GameObject.FindGameObjectWithTag("LEFT"); } yield return(new WaitUntil(() => RubiksCubeRotation.CurrentRotationState == RubiksCubeRotation.RotationState.IDLE)); if (faceToRotate != RubiksFaceRotation.RubiksFace.NONE && faceGO != null) { Rotate(faceToRotate, colors[i], faceGO, directions[i]); } } yield return(new WaitUntil(() => RubiksCubeRotation.CurrentRotationState == RubiksCubeRotation.RotationState.IDLE)); m_isApplyingSequence = false; }
private void Rotate(RubiksFaceRotation.RubiksFace faceToRotate, RubiksColor faceColor, GameObject faceGO, FaceRotation direction) { m_rubiksFaceRotation.Rotate(faceToRotate, direction, faceGO, m_shuffleRotationDuration, OnRotationFinished); }