private void InitStorm() { Dungeon m_dungeonPrefab = DungeonDatabase.GetOrLoadByName("finalscenario_guide"); DungeonFlow dungeonFlowPrefab = m_dungeonPrefab.PatternSettings.flows[0]; PrototypeDungeonRoom GuidePastRoom = dungeonFlowPrefab.AllNodes[0].overrideExactRoom; GameObject GuidePastRoomObject = GuidePastRoom.placedObjects[0].nonenemyBehaviour.gameObject; GameObject m_RainPrefab = GuidePastRoomObject.transform.Find("Rain").gameObject; m_ThunderStorm = Instantiate(m_RainPrefab); m_ThunderStorm.name = "ChaosRain"; ThunderstormController stormController = m_ThunderStorm.GetComponent <ThunderstormController>(); ParticleSystem m_CachedParticleSystem = stormController.RainSystemTransform.GetComponent <ParticleSystem>(); if (useCustomIntensity) { BraveUtility.SetEmissionRate(m_CachedParticleSystem, RainIntensity); } m_cachedEmissionRate = m_CachedParticleSystem.emission.rate.constant; stormController.DecayVertical = false; stormController.DoLighting = false; m_ChaosLightning = new GameObject("ChaosLightning"); m_ChaosLightning.AddComponent <ChaosWeatherController>(); ChaosWeatherController LightningComponent = m_ChaosLightning.GetComponent <ChaosWeatherController>(); LightningComponent.LightningRenderers = stormController.LightningRenderers; dungeonFlowPrefab = null; m_dungeonPrefab = null; }
private IEnumerator ToggleRainFX(PlayerController player, float cachedRate) { if (GameObject.Find("Base_ResourcefulRat(Clone)") == null) { yield break; } if (GameObject.Find("ChaosRain") == null) { yield break; } if (GameObject.Find("ChaosLightning") == null) { yield break; } ThunderstormController stormController = GameObject.Find("ChaosRain").GetComponent <ThunderstormController>(); ParticleSystem m_CachedParticleSystem = stormController.RainSystemTransform.GetComponent <ParticleSystem>(); ChaosWeatherController LightningController = GameObject.Find("ChaosLightning").GetComponent <ChaosWeatherController>(); bool Active = true; if (ChaosLists.InvalidRatFloorRainRooms.Contains(player.CurrentRoom.GetRoomName()) | player.CurrentRoom.IsShop | player.CurrentRoom.area.PrototypeRoomCategory == PrototypeDungeonRoom.RoomCategory.BOSS) { Active = false; } if (!Active) { if (!stormController.enabled && !LightningController.isActive) { yield break; } AkSoundEngine.PostEvent("Stop_ENV_rain_loop_01", stormController.gameObject); BraveUtility.SetEmissionRate(m_CachedParticleSystem, 0f); yield return(new WaitForSeconds(2f)); stormController.enabled = false; LightningController.isActive = false; yield return(null); yield break; } else { if (stormController.enabled && LightningController.isActive) { yield break; } BraveUtility.SetEmissionRate(m_CachedParticleSystem, cachedRate); stormController.enabled = true; LightningController.isActive = true; yield return(null); yield break; } }
public static void AddRainStormToFloor(string dungeon, float RainIntensity = 1f, bool useCustomIntensity = false) { if (string.IsNullOrEmpty(dungeon)) { return; } GameObject dungeonObject = GameObject.Find(dungeon); if (dungeonObject == null) { dungeonObject = GameObject.Find(dungeon + "(Clone)"); } if (dungeonObject == null) { return; } Dungeon m_dungeonPrefab = DungeonDatabase.GetOrLoadByName("finalscenario_guide"); DungeonFlow dungeonFlowPrefab = m_dungeonPrefab.PatternSettings.flows[0]; PrototypeDungeonRoom GuidePastRoom = dungeonFlowPrefab.AllNodes[0].overrideExactRoom; GameObject GuidePastRoomObject = GuidePastRoom.placedObjects[0].nonenemyBehaviour.gameObject; GameObject m_RainPrefab = GuidePastRoomObject.transform.Find("Rain").gameObject; GameObject m_ThunderStorm = Instantiate(m_RainPrefab); m_ThunderStorm.name = "ChaosRain"; ThunderstormController stormController = m_ThunderStorm.GetComponent <ThunderstormController>(); ParticleSystem m_CachedParticleSystem = stormController.RainSystemTransform.GetComponent <ParticleSystem>(); if (useCustomIntensity) { BraveUtility.SetEmissionRate(m_CachedParticleSystem, RainIntensity); } stormController.DecayVertical = false; stormController.DoLighting = false; GameObject m_ChaosLightning = new GameObject("ChaosLightning"); m_ChaosLightning.name = "ChaosLightning"; m_ChaosLightning.AddComponent <ChaosWeatherController>(); ChaosWeatherController LightningComponent = m_ChaosLightning.GetComponent <ChaosWeatherController>(); LightningComponent.LightningRenderers = stormController.LightningRenderers; dungeonFlowPrefab = null; m_dungeonPrefab = null; return; }
private IEnumerator ToggleRainFx(bool Active) { if (m_ChaosLightning == null | m_ThunderStorm == null) { yield break; } if (!Active) { m_StormIsActive = false; ChaosWeatherController CurrentWeather = m_ChaosLightning.GetComponent <ChaosWeatherController>(); CurrentWeather.isActive = false; ThunderstormController m_ThunderStormComponent = m_ThunderStorm.GetComponent <ThunderstormController>(); AkSoundEngine.PostEvent("Stop_ENV_rain_loop_01", m_ThunderStormComponent.gameObject); ParticleSystem rainParticles = m_ThunderStormComponent.RainSystemTransform.GetComponent <ParticleSystem>(); BraveUtility.SetEmissionRate(rainParticles, 0f); yield return(new WaitForSeconds(2f)); m_ThunderStormComponent.enabled = false; m_ThunderStorm.SetActive(false); yield return(null); yield break; } else { m_ThunderStorm.SetActive(true); yield return(null); ThunderstormController m_ThunderStormComponent = m_ThunderStorm.GetComponent <ThunderstormController>(); m_ThunderStormComponent.enabled = true; ParticleSystem rainParticles = m_ThunderStormComponent.RainSystemTransform.GetComponent <ParticleSystem>(); BraveUtility.SetEmissionRate(rainParticles, m_cachedEmissionRate); ChaosWeatherController CurrentWeather = m_ChaosLightning.GetComponent <ChaosWeatherController>(); CurrentWeather.isActive = true; m_StormIsActive = true; yield break; } }