private void Init(UITexture ui_tex, float fov, LOADER_TYPE loader_type = LOADER_TYPE.ITEM)
    {
        //IL_0071: Unknown result type (might be due to invalid IL or missing references)
        //IL_008c: Unknown result type (might be due to invalid IL or missing references)
        //IL_00a7: Unknown result type (might be due to invalid IL or missing references)
        //IL_00c2: Unknown result type (might be due to invalid IL or missing references)
        if (model == null)
        {
            uiTexture       = ui_tex;
            uiRenderTexture = UIRenderTexture.Get(ui_tex, fov, false, -1);
            model           = Utility.CreateGameObject("UIModel", uiRenderTexture.modelTransform, uiRenderTexture.renderLayer);
            switch (loader_type)
            {
            case LOADER_TYPE.PLAYER:
                playerLoader = model.get_gameObject().AddComponent <PlayerLoader>();
                break;

            case LOADER_TYPE.NPC:
                npcLoader = model.get_gameObject().AddComponent <NPCLoader>();
                break;

            case LOADER_TYPE.ITEM:
                itemLoader = model.get_gameObject().AddComponent <ItemLoader>();
                break;

            case LOADER_TYPE.ENEMY:
                enemyLoader = model.get_gameObject().AddComponent <EnemyLoader>();
                break;
            }
            modelLayer = uiRenderTexture.renderLayer;
        }
    }
        /// <summary>
        ///  Load next scene set it up for the current experience.
        /// </summary>
        /// <param name="loaderToUse">Loader to use.</param>
        public void LoadNextScene(LOADER_TYPE loaderToUse = LOADER_TYPE.UNITY)
        {
            if (sceneToPlay < sceneNames.Length)
            {
                // if (verbose) Debug.Log("tryint to load " + sceneNames[sceneToPlay]);
                string name = sceneNames[sceneToPlay];
                if (verbose)
                {
                    SouthernForge.Utils.Logger.Instance.Log("trying to load " + name, classTag);
                }
                NotifySceneTransition();
                switch (loaderToUse)
                {
                case LOADER_TYPE.UNITY:
                    UnityEngine.SceneManagement.SceneManager.LoadScene(name);
                    break;

                case LOADER_TYPE.VIVE:
                    throw new Exception("Not implemented yet. We broke the dependency from steamvr at this point");
                    // SteamVR_LoadLevel.Begin(name, true, 1.0f);

                    // UnityEngine.SceneManagement.SceneManager.LoadScene(name);
                    break;

                case LOADER_TYPE.PHOTON:
                    throw new Exception("Not implemented yet. We broke the dependency from photon at this point");
                    // Photon.Pun.PhotonNetwork.LoadLevel(name);
                    break;
                }
                // NOTE: since this is a don't destryable gameObject, this part of the code gets also executed even after loading the next scence.
                sceneToPlay++;
            }
        }