diff --git a/NewHorizons/Builder/Body/WaterBuilder.cs b/NewHorizons/Builder/Body/WaterBuilder.cs index ae72bce6e..9c6f68ed1 100644 --- a/NewHorizons/Builder/Body/WaterBuilder.cs +++ b/NewHorizons/Builder/Body/WaterBuilder.cs @@ -39,7 +39,7 @@ internal static void InitPrefabs() if (_oceanAmbientLight == null) _oceanAmbientLight = SearchUtilities.Find("Ocean_GD").GetComponent()._ambientLight.gameObject.InstantiateInactive().Rename("OceanAmbientLight").DontDestroyOnLoad(); } - public static void Make(GameObject planetGO, Sector sector, OWRigidbody rb, WaterModule module) + public static RadialFluidVolume Make(GameObject planetGO, Sector sector, OWRigidbody rb, WaterModule module) { InitPrefabs(); @@ -148,6 +148,8 @@ public static void Make(GameObject planetGO, Sector sector, OWRigidbody rb, Wate waterGO.transform.position = planetGO.transform.position; waterGO.SetActive(true); + + return fluidVolume; } } } diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index a3d4e9589..a09c83d8b 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -312,6 +312,12 @@ private static void FixComponent(Component component, GameObject planetGO) if (probeVisuals != null) probeVisuals.gameObject.SetActive(true); } + if (component is DarkMatterSubmergeController submergeController) + { + var water = planetGO.GetComponentsInChildren().FirstOrDefault(x => x._fluidType == FluidVolume.Type.WATER); + submergeController._fluidDetector?.SetDetectableFluid(water); + } + // Fix anglerfish speed on orbiting planets if (component is AnglerfishController angler) { diff --git a/NewHorizons/Builder/Volumes/HazardVolumeBuilder.cs b/NewHorizons/Builder/Volumes/HazardVolumeBuilder.cs index 06fc721d8..6561460e1 100644 --- a/NewHorizons/Builder/Volumes/HazardVolumeBuilder.cs +++ b/NewHorizons/Builder/Volumes/HazardVolumeBuilder.cs @@ -62,6 +62,24 @@ public static HazardVolume Make(GameObject planetGO, Sector sector, OWRigidbody var visorFrostEffectVolume = go.AddComponent(); visorFrostEffectVolume._frostRate = 0.5f; visorFrostEffectVolume._maxFrost = 0.91f; + + var water = planetGO.GetComponentsInChildren().FirstOrDefault(x => x._fluidType == FluidVolume.Type.WATER); + if (water != null) + { + var submerge = go.AddComponent(); + submerge._activeWhenSubmerged = false; + submerge._effectVolumes = new EffectVolume[] { hazardVolume, visorFrostEffectVolume }; + // THERE ARE NO RENDERERS??? RUH ROH!!! + + var detectorGO = new GameObject("ConstantFluidDetector"); + detectorGO.transform.parent = go.transform; + detectorGO.transform.localPosition = Vector3.zero; + detectorGO.layer = LayerMask.NameToLayer("BasicDetector"); + var detector = detectorGO.AddComponent(); + detector.SetDetectableFluid(water); + + submerge._fluidDetector = detector; + } } else if (info.type == VolumesModule.HazardVolumeInfo.HazardType.ELECTRICITY) {