diff --git a/NewHorizons/Builder/Props/RaftBuilder.cs b/NewHorizons/Builder/Props/RaftBuilder.cs index 2e8c6a15..aaddb41a 100644 --- a/NewHorizons/Builder/Props/RaftBuilder.cs +++ b/NewHorizons/Builder/Props/RaftBuilder.cs @@ -43,8 +43,9 @@ namespace NewHorizons.Builder.Props // Detectors var fluidDetector = raftObject.transform.Find("Detector_Raft").GetComponent(); - var waterVolume = planetGO.GetComponentInChildren(); + var waterVolume = (FluidVolume)planetGO.GetComponentInChildren() ?? planetGO.GetComponentInChildren(); fluidDetector._alignmentFluid = waterVolume; + fluidDetector._buoyancy.checkAgainstWaves = true; // Light sensors foreach (var lightSensor in raftObject.GetComponentsInChildren()) diff --git a/NewHorizons/Patches/RaftPatches.cs b/NewHorizons/Patches/RaftPatches.cs index fea55497..dc0814d8 100644 --- a/NewHorizons/Patches/RaftPatches.cs +++ b/NewHorizons/Patches/RaftPatches.cs @@ -84,7 +84,7 @@ namespace NewHorizons.Patches [HarmonyPatch(typeof(AlignToSurfaceFluidDetector), "ManagedFixedUpdate")] public static bool AlignToSurfaceFluidDetector_ManagedFixedUpdate(AlignToSurfaceFluidDetector __instance) { - if (!(__instance._alignmentFluid is NHFluidVolume)) return true; + if (!(__instance._alignmentFluid is NHFluidVolume || __instance._alignmentFluid is SphereOceanFluidVolume)) return true; // Mostly copy pasting from the AlignWithDirection class AsymmetricFluidDetector_ManagedFixedUpdate(__instance); @@ -104,5 +104,14 @@ namespace NewHorizons.Patches return false; } + + [HarmonyPrefix] + [HarmonyPatch(typeof(FluidVolume), "GetDepthAtPosition")] + public static bool SphereOceanFluidVolume_GetDepthAtPosition(SphereOceanFluidVolume __instance, ref float __result, Vector3 worldPosition) + { + Vector3 vector = __instance.transform.InverseTransformPoint(worldPosition); + __result = Mathf.Sqrt(vector.x * vector.x + vector.z * vector.z + vector.y * vector.y) - __instance._radius; + return false; + } } }