IEnumerator doubleTapPageActions(GameObject instructionText, float initialDelay, onDoubleTapPageActionsCompleteCB onPageActionsComplete)
        {
            Vector3 originalTextScale = instructionText.transform.localScale;
            m_gestureSphere.transform.position = new Vector3(0.0f, 0.0f, kSphereZPos);

            yield return StartCoroutine(Actions.Wait(initialDelay));

            // Instruction text actions
            instructionText.transform.localScale = Vector3.zero;
            instructionText.SetActive(true);
            StartCoroutine(instructionText.transform.ScaleTo(originalTextScale, 0.75f, EaseType.CubeOut));
            yield return StartCoroutine(Actions.Wait(1.5f));

            m_gestureSphere.SetActive(true);
            StartCoroutine(m_gestureSphere.transform.ScaleTo(new Vector3(1.0f / transform.localScale.x, 1.0f / transform.localScale.y, 1.0f / transform.localScale.z), 0.75f, EaseType.BackOut));
            yield return StartCoroutine(Actions.Wait(1.25f));
            StartCoroutine(m_gestureSphere.transform.ScaleTo(new Vector3(2.0f / transform.localScale.x, 2.0f / transform.localScale.y, 2.0f / transform.localScale.z), 0.4f, EaseType.SineInOut));
            yield return StartCoroutine(Actions.Wait(0.4f));                                                                                                             
            StartCoroutine(m_gestureSphere.transform.ScaleTo(new Vector3(1.0f / transform.localScale.x, 1.0f / transform.localScale.y, 1.0f / transform.localScale.z), 0.4f, EaseType.SineInOut));
            yield return StartCoroutine(Actions.Wait(0.4f));                                                                                                             
            StartCoroutine(m_gestureSphere.transform.ScaleTo(new Vector3(2.0f / transform.localScale.x, 2.0f / transform.localScale.y, 2.0f / transform.localScale.z), 0.4f, EaseType.SineInOut));
            yield return StartCoroutine(Actions.Wait(0.4f));                                                                                                             
            StartCoroutine(m_gestureSphere.transform.ScaleTo(new Vector3(1.0f / transform.localScale.x, 1.0f / transform.localScale.y, 1.0f / transform.localScale.z), 0.4f, EaseType.SineInOut));
            yield return StartCoroutine(Actions.Wait(0.6f));
            StartCoroutine(m_gestureSphere.transform.ScaleTo(Vector3.zero, 0.75f, EaseType.CubeIn));
            StartCoroutine(instructionText.transform.ScaleTo(Vector3.zero, 0.75f, EaseType.CubeIn));
            yield return StartCoroutine(Actions.Wait(0.75f));

            m_gestureSphere.SetActive(false);
            instructionText.SetActive(false);
            instructionText.transform.localScale = originalTextScale;

            onPageActionsComplete();

            yield return 0;
        }
 public void doDoubleTapPageActions(GameObject instructionText, float initialDelay, onDoubleTapPageActionsCompleteCB onPageActionsComplete)
 {
     StartCoroutine(doubleTapPageActions(instructionText, initialDelay, onPageActionsComplete));
 }