internal void IndoorSceneLoaded(IndoorSceneRoot root) { Int32 num = m_indoorScenes.FindIndex((IndoorCache a) => a.Key == root.SceneName); if (num == -1) { String text = "IndoorScene name is invalid '" + root.SceneName + "'"; foreach (IndoorCache indoorCache in m_indoorScenes) { if (indoorCache.IsLoading) { text = text + "\n expected '" + indoorCache.Key + "' ?"; } } Debug.LogError(text); Destroy(root.gameObject); return; } root.transform.position = new Vector3(0f, -2000f, 0f); root.gameObject.SetActive(false); m_indoorScenes[num] = new IndoorCache(root.SceneName, root, false); if (m_lastRequest == root.SceneName) { LoadingScene = null; m_loads = null; if (FinishLoadIndoorScene != null) { FinishLoadIndoorScene(this, new FinishLoadIndoorSceneEventArgs(root)); } } else { RequestIndoorScene(m_lastRequest); } }
public void HandleChangeConversation(Object p_sender, EventArgs p_args) { IngameController main = IngameController.Instance; if (String.IsNullOrEmpty(m_currentIndoorScene) || m_indoorModel == null) { HandleBeginConversation(main); } else { m_popupActive = false; m_InConversation = true; m_currentIndoorScene = LegacyLogic.Instance.ConversationManager.IndoorScene; if (String.IsNullOrEmpty(m_currentIndoorScene)) { main.Minimap.gameObject.SetActive(false); main.HUDControl.gameObject.SetActive(false); main.DangerSense.gameObject.SetActive(false); m_finishIndoorSceneLoad = true; m_finishFade = true; m_conversation.FinishFade = true; m_conversation.gameObject.SetActive(true); m_conversation.Init(); m_container.Init(); } else { m_finishIndoorSceneLoad = false; m_finishFade = false; m_conversation.FinishFade = false; m_conversation.gameObject.SetActive(false); OverlayManager overlay = IngameController.Instance.Overlay; IndoorSceneRoot currentModel = m_indoorModel; EventHandler callback = delegate(Object sender, EventArgs e) { main.Minimap.gameObject.SetActive(false); main.HUDControl.gameObject.SetActive(false); main.DangerSense.gameObject.SetActive(false); IndoorSceneLoader.Instance.RequestIndoorScene(m_currentIndoorScene); m_finishFade = true; m_conversation.FinishFade = true; m_conversation.gameObject.SetActive(true); FXMainCamera instance = FXMainCamera.Instance; instance.SwitchCamera(null); if (currentModel != null) { currentModel.gameObject.SetActive(false); } m_conversation.Init(); m_container.Init(); }; overlay.FadeFrontTo(1f, 1f, callback); } } }
protected override void Update() { if (m_SceneRoot == null) { m_SceneRoot = transform.root.GetComponentInChildren <IndoorSceneRoot>(); } else { base.Update(); } }
public void RequestIndoorScene(String sceneName) { m_lastRequest = sceneName; if (LoadingScene != null) { return; } Int32 num = m_indoorScenes.FindIndex((IndoorCache a) => a.Key == sceneName); IndoorCache indoorCache = default(IndoorCache); if (num >= 0) { indoorCache = m_indoorScenes[num]; } else if (m_indoorScenes.Count >= 1) { IndoorSceneRoot rootScene = m_indoorScenes[0].RootScene; Helper.DestroyGO <IndoorSceneRoot>(ref rootScene); Resources.UnloadUnusedAssets(); m_indoorScenes.RemoveAt(0); } if (!indoorCache.IsLoading && indoorCache.RootScene == null) { if (num >= 0) { m_indoorScenes[num] = new IndoorCache(sceneName, null, true); } else { m_indoorScenes.Add(new IndoorCache(sceneName, null, true)); } SceneRequest sceneRequest = null; if (LegacyLogic.Instance.ModController.InModMode) { sceneRequest = AssetBundleManagers.Instance.Mod.RequestScene(sceneName, 10, new SceneRequestCallback(OnSceneBundleLoaded), null); } if (sceneRequest == null) { sceneRequest = AssetBundleManagers.Instance.Main.RequestScene(sceneName, 10, new SceneRequestCallback(OnSceneBundleLoaded), null); } if (sceneRequest == null) { Debug.LogError("Fail load indoor scene '" + sceneName + "'"); } LoadingScene = sceneName; } else if (FinishLoadIndoorScene != null && indoorCache.RootScene != null) { FinishLoadIndoorScene(this, new FinishLoadIndoorSceneEventArgs(indoorCache.RootScene)); } }
public void HandleEndConversation(IngameController main) { IndoorSceneRoot currentModel = m_indoorModel; if (!String.IsNullOrEmpty(m_currentIndoorScene) && !m_conversation.m_skipFade) { OverlayManager overlay = IngameController.Instance.Overlay; EventHandler callback = delegate(Object sender, EventArgs e) { main.Minimap.gameObject.SetActive(true); main.HUDControl.gameObject.SetActive(true); main.DangerSense.gameObject.SetActive(true); m_conversation.gameObject.SetActive(false); FXMainCamera instance2 = FXMainCamera.Instance; instance2.SwitchCamera(null); if (currentModel != null) { currentModel.gameObject.SetActive(false); AudioManager.Instance.RequestPlayAudioID(currentModel.ExitAudioID, 0, -1f, instance2.transform, 1f, 0f, 0f, null); } LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.INDOOR_SCENE_CLOSED, EventArgs.Empty); overlay.FadeFrontTo(0f); }; overlay.FadeFrontTo(1f, 1f, callback); } else { main.Minimap.gameObject.SetActive(true); main.HUDControl.gameObject.SetActive(true); main.DangerSense.gameObject.SetActive(true); m_conversation.gameObject.SetActive(false); FXMainCamera instance = FXMainCamera.Instance; instance.SwitchCamera(null); if (currentModel != null && currentModel.gameObject.activeSelf) { currentModel.gameObject.SetActive(false); AudioManager.Instance.RequestPlayAudioID(currentModel.ExitAudioID, 0, -1f, instance.transform, 1f, 0f, 0f, null); } LegacyLogic.Instance.EventManager.InvokeEvent(null, EEventType.INDOOR_SCENE_CLOSED, EventArgs.Empty); } m_conversation.m_skipFade = false; m_currentIndoorScene = null; m_InConversation = false; }
private void OnIndoorSceneLoaded(Object p_sender, FinishLoadIndoorSceneEventArgs p_args) { m_indoorSceneRoot = p_args.Root; SetMode(Mode.INDOOR); }
private void HandleFinishLoadIndoorScene(Object p_sender, FinishLoadIndoorSceneEventArgs p_e) { m_indoorModel = p_e.Root; m_finishIndoorSceneLoad = true; CheckOverlayTransition(); }
public FinishLoadIndoorSceneEventArgs(IndoorSceneRoot root) { Root = root; }
public IndoorCache(String p_key, IndoorSceneRoot p_root, Boolean p_isLoading) { Key = p_key; RootScene = p_root; IsLoading = p_isLoading; }