protected override void Awake()
    {
        base.Awake();

        if (_instance != null)
        {
            Debug.LogWarning("Trying to instantiate multiple LaserPointerInputModule.");
            DestroyImmediate(this.gameObject);
        }

        _instance = this;
    }
        public void SwitchTutorialState(TutorialState state)
        {
            switch (state)
            {
            case TutorialState.SetupVR:
            {
                CameraUI.enabled = true;
                GetComponent <EventSystem>().enabled = true;
                Canvas.worldCamera = transform.GetComponentInChildren <Camera>();
                        #if UNITY_EDITOR
                PlayerSettings.virtualRealitySupported = false;
                        #endif
                GestureSettings.showVRUI = false;
                if (GestureSettings.Rig != null)
                {
                            #if EDWON_VR_OCULUS
                    GestureSettings.Rig.GetComponent <OVRCameraRig>().enabled = false;
                    GestureSettings.Rig.GetComponent <OVRManager>().enabled   = false;
                            #endif
                    CameraUI.tag = "MainCamera";
                    GestureSettings.Rig.head.GetComponent <Camera>().tag     = "Untagged";
                    GestureSettings.Rig.head.GetComponent <Camera>().enabled = false;
                    GestureSettings.Rig.enabled = false;
                }
            }
            break;

            case TutorialState.InVR:
            {
                CameraUI.enabled = false;
                GetComponent <EventSystem>().enabled = false;
                // set the tutorial canvas UI camera to the VR ui camera
                if (FindObjectOfType <VRGestureUI>() != null)
                {
                    VRGestureUI             ui = FindObjectOfType <VRGestureUI>();
                    LaserPointerInputModule laserPointerInput = ui.GetComponent <LaserPointerInputModule>();
                    Canvas.worldCamera = laserPointerInput.UICamera;
                }
                        #if UNITY_EDITOR
                PlayerSettings.virtualRealitySupported = true;
                        #endif
                GestureSettings.showVRUI = true;
                if (GestureSettings.Rig != null)
                {
                            #if EDWON_VR_OCULUS
                    GestureSettings.Rig.GetComponent <OVRCameraRig>().enabled = true;
                    GestureSettings.Rig.GetComponent <OVRManager>().enabled   = true;
                            #endif
                            #if EDWON_VR_STEAM
                    GestureSettings.Rig.transform.position = new Vector3(0, -1.25f, 1.25f);
                    GestureSettings.Rig.transform.rotation = Quaternion.identity;
                            #endif
                    CameraUI.tag = "Untagged";
                    GestureSettings.Rig.head.GetComponent <Camera>().tag     = "MainCamera";
                    GestureSettings.Rig.head.GetComponent <Camera>().enabled = true;
                    GestureSettings.Rig.enabled = true;
                }
            }
            break;
            }

            TutorialSettings.tutorialState = state;
            SaveTutorialSettings(TutorialSettings);
        }