private async void OnSceneLoaded(EventArgs arg) { FSceneLoadedEventArg eventArg = (FSceneLoadedEventArg)arg; CLevelConfiguration metadata = FindObjectOfType <CLevelConfiguration>(); if (metadata == null) { FLog.Warning(CLASS_TYPE.Name, $"Cannot find scene metadata `S{eventArg.Scene.name}`"); } else if (metadata.GameMode == null) { FLog.Warning(CLASS_TYPE.Name, $"GameMode is not sat for this level."); } else { _currentGameMode = Activator.CreateInstance(metadata.GameMode.Type) as IGameMode; await _currentGameMode?.PreInitializeAsync(); await _currentGameMode?.InitializeAsync(); await _currentGameMode?.BeginPlayAsync(); FEventManager.Publish(FEventManager.ON_GAME_MODE_LOADED); } }
private void PublishFakeSceneLoadedEvent() { FEventManager.Publish(FEventManager.ON_SCENE_LOADED, new SceneManager.FSceneLoadedEventArg(SceneManager.FSceneManager.ActiveScene, UnityEngine.SceneManagement.LoadSceneMode.Single)); }
private static void SceneLoaded(Scene scene, LoadSceneMode loadSceneMode) { FEventManager.Publish(FEventManager.ON_SCENE_LOADED, new FSceneLoadedEventArg(scene, loadSceneMode)); }
private static void SceneUnloaded(Scene scene) { FEventManager.Publish(FEventManager.ON_SCENE_UNLOADED, new FSceneUnloadedEventArg(scene)); }
private static void ActiveSceneChanged(Scene replacedScene, Scene nextScene) { FEventManager.Publish(FEventManager.ON_ACTIVE_SCENE_CHANGED, new FActiveSceneChangedEventArg(replacedScene, nextScene)); }