private void HandleGameSceneLoaded() { gameEnvHider.FindEnvironment(); gameEnvHider.HideObjectsForPlatform(currentPlatform); EnvironmentArranger.RearrangeEnvironment(); TubeLightManager.CreateAdditionalLightSwitchControllers(); }
private void SceneManagerOnActiveSceneChanged(Scene arg0, Scene arg1) { envHider.FindEnvironment(); envHider.HideObjectsForPlatform(currentPlatform); if (SceneManager.GetActiveScene().name == "GameCore") { EnvironmentArranger.RearrangeEnvironment(); TubeLightManager.CreateAdditionalLightSwitchControllers(); TubeLightManager.UpdateEventTubeLightList(); } Camera.main.cullingMask &= ~(1 << CameraVisibilityManager.OnlyInThirdPerson); Camera.main.cullingMask |= 1 << CameraVisibilityManager.OnlyInHeadset; }
/// <summary> /// Handles active scene change. Hides Objects as required for the current platform /// </summary> /// <param name="arg0">Previous Active Scene</param> /// <param name="arg1">New Active Scene</param> private void SceneManagerOnActiveSceneChanged(Scene arg0, Scene arg1) { if (arg1.name == "Menu") { PlatformUI.OnLoad(); } if (platforms.ElementAt(platformIndex) != null) { // Find environment parts after scene change envHider.FindEnvironment(); envHider.HideObjectsForPlatform(platforms.ElementAt(platformIndex)); } }
private void Start() { envHider = new EnvironmentHider(); matSwapper = new MaterialSwapper(); matSwapper.GetMaterials(); CreateAllPlatforms(); // Retrieve saved path from player prefs if it exists if (PlayerPrefs.HasKey("CustomPlatformPath")) { string savedPath = PlayerPrefs.GetString("CustomPlatformPath"); // Check if this path was loaded and update our platform index for (int i = 0; i < bundlePaths.Count; i++) { if (savedPath == bundlePaths.ElementAt(i)) { platformIndex = i; } } } PlatformUI.OnLoad(); if (platforms.ElementAt(platformIndex) != null) { // Find environment parts after scene change envHider.FindEnvironment(); envHider.HideObjectsForPlatform(platforms.ElementAt(platformIndex)); } }
private void Start() { platforms = new PlatformLoader().CreateAllPlatforms(transform); // Retrieve saved path from player prefs if it exists if (ModPrefs.HasKey(CustomFloorPlugin.PluginName, "CustomPlatformPath")) { string savedPath = ModPrefs.GetString(CustomFloorPlugin.PluginName, "CustomPlatformPath"); // Check if this path was loaded and update our platform index for (int i = 0; i < platforms.Length; i++) { if (savedPath == platforms[i].platName + platforms[i].platAuthor) { platformIndex = i; break; } } } EnvironmentArranger.arrangement = (EnvironmentArranger.Arrangement)ModPrefs.GetInt(CustomFloorPlugin.PluginName, "EnvironmentArrangement", 0, true); EnvironmentSceneOverrider.overrideMode = (EnvironmentSceneOverrider.EnvOverrideMode)ModPrefs.GetInt(CustomFloorPlugin.PluginName, "EnvironmentOverrideMode", 0, true); EnvironmentSceneOverrider.GetSceneInfos(); EnvironmentSceneOverrider.OverrideEnvironmentScene(); envHider = new EnvironmentHider(); envHider.showFeetOverride = ModPrefs.GetBool(CustomFloorPlugin.PluginName, "AlwaysShowFeet", false, true); envHider.FindEnvironment(); envHider.HideObjectsForPlatform(currentPlatform); currentPlatform.gameObject.SetActive(true); BSSceneManager.activeSceneChanged += SceneManagerOnActiveSceneChanged; PlatformUI.OnLoad(); }
/// <summary> /// Changes to a specific <see cref="CustomPlatform"/> /// </summary> /// <param name="platform">The <see cref="CustomPlatform"/> to change to</param> public async Task ChangeToPlatformAsync(CustomPlatform platform) { if (platform == _platformManager.ActivePlatform) { return; } _cancellationTokenSource?.Cancel(); _cancellationTokenSource?.Dispose(); _cancellationTokenSource = new CancellationTokenSource(); CancellationToken token = _cancellationTokenSource.Token; DestroyPlatform(_platformManager.ActivePlatform.gameObject); if (platform == _platformManager.RandomPlatform) { platform = RandomPlatform; } _platformManager.ActivePlatform = platform; if (platform.isDescriptor) { platform = await ReplaceDescriptorAsync(platform); } if (token.IsCancellationRequested) { return; } _platformManager.ActivePlatform = platform; _siraLog.Debug($"Switching to {platform.name}"); _environmentHider.HideObjectsForPlatform(platform); SpawnPlatform(platform.gameObject); }
/// <summary> /// Changes to a specific <see cref="CustomPlatform"/> /// </summary> /// <param name="index">The index of the new <see cref="CustomPlatform"/> in the list <see cref="AllPlatforms"/></param> internal static void InternalChangeToPlatform(int index) { Log("Switching to " + AllPlatforms[index].name); if (!GetCurrentEnvironment().name.StartsWith("Menu", STR_INV)) { platformSpawned = true; } activePlatform?.gameObject.SetActive(false); NotifyPlatform(activePlatform, NotifyType.Disable); DestroyCustomObjects(); if (index != 0) { activePlatform = AllPlatforms[index % AllPlatforms.Count]; activePlatform.gameObject.SetActive(true); AddManagers(activePlatform); NotifyPlatform(activePlatform, NotifyType.Enable); SpawnCustomObjects(); EnvironmentArranger.RearrangeEnvironment(); MaterialSwapper.ReplaceMaterials(activePlatform.gameObject); } else { activePlatform = null; } EnvironmentHider.HideObjectsForPlatform(AllPlatforms[index]); }
private void HandleGameSceneLoaded() { TubeLightManager.FixUnregisterErrors(); gameEnvHider.FindEnvironment(); gameEnvHider.HideObjectsForPlatform(currentPlatform); EnvironmentArranger.RearrangeEnvironment(); TubeLightManager.CreateAdditionalLightSwitchControllers(); //SceneDumper.DumpScene(); TubeLightManager.UpdateEventTubeLightList(); }
/// <summary> /// Changes to a specific <see cref="CustomPlatform"/> /// </summary> /// <param name="platform">The <see cref="CustomPlatform"/> to change to</param> public async Task ChangeToPlatformAsync(CustomPlatform platform) { try { if (platform == _platformManager.ActivePlatform) { return; } _cancellationTokenSource?.Cancel(); _cancellationTokenSource?.Dispose(); _cancellationTokenSource = new CancellationTokenSource(); CancellationToken cancellationToken = _cancellationTokenSource.Token; DestroyCustomObjects(); _platformManager.ActivePlatform.gameObject.SetActive(false); _platformManager.ActivePlatform = platform; if (platform.isDescriptor) { CustomPlatform?newPlatform = await _platformManager.CreatePlatformAsync(platform.fullPath); if (newPlatform is not null) { _platformManager.AllPlatforms.Replace(platform, newPlatform); UnityEngine.Object.Destroy(platform.gameObject); } cancellationToken.ThrowIfCancellationRequested(); if (newPlatform is null) { _ = ChangeToPlatformAsync(_platformManager.DefaultPlatform); return; } _platformManager.ActivePlatform = newPlatform; } _siraLog.Info($"Switching to {_platformManager.ActivePlatform.name}"); _environmentHider.HideObjectsForPlatform(_platformManager.ActivePlatform); _platformManager.ActivePlatform.gameObject.SetActive(true); SpawnCustomObjects(); } catch (OperationCanceledException) { } }
internal void SetPlatform(int index) { // Hide current Platform currentPlatform.gameObject.SetActive(false); // Increment index platformIndex = index % platforms.Length; // Save path into ModPrefs Plugin.config.SetString("Data", "CustomPlatformPath", currentPlatform.platName + currentPlatform.platAuthor); // Show new platform currentPlatform.gameObject.SetActive(true); // Hide environment for new platform EnvHider.HideObjectsForPlatform(currentPlatform); // Update lightSwitchEvent TubeLight references TubeLightManager.UpdateEventTubeLightList(); }
/// <summary> /// Changes to a specific <see cref="CustomPlatform"/> /// </summary> /// <param name="index">The index of the new <see cref="CustomPlatform"/> in the list <see cref="AllPlatforms"/></param> internal void ChangeToPlatform(int index) { if (!_platformManager.allPlatforms[index].requirements.All(x => _platformManager.allPluginNames.Contains(x))) { _siraLog.Warning("Missing requirement for platform " + _platformManager.allPlatforms[index].name); ChangeToPlatform(0); return; } _siraLog.Info("Switching to " + _platformManager.allPlatforms[index].name); _platformManager.activePlatform?.gameObject.SetActive(false); DestroyCustomObjects(); _platformManager.activePlatform = _platformManager.allPlatforms[index]; SharedCoroutineStarter.instance.StartCoroutine(WaitAndSpawn()); IEnumerator WaitAndSpawn() { if (_platformManager.activePlatform.transform.childCount == 0 && index != 0) { yield return(SharedCoroutineStarter.instance.StartCoroutine(_platformLoader.LoadFromFileAsync(_platformManager.activePlatform.fullPath, _platformManager.HandlePlatformLoaded))); } yield return(new WaitForEndOfFrame()); if (index != 0) { _platformManager.activePlatform.gameObject.SetActive(true); AddManagers(_platformManager.activePlatform); SpawnCustomObjects(); } else { _platformManager.activePlatform = null; } _hider.HideObjectsForPlatform(_platformManager.allPlatforms[index]); } }
private void HandleMenuSceneLoaded() { menuEnvHider.HideObjectsForPlatform(currentPlatform); }
public void HideEnvironmentForCurrentPlatform() { envHider.HideObjectsForPlatform(platforms.ElementAt(platformIndex)); }
private void SceneManagerOnActiveSceneChanged(Scene arg0, Scene arg1) { envHider.FindEnvironment(); envHider.HideObjectsForPlatform(currentPlatform); }